Post
EN

[공유] 0809 Jsp & Servlet강의 (JSTL사용하기, 필터와래퍼)

[공유] 0809 Jsp & Servlet강의 (JSTL사용하기, 필터와래퍼)

Chapter 06. JSTL 사용하기

**1. 변수지원 과 **

  • WebContent -> tagLibrary폴더 -> productInfo.jsp생성

  • jsp 액션태그를 이용하여 productInfo.jsp로 포워딩


<1> jstlTest.jsp의Source

**<c:set var=”PRICE” value=”500”  scope=”request”/> <%–      jsp 액션태그를 이용하여 productInfo.jsp로 포워딩  –%>

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>

jstlTest.jsp

<2> productInfo.jsp의Source

<%@ page language=”java” contentType=”text/html; charset=UTF-8”     pageEncoding=”UTF-8”%> <%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %> <!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>

productInfo.jsp

= 상품 정보 =

상품 코드: ${ CODE }
상품 명 : ${NAME }
상품가격 : ${PRICE }
<%-- 상품 가격 지우기 --%>

= 상품 정보 =

상품 코드: ${ CODE }
상품 명 : ${NAME }
상품가격 : ${PRICE }
  • 실행 시


  1. 제어 흐름 if , forEach(반복문처리)**
  • productInfo.jsp , PersonServlet.java는 tagLibray에 personDogInput.jsp는 Java Resources의 디폴트 팩키지에 생성

<1> personDogInput.jsp의Source

<%@ page language=”java” contentType=”text/html; charset=UTF-8”**    pageEncoding=”UTF-8”%> <!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>

personDogInput.jsp <%-- 0. 사람 이름과 개 이름을 입력받아서         PersonServlet.java로 전송하는 폼 작성 --%>
사람 이름 :
개 이름 :          

<2> PersonServlet.java의Source

import java.io.IOException; import java.util.Vector;

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 PersonServlet extends HttpServlet {  private static final long serialVersionUID = 1L;

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   //personDogInput.jsp에서 전송한 값을   //각각 다음의 변수에 저장   String person = request.getParameter(“person”);   String dog = request.getParameter(“dog”);

  //1.문자열 배열 arr에 person과 dog을 저장   String[] arr = {person, dog };

  //2.Vector 객체 v를 생성하고  v에 person과 dog을 저장   Vector v = new Vector();   v.add(person);   v.add(dog);

  //3.request 객체의 속성에 arr과 v를 각각 저장   request.setAttribute(“arr”, arr);   request.setAttribute(“v”, v);

  //4./tagLibrary/personDog.jsp로 포워딩   RequestDispatcher dispatcher    = request.getRequestDispatcher(“tagLibrary/personDog.jsp”);   dispatcher.forward(request, response);  }

}


<3> productInfo.jsp의Source

<%@ page language=”java” contentType=”text/html; charset=UTF-8”     pageEncoding=”UTF-8”%> <%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %> <!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>

personDog.jsp [personDog.jsp]

EL을 이용하여 배열과 벡터의 값 출력

arr : ${arr }

v   : ${v}  


JSTL을 이용하여 배열의 값 출력 처리 arr :     ${temp }   
만약에 배열의 값이 Jack이 있으면 "개 주인!!"출력

    ${temp }  개주인!!   </body> </html> ------------------------------------------------------------------------------------------------------------- * 실행 시 ![](/assets/images/posts/60170204071/d64a5b406bf6.jpg) ------------------------------------------------------------------------------------------------------------- **2-1. 문** ------------------------------------------------------------------------------------------------------------- (1) jstlTest.jsp의 Source <%@ page language="java" contentType="text/html; charset=UTF-8"**    pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:set var="CODE" value="100"    scope="request"/> <c:set var="PRICE" value="500"  scope="request"/> <%--      jsp 액션태그를 이용하여 productInfo.jsp로 포워딩  --%> <%-- --%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> jstlTest.jsp


<%int result = 10/0; %> 10 나누기 0의 나눗셈의 결과는? <%=result %> catch 블록 같지만 try문 예외 발생
예외 메시지 : ${e.message }
catch문 ------------------------------------------------------------------------------------------------------------- * 실행 시 ![](/assets/images/posts/60170204071/27a8fb733212.jpg) **---------------------------------------------------------------------------------------------** **** **2-2. ** **** ------------------------------------------------------------------------------------------------------------- (1) jstlTest.jsp의 Source <%@ page language="java" contentType="text/html; charset=UTF-8"**    pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:set var="CODE" value="100"    scope="request"/> <c:set var="PRICE" value="500"  scope="request"/> <%--      jsp 액션태그를 이용하여 productInfo.jsp로 포워딩  --%> <%-- --%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> jstlTest.jsp
<%int result = 10/0; %> 10 나누기 0의 나눗셈의 결과는? <%=result %> catch 블록 같지만 try문 예외 발생
예외 메시지 : ${e.message } catch문

   ------------------------------------------------------------------------------------------------------------- (2) jstlOutput.jsp의 Source <%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> jstlOutput.jsp

= redirect를 이용한 색깔 바꾸기 =

------------------------------------------------------------------------------------------------------------- * 실행 시 ![](/assets/images/posts/60170204071/ae43621140d4.jpg) **** ------------------------------------------------------------------------------------------------------------- **** **2-3. ** * URL을 저장하기 위한 변수의 선언에 사용 ------------------------------------------------------------------------------------------------------------- (1) jstlTest.jsp의 Source <%@ page language="java" contentType="text/html; charset=UTF-8"**    pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:set var="CODE" value="100"    scope="request"/> <c:set var="PRICE" value="500"  scope="request"/> <%--      jsp 액션태그를 이용하여 productInfo.jsp로 포워딩  --%> <%-- --%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> jstlTest.jsp
<%int result = 10/0; %> 10 나누기 0의 나눗셈의 결과는? <%=result %> catch 블록 같지만 try문 예외 발생
예외 메시지 : ${e.message } catch문

<%--    --%> jslOutput.jsp ------------------------------------------------------------------------------------------------------------- (2) jstlOutput.jsp의 Source <%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> jstlOutput.jsp

= URL을 이용한 색깔 바꾸기 =

------------------------------------------------------------------------------------------------------------- * 실행 시 ![](/assets/images/posts/60170204071/8a12ccf83d15.jpg) * jslOutput.jsp 클릭시 ![](/assets/images/posts/60170204071/a93dd4f92343.jpg) **3. 커스텀액션만들기의 네임스페이스** * 네임스페이스(namespace) : 똑같은 이름의 충돌을 방지하기 위해서 만들어 놓는 이름의 공간 p.538 **4. 필터와 래퍼** (1) 필터란? 글자 그대로 여과기 역할을 하는 프로그램 , 자바 클래스 형태로 구현해야 하는데 ,      이 클래스를 필터 클래스(filter class)      웹 컨테이너는 이 클래스를 가지고 필터 객체를 만들고 , 그다음에 그 필터 객체를 초기화                          요청 , 응답               요청 , 응답 * [웹 브라우저] <----------> [필 터] <----------> [웹 컴포넌트] * javax.servlet.Filter 인터페이스를 구현해야 한다 (2) 래퍼(wrapper)란 웹 브라우저와 웹 컴포넌트 사이를 오가는 요청 메시지와 응답 메시지를 포장하는 프로그램 JSTL 사용법

This article is licensed under CC BY 4.0 by the author.