카테고리 없음

230130

Berylly 2023. 1. 30. 18:30

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");}}