KOSTA : 클라우드 네이티브 애플리케이션 개발 전문가 양성과정

05/22 27일차 JSP,Servlet,DAO를 이용한 페이지 구현

람대리 2024. 5. 22. 10:12
728x90

1. Login 화면 구현하기

- login.jsp

 <form method="post" action="<%=request.getContextPath()%>/Controller">
     <input type="hidden" name="pagecode" value="p002">
     <div class="form-floating mb-3">
       <input class="form-control" name="user_id" id="inputEmail" type="email" placeholder="name@example.com" />
       <label for="inputEmail">Email address</label>
     </div>
     <div class="form-floating mb-3">
        <input class="form-control" name="user_pw" id="inputPassword" type="password" placeholder="Password" />
        <label for="inputPassword">Password</label>
     </div>
     <div class="form-check mb-3">
        <input class="form-check-input" id="inputRememberPassword" type="checkbox" value="" />
        <label class="form-check-label" for="inputRememberPassword">Remember Password</label>
     </div>
     <div class="d-flex align-items-center justify-content-between mt-4 mb-0">
         <a class="small" href="password.html">Forgot Password?</a>
         <a class="btn btn-primary">Login</a>
         <input type="submit" value="login">
     </div>                        
 </form>

 

 

- Controller.java

public class hello extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public hello() {
        super();
        // TODO Auto-generated constructor stub
    }
    
    /**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("==get요청==");
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    	if(pageCode.equals("p002")) {
			String userId = request.getParameter("user_id");
			String userPw = request.getParameter("user_pw");
			System.out.println(userId);
			boolean loginCheck = dao.userLogin(pageCode, pageCode);
			if(loginCheck) {
				response.sendRedirect("index.html");
			}else {
				response.sendRedirect("500.html");
			}
		}
    }

 

 

-UserDAO.java

class UserDAO{
	public boolean userLogin(Stinrg userId, String userPw){
    	
        boolean loginCheck = false;
        
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        
        MyOracleConnection moc = new MyOracleConnection();
        conn = moc.getConnection();
        String sql = "SELECT * FROM user_jdbc WHERE id = ? and pw = ?";
        
        
        try{
        	pstmt = conn.PreparedStatement(sql);
            pstmt.setString(1,userId);
            pstmt.setString(2,userPw);
            rs = pstmt.executeQuery();
            if(rs.next){
            	loginCheck = true;
            }
        } catch(SQLException e){
        	e.printStackTrace();
        }finally{
        	moc.close(rs,pstmt,conn);
        }
        
        return loginCheck;
    }
}

 

- login.jsp에서 로그인 정보를 입력합니다.

- form태그에서 설정하여 post 방식으로 Controller라고 맵핑한 클래스로 로그인 정보들을 보냅니다.

- Contoller에서 String 형식으로 정보들을 받고, 받은 정보들을 토대로 dao 메서드를 수행합니다.

- dao 메서드 수행값으로 true가 나오면 index 화면으로 이동하고, false가 나온다면 500화면이 출력되게 합니다.

 

 

2. 회원가입 화면 구현하기

 

-register.jsp

<form method="post" action="<%=request.getContextPath()%>/Controller">
  	<input type="hidden" name="pagecode" value="p001">
     	<div class="row mb-3">
          <div class="col-md-6">
              <div class="form-floating mb-3 mb-md-0">
                  <input class="form-control" name="user_id" id="inputFirstName" type="text" placeholder="Enter your ID" />
                  <label for="inputFirstName">ID</label>
              </div>
          </div>
          <div class="col-md-6">
              <div class="form-floating">
                  <input class="form-control" name="user_name" id="inputLastName" type="text" placeholder="Enter your name" />
                  <label for="inputLastName">name</label>
              </div>
          </div>
      </div>
      <div class="form-floating mb-3">
          <input class="form-control" name="email" id="inputEmail" type="email" placeholder="name@example.com" />
          <label for="inputEmail">Email address</label>
      </div>
      <div class="row mb-3">
          <div class="col-md-6">
              <div class="form-floating mb-3 mb-md-0">
                  <input class="form-control" name="password" id="inputPassword" type="password" placeholder="Create a password" />
                  <label for="inputPassword">Password</label>
              </div>
          </div>
          <div class="col-md-6">
              <div class="form-floating mb-3 mb-md-0">
                  <input class="form-control" id="inputPasswordConfirm" type="password" placeholder="Confirm password" />
                  <label for="inputPasswordConfirm">Confirm Password</label>
              </div>
          </div>
      </div>
      <div class="mt-4 mb-0">
          <div class="d-grid"><a class="btn btn-primary btn-block" href="login.html">Create Account</a></div>
      </div>
      <input type="submit" value="register">
  </form>

 

- Controller.java

@webServlet("/Controller")
public class Controller extends HttpServlet{
	private static final long serialVersionUID = 1L;
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response){
    	
    }
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response){
    	String pageCode = request.getParameter("pagecode");
        if(pageCode.equal("p002")){
        	String id = request.getParameter("user_id");
            String pw = request.getParameter("user_pw");
            UserDAO udao = new UserDAO();
            boolean loginCheck = udao.loginCheck(id,pw);
            if(loginCheck){
            	request.sendRedirect("index.html");
            }else{
            	request.sendRedirect("500.html");
            }
        }
    }
}

 

- UserDAO.java

class UserDAO{
	public boolean loginCheck(String userId, String userPw){
    	
        boolean loginCheck = false;
        
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        
        MyOracleConnection moc = new MyOracleConnection();
        conn = mon.getConnection();
        String sql = "SELECT * FROM USER_JDBC WHERE id = ? AND pw =?";
        
        try{
        	pstmt = conn.PreparedStatment(sql);
            pstmt.setString(1,userId);
            pstmt.setString(2,userPw);
            rs = psmt.executeQuery();
            if(rs.next()){
            	loginCheck = true;
            }
        } finally{
        	moc.close(rs,pstmt,conn);
        }
        
        return loginCheck;
    }
}

 

 

3.정리 

- servlet을 활용한 MVC 패턴

 

- JSP는 view단
- Servlet은 Controller라고 합니다.
- DAO는 비즈니스 로직이라고 표현합니다. 모델이라고도 합니다.

 

* <a> 태그를 활용한 서버 전달방법

만약 <a href="/board?kkk=1&aaa=5"></a>라면
서블릿에서 request.getParmeter("kkk") request.getPatameter("aaa")로 받을 수 있습니다.

 

- Spring mvc

- spring으로 바뀌게 된다면 Servlet은 디스패쳐 서블릿으로 바뀝니다.
- 서블릿은 콘트롤러로 바뀝니다.