일정 부분만 처리하고 다른 서블릿에 넘겨주는 작업.
1) WAS는 요청을 추상화한 객체 HttpServletRequest와 응답에 필요한 부분을 추상화한 객체 HttpServletResponse를 만들어내고 서블릿이 실행될 때 서비스 메서드가 실행될 때 각각의 인자 값에 넣어서 보내준다.
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
2) 값을 맡겨놓는다.
int diceValue = (int)(Math.random() * 6) + 1;
request.setAttribute("dice", diceValue);
//값을
3) requestDispatehcer 객체는 request 객체한테 얻어올 수 있다. 포워드할 경로는 반드시 /로 시작. 같은 웹 어플리케이션 안에서만 가능.
RequestDispatcher requestDispatehcer = request.getRequestDispatcher("/next");
requestDispatehcer.forward(request, response);
4) forword 시 반드시 request, response 객체를 넘겨야 결과를 얻어올 수 있다.
requestDispatehcer.forward(request, response);
5) forward 받은 servlet2
int dice = (Integer)request.getAttribute("dice");
// 맡길 때는 object 타입으로 맡긴다. 꺼낼 때는 형변환.
out.println("dice : " + dice);
for(int i = 0; i < dice; i++) {
out.print("<br>hello");
}
out.println("</body>");
out.println("</html>");
JSTL(JSP Standard Tag Library)은 JSP페이지에서 조건문 처리, 반복문 처리 등을 html tag 형태로 작성할 수 있게 도와준다.
1) http://tomcat.apache.org/download-taglibs.cgi
위 사이트에서 3가지 jar 파일을 다운로드 한 후 WEB-INT/lib 폴더에 복사를 한다.
Impl: taglibs-standard-impl-1.2.5.jar (pgp, sha512)
Spec: taglibs-standard-spec-1.2.5.jar (pgp, sha512)
EL: taglibs-standard-jstlel-1.2.5.jar (pgp, sha512)
2) jsp 페이지에 설정을 알려줘야 함. taglib 지시자를 넣어줘야 함.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
set (변수 설정) : 지정한 영역에 변수를 생성한다.
<c:set var="valName" scope="session" value="someValue"/>
//태그 사이 값이 없을 땐 단일 태그로 사용 가능.
remove(변수 제거)
<c:remove var="valName" scope="request"/>
if
<c:if test = 조건>
...
...
</c:if>
//test 조건이 true이면 몸체 내용을 실행한다.
choose
<c:choose>
<c:when test = "조건1">
...
</c:when>
<c:when test = "조건2">
...
</c:when>
<c:otherwise> //앞의 조건들이 만족하지 않을 때 실행
...
</c:otherwise>
</c:choose>
forEach : 배열 및 collect에 저장된 요소를 차례대로 처리한다.
<c:forEach var="변수" items="아이템" [begin="시작번호"] [end="끝번호"]>
...
${변수}
...
</c:forEach>
item이 Map인 경우 변수에 저장되는 객체는 Map.Entry이다. 따라서, 변수값을 사용할 때는 ${변수.key}와 ${변수.value}를 사용해서 맵에 저장된 항목의 <키.값> 매핑에 접근할 수 있다.키.값>