pro09/WebContent/login3.html
<!DOCTYPE html>
<html>
<head>…</head>
<body>
<form name="frmLogin" method="post" action="login" encType="UTF-8">
아이디 :<input type="text" name="user_id"><br>
비밀번호:<input type="password" name="user_pwd"><br>
<input type="submit" value="로그인">
<input type="reset" value="초기화">
</form>
</body>
</html>
pro09/src/sec05/ex01/LoginServlet.java
package sec06.ex01;
...
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doHandle(request, response); }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doHandle(request, response); }
private void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String user_id = request.getParameter("user_id");
String user_pwd = request.getParameter("user_pwd");
/* MemberVO 객체 생성 및 ID/PW 정보 설정 */
MemberVO memberVO = new MemberVO();
memberVO.setId(user_id);
memberVO.setPwd(user_pwd);
MemberDAO dao = new MemberDAO();
boolean result = dao.isExisted(memberVO);
if(result) {
/* 세션에 정보 저장 */
HttpSession session = request.getSession();
session.setAttribute("isLogon", true);
session.setAttribute("login.id", user_id);
session.setAttribute("login.pwd", user_pwd);
out.print("<html><body>");
out.print("안녕하세요 " + user_id + "님!!!<br>");
out.print("<a href='show'>회원정보 보기</a>");
out.print("</body></html>");
} else {
out.print("<html><body><center>회원 아이디가 틀립니다.");
out.print("<a href='login3.html'> 다시 로그인하기</a>");
out.print("</body></html>");
}
}
}
pro09/src/sec05/ex01/MemberDAO.java
package sec05.ex01;
...
public class MemberDAO {
private DataSource dataFactory;
public MemberDAO() {
try {
Context ctx=new InitialContext();
Context envContext = (Context) ctx.lookup("java:/comp/env");
dataFactory = (DataSource) envContext.lookup("jdbc/oracle");
} catch(Exception e) { e.printStackTrace(); }
}
...
public boolean isExisted(MemberVO memberVO) {
boolean result = false;
String id = memberVO.getId();
String pwd = memberVO.getPwd();
try {
con = dataFactory.getConnection();
/* 쿼리 구성 및 실행 */
String query = "SELECT DECODE(COUNT(*), 1, 'true', 'false') AS RESULT FROM t_member"; //1개면 true, 아니면 false
query += " WHERE id=? and pwd=?";
pstmt = con.prepareStatement(query);
pstmt.setString(1, id);
pstmt.setString(2, pwd);
ResultSet rs = pstmt.executeQuery();
/* 결과 출력 */
rs.next(); //커서를 첫번째 레코드에 위치
result = Boolean.parseBoolean(rs.getString("result"));
System.out.println("result=" + result);
} catch (Exception e) { e.printStackTrace(); }
return result;
}
}
pro09/src/sec05/ex01/ShowMember.java
package sec05.ex01;
...
@WebServlet("/show")
public class ShowMember extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String id ="", pwd="" ;
Boolean isLogon = false;
HttpSession session = request.getSession(false);
if(session != null) {
isLogon = (Boolean) session.getAttribute("isLogon");
if(isLogon) { // 세션 O & 로그인 O
id = (String) session.getAttribute("login.id");
pwd = (String) session.getAttribute("login.pwd");
/* 출력 */
out.print("<html><body>");
out.print("아이디: " + id+"<br>");
out.print("비밀번호: " + pwd+"<br>");
out.print("</body></html>");
}
else { response.sendRedirect("login3.html"); } // 세션 O & 로그인 X
} else { response.sendRedirect("login3.html"); } // 세션 X
}
}
*자바 웹을 다루는 기술