JAVA 교육/Servlet
2019/09/30 loginForm.jsp (mvc) test
조별하
2019. 9. 30. 13:20
1. loginForm.jsp
평소 만드는 로그인 폼을 간단하게 만들어 보도록 하자 단, action으로 값을 보내주지 않는다
2. loginForm.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 LoginForm extends HttpServlet {
//결과확인
//http://localhost:8090/mvcTest/login.do
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// method= get 방식 요청
// 페이지 이동
//1)
//http://localhost:8090/mvcTest/login.do
//resp.sendRedirect("control/loginForm.jsp");
//2)
String view="control/loginForm.jsp";
RequestDispatcher rd=req.getRequestDispatcher(view);
rd.forward(req, resp);
}//doGet() end
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// method= post 방식 요청
}//dopost end
}//class end
1) loginForm.java 생성시
"extends HttpServlet" 를 붙여서 HttpServlet 의 부모클래스를 상속받는다
2) HttpServlet 추상메소드 override
override 버튼으로 HttpServlet 에서의 doGet() 과 doPost() 를 오버라이드 해준다
3) resp.sendRedirect("control/loginForm.jsp")
를 입력해 주어 위에서 생성해 주었던 loginForm.jsp로 페이지 이동을 해준다
4) web.jsp 호출 servlet 등록
<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>
http://localhost:8090/mvcTest/login.do
5) RequestDispatcher rd=req.getRequestDispatcher(view);
rd.forward(req, resp);
를 입력해 주어 위에서 생성해 주었던 loginForm.jsp로 페이지 이동을 해준다
String view="control/loginForm.jsp";
RequestDispatcher rd=req.getRequestDispatcher(view);
rd.forward(req, resp);
http://localhost:8090/mvcTest/login.do
▶ url주소 다르게 나타난다.
3. loginForm.jsp
다른방식으로, method 를 post 방식으로 바꾸고, action을 loginproc.do 로 설정을 해 준다
1) loginproc.do servlet 등록
<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>
2) loginProc.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 LoginProc extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// method= post 방식 요청
//<form method=post action=loginproc.do>
try{
//1) 한글 인코딩
resp.setCharacterEncoding("UTF-8");
//2) 사용자가 요청한 정보를 변수에 옮겨담기
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.println("<!DOCTYPE html>");
out.println(" <html>");
out.println(" <head>");
out.println(" <meta charset='UTF-8'>");
out.println(" <title>로그인 결과</title>");
out.println(" </head>");
out.println(" <body>");
out.println(" 아이디 : <strong>"+uid+"<strong>");
out.println(" <hr>");
out.println(" 비번 : <strong>"+upw+"<strong>");
out.println("</body>");
out.println("</html>");
out.close();//자원반납
}catch(Exception e){System.out.println("요청실패"+e);}
}//doPost() end
}//class end
1. doPost 를 오버라이드로 만들어 준다
2. resp.setCharacterEncoding("UTF-8"); 인코딩
LoginResult.jsp
package net.control;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginProc extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
process(req,resp);
}//doGet() end
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
process(req,resp);
}//doPost() end
protected void process(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try{
req.setCharacterEncoding("UTF-8");
String uid=req.getParameter("uid").trim();
String upw=req.getParameter("upw").trim();
//공유공간: request, session, application
//session 객체선언
HttpSession session=req.getSession();
//application 객체선언
ServletContext applicatioin=req.getServletContext();
if(uid.equals("WinterNight")&& upw.equals("1234")){
//로그인이 성공
req.setAttribute("r_uid", uid);
req.setAttribute("r_upw", upw);
session.setAttribute("s_uid",uid);
session.setAttribute("s_upw",upw);
applicatioin.setAttribute("a_uid", uid);
applicatioin.setAttribute("a_upw", upw);
req.setAttribute("msg", "로그인성공~!~!");
req.setAttribute("img", "<img src='control/face-glasses.png'>");
}else{
//로그인 실패
req.setAttribute("r_uid", "guest");
req.setAttribute("r_upw", "guest");
session.setAttribute("s_uid","guest");
session.setAttribute("s_upw","guest");
applicatioin.setAttribute("a_uid", "guest");
applicatioin.setAttribute("a_upw", "guest");
req.setAttribute("msg", "로그인실패~!~!");
req.setAttribute("img", "<img src='control/face-surprise.png'>");
}//if end
//뷰페이지 이동
String view="control/loginResult.jsp";//위에서 받은 uid,upw 값을 loginResult.jsp로 이동을 하는데 그 값을 공유하는 공간이 필요하다
RequestDispatcher rd=req.getRequestDispatcher(view);
rd.forward(req,resp);
}catch(Exception e){System.out.println("요청 실패"+e);}
}//process() end
}//class end
loginProc.jsp 에서 전달받은 값을 이용할 loginResult.jsp를 만들어 주자