T.김동식
url 매핑
@WebServlet("/first/test")
@WebServlet("/first/*")
//@WebServlet("*.do")
@WebServlet("/*")
쿠키를 차단해서 사용자의 브라우저에서 데이터들을 기억하지 못한다면 어떻할까?
세션을 이용한 바인딩.
binding 바인딩
컴퓨터 프로그래밍에서 각종 값들이 확정되어 더 이상 변경할 수 없는 구속(bind) 상태가 되는 것
set
@WebServlet("/set")
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
String ctxMesg = "context에 바인딩됩니다.";
String sesMesg = "sesstion에 바인딩됩니다.";
String reqMesg = "request에 바인딩됩니다.";
ServletContext ctx = getServletContext();
HttpSession sess = request.getSession();
ctx.setAttribute("context", ctxMesg);
sess.setAttribute("session", sesMesg);
request.setAttribute("request", reqMesg);
out.print("바인딩을 수행합니다");
get
@WebServlet("/get")
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
ServletContext ctx = getServletContext();
HttpSession sess = request.getSession();
String ctxMesg = (String)ctx.getAttribute("context");
String sesMesg = (String)sess.getAttribute("session");
String reqMesg = (String)request.getAttribute("request");
out.print("<html><body>");
out.print(ctxMesg + "<br>");
out.print(sesMesg+ "<br>");
out.print(reqMesg+ "<br>");
out.print("</body></html>");
Servlet + Oracle sql
로그인정보 확인하기
Oracle sql에서 테스트
MemberDAO세팅, 데이터베이스와 연결하여 데이터가 있는지 확인한다.
public boolean isExisted(MemberVO memberVO) {
//결과 기본값 세팅
boolean result = false;
//getId, getPwd를 저장한다.
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 where id=? and pwd =?";
//query sql 문을 전달해 prepareStatement객체생성
pstmt = con.prepareStatement(query);
pstmt.setString(1, id); //id 값 대입
pstmt.setString(2, pwd); //pwd 값 대입
// ResultSet select의 결과를 저장하는 객체
ResultSet rs = pstmt.executeQuery(); //SELECT 구문을 수행할 때 사용되는 함수
rs.next(); //'true'
} catch (Exception e) {e.printStackTrace();}return result;}
LoginServlet 정보가있고없고에따라 결과를 달리 보여주고,
세션 세팅 + 데이터 값을 부여한다.
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);
}
protected 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 memberVO = new MemberVO();
memberVO.setId(user_id);
memberVO.setPwd(user_pwd);
MemberDAO dao = new MemberDAO();
boolean result = dao.isExisted(memberVO); //result, 존재여부를 저장한다 true, false
if(result) {//true일때 실행된다.
HttpSession session = request.getSession(); //세션에 값을 저장한다. true, id, pw
session.setAttribute("isLogon", true);
session.setAttribute("login.id", user_id);
session.setAttribute("login.pwd", user_pwd);
out.print("<html><body>안녕하세요"+user_id+"님<br><a href='show'>회원정보 보기</a></body></html>");
}else {
out.print("<html><body>회원 아이디가 틀립니다."+user_id+"/"+user_pwd+"님<br><a href='login3.html'>다시 로그인하기</a></body></html>");
}
}
ShowMember 세팅
reguest.getSession(false) 세션이 없을 경우 null를 반환한다.
세션에서 값을 get해 화면에 출력한다.
@WebServlet("/show")
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 create is falseand the request has no valid HttpSession,this method returns null.
if(session != null) {
isLogon=(Boolean) session.getAttribute("isLogon");
if(isLogon==true) {
id = (String) session.getAttribute("login.id");
pwd = (String) session.getAttribute("login.pwd");
out.print("<html><body>");
out.print("아이디: " + id + "<br> 비밀번호: " + pwd + "</body></html>");
System.out.println(isLogon);
}else {response.sendRedirect("login3.html");}}else {response.sendRedirect("login3.html");}}