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은 디스패쳐 서블릿으로 바뀝니다.
- 서블릿은 콘트롤러로 바뀝니다.