본문 바로가기

JSP

서블릿에서의 화면 이동

# 서블릿에서 화면 이동하기

일단 자바스크립트에서 화면이동은 다음과 같다.

location href="위치"

 

 그리고 JSP서블릿에서의 화면이동은 다음과 같다.

1. response.sendRedirect("a.jsp");        ( request값 유지안됨 )
2. request.getReqeustDispatcher("a.jsp").forward(request, response);      ( request값 유지됨 )

 

# 기본 예제

   간단하게 테스트해보자.

 

a.jsp ( web.xml에 서블릿매핑은 당연 되어 있어야한다. )

<form action="abc.do">
	<input type="text" name="id">
	<input type="text" name="pw">
	<input type="submit">
</form>

 

서블릿 ( doGet에서 아래 doPost메서드 호출하면됨 )

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


	// 첫번째방식
	//response.sendRedirect("a.jsp");

	// 두번째방식 - 이거는 <jsp:forward~>와 같은역활... url유지하고 request값유지한다
	request.setAttribute("aa", "bb");         // request값유지되는지확인하기위해
	request.getRequestDispatcher("a.jsp").forward(request, response);
                                                // request객체를 매개변수로 그대로 넘겨줌
}

 

 

# request값 유지하면서 화면이동

   핵심은 서블릿 화면이동시 request값 유지하기이다.

   아래 예제는 a.jsp에서 입력한 id, pw를 서블릿으로 전달 후 다시 request객체를 서블릿으로 부터 a.jsp

   로 전달하여 값을 유지하는 예제이다.

a.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>

<form action="abc.do">
	<input type="text" name="id">
	<input type="text" name="pw">
	<input type="submit">
</form>

<%=request.getParameter("id")%>

 

a.java 서블릿( web.xml에 url패턴은 abc.do )

    서블릿의 doGet메서드에 다음을 추가하면된다.

request.getRequestDispatcher("a.jsp").forward(request, response); 
                                             // request객체를 그대로 넘겨줌

 

 

# 예제 활용

   간단히 아이디와 비밀번호를 입력받아 서블릿에서 처리하는 간단한 예제를 보자.

   a.jsp

<form action="abc.do">
	<input type="text" name="id">
	<input type="text" name="pw">
	<input type="submit">
</form>

 

서블릿

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	String id=request.getParameter("id");
	String pw=request.getParameter("pw");

	String msg="실패";

      if(id.equals(pw)){
            msg="성공";
            request.setAttribute("msg",msg);     
            // request로 세팅한이유는 밑에 화면이동이 request값을 유지해주기때문
     }
      request.getRequestDispatcher("b.jsp").forward(request, response);
}

 

b.jsp

id : <%=request.getParameter("id")%>
pw : <%=request.getParameter("pw")%>

<%=request.getAttribute("msg")%>

 

이런식으로 jsp페이지와 서블릿간의 값 전달을 활용 할 수 있다.

 

 

'JSP' 카테고리의 다른 글

ajax( jQuery )  (0) 2019.03.28
(부록) java.lang.reflect  (0) 2019.03.28
JSP 액션태그 ( <jsp:useBean> )  (0) 2019.03.27
JSP 에러 페이지 설정  (0) 2019.03.27
JSP 경로 / 파일관련  (0) 2019.03.09