MVC 패턴
Backend : Spring Framework, Struts Framework
Frontend : AngularJS, vue, react ...
loginForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>loginForm.jsp</title>
</head>
<body>
<h3>* 회원 로그인 *</h3>
<form action="">
아이디 : <input type="text" name="uid"><br>
비번 : <input type="password" name="upw"><br>
<input type="submit" value="확인">
</form>
<!--
1) JSP 페이지 호출
http://localhost:9090/basic05_mvc/control/loginForm.jsp
2) 서블릿을 이용해서 JSP 페이지 호출
http://localhost:9090/basic05_mvc/control/login.do
-->
</body>
</html>
LoginForm.java
package net.control;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginForm extends HttpServlet {
//결과확인 http://localhost:9090/basic05_mvc/login.do
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//전송방식 method=get 요청
//페이지 이동
resp.sendRedirect("control/loginForm.jsp");
}//doGet() end
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//전송방식 method=post 요청
super.doPost(req, resp);
}//doPost() end
}//class end
web.xml
<!-- loginForm.jsp 호출하는 서블릿 등록 -->
<servlet>
<servlet-name>loginform</servlet-name>
<servlet-class>net.control.LoginForm</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginform</servlet-name>
<url-pattern>/login.do</url-pattern>
</servlet-mapping>
loginForm.jsp로 이동하도록 하였기 때문에 이전과 달리 url에 login.do가 아닌 jsp가 나온다.
2) 방식으로 하면 jsp가 아닌 login.do로 url이 나온다.
loginForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>loginForm.jsp</title>
</head>
<body>
<h3>* 회원 로그인 *</h3>
<form method="post" action="loginproc.do">
아이디 : <input type="text" name="uid"><br>
비번 : <input type="password" name="upw"><br>
<input type="submit" value="확인">
</form>
<!--
1) JSP 페이지 호출
http://localhost:9090/basic05_mvc/control/loginForm.jsp
2) 서블릿을 이용해서 JSP 페이지 호출
http://localhost:9090/basic05_mvc/control/login.do
-->
</body>
</html>
web.xml
<!-- action="loginproc.do" 서블릿 등록 -->
<servlet>
<servlet-name>loginproc</servlet-name>
<servlet-class>net.control.LoginProc</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginproc</servlet-name>
<url-pattern>/loginproc.do</url-pattern>
</servlet-mapping>
LoginProc.java
package net.control;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginProc extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//method=post방식이면 service() 함수가 doPost() 함수를 호출
try {
//1)한글 인코딩
req.setCharacterEncoding("utf-8");
//2)사용자가 요청한 정보를 req에서 가져와서 변수에 옮겨 담기
String uid = req.getParameter("uid").trim();
String upw = req.getParameter("upw").trim();
//3)요청한 사용자에게 응답
resp.setContentType("text/html; charset=UTF-8");
PrintWriter out = resp.getWriter();
out.print(" <!DOCTYPE html> ");
out.print(" <html> ");
out.print(" <head> ");
out.print(" <meta charset='UTF-8'> ");
out.print(" <title>환영합니다</title> ");
out.print(" </head> ");
out.print(" <body> ");
out.print(" <h3>* 로그인 결과 *</h3> ");
out.print(" 아이디 : <strong> " + uid + "</strong>");
out.print(" <hr> ");
out.print(" 비번 : <strong> " + upw + "</strong>");
out.print(" </body> ");
out.print(" </html> ");
} catch (Exception e) {
System.out.println("요청실패 : " + e);
}//end
}//doPost() end
}//class end
부모 페이지의 값을 자식 페이지에서도 공유하고 싶을 때 2번 방법을 사용해야 한다.
기존에 있던 LoginProc.java를 LoginProc_v1.java로 변경하고
LoginProc.java를 새로 만들어 작업한다.
LoginProc.java
package net.control;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginProc extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//method=post 방식이면 service() 함수가 doPost() 함수를 호출함
try {
req.setCharacterEncoding("utf-8");
String uid = req.getParameter("uid").trim();
String upw = req.getParameter("upw").trim();
if(uid.equals("itwill") && upw.equals("1234")) {
//로그인 성공했을 때
req.setAttribute("r_uid", uid);
req.setAttribute("r_upw", upw);
} else {
//로그인 실패했을 때
req.setAttribute("r_uid", "guest");
req.setAttribute("r_upw", "guest");
}//if end
//뷰페이지 이동
String view = "control/loginResult.jsp";
RequestDispatcher rd = req.getRequestDispatcher(view);
rd.forward(req, resp);
} catch (Exception e) {
System.out.println("요청실패 : " + e);
}//end
}//doPost() end
}//class end
[55일] jsp (23) - SCOPE
● [페이지 이동] 1) 2) location.href="" 3) 4) 5) response.sendRedirect("") 02_scopeTest.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> 02_..
ewok.tistory.com
loginResult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>loginResult.jsp</title>
</head>
<body>
<h3>* 회원 로그인 결과 *</h3>
1)JSP<br>
아이디 : <%=request.getAttribute("r_uid")%><br>
비번 : <%=request.getAttribute("r_upw")%><br>
<hr>
2)EL(표현언어)<br>
아이디 : ${requestScope.r_uid}<br>
비번 : ${requestScope.r_upw}<br>
<!-- Scope는 생략 가능하다 -->
아이디 : ${r_uid}<br> 비번 : ${r_upw}<br>
</body>
</html>
'웹개발 교육 > jsp' 카테고리의 다른 글
[65일] jsp (47) - MVC 패턴 (페이지 이동) (0) | 2022.10.28 |
---|---|
[64일] jsp (45) - HttpServlet (0) | 2022.10.27 |
[63일] jsp (44) - JSTL (0) | 2022.10.26 |
[63일] jsp (43) - EL (0) | 2022.10.26 |
[63일] jsp (42) - error (0) | 2022.10.26 |