JSP/Servlet – 응답 래퍼 클래스를 작성하는 방법
요청 래퍼 클래스가 HttpServletRequestWrapper 클래스를 상속했다면 응답 래퍼 클래스는 HttpServletResponseWrapper클래스를
상속해야 합니다. 그리고 응답 래퍼 클래스는 응답 객체(response 객체)를 포장해야 합니다.
한번 응답 래퍼 클래스를 작성하는 예제를 만들어 봅시다.
위와 같이 예제를 구성합니다.
CookieLowerCaseResponseWrapper.java
package myfilter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
public class CookieLowerCaseResponseWrapper extends HttpServletResponseWrapper{
private HttpServletResponse response;
public CookieLowerCaseResponseWrapper(HttpServletResponse response) {
super(response);//부모 클래스 생성자 호출
this.response = response;//응답 객체를 멤버 변수에 저장
}
//실제 래퍼 클래스가 하는 부분
//단순히 모든 글자를 소문자로 바꿔준다.
public void addCookie(Cookie cookie){
String value = cookie.getValue();
String newValue = value.toLowerCase();
cookie.setValue(newValue);
response.addCookie(cookie);
}
}
CookieLowerCaseFilter.java
package myfilter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
public class CookieLowerCaseFilter implements Filter{
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
CookieLowerCaseResponseWrapper responseWrapper =
new CookieLowerCaseResponseWrapper((HttpServletResponse)response);
chain.doFilter(request, responseWrapper);//응답 래퍼 클래스를 넘겨줌
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>ch11_jsp_wrapper2</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>cookie-lower-filter</filter-name>
<filter-class>myfilter.CookieLowerCaseFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>cookie-lower-filter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
</web-app>
test1.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
Cookie cookie = new Cookie("CART", "Lemon, Apple, Chocolate");
response.addCookie(cookie);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
쿠키가 저장되었습니다.
</body>
</html>
test2.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
쿠키 가져오기<BR>
CART = ${cookie.CART.value }
</body>
</html>
실행 화면
첫 번째 화면입니다. 쿠키가 정상적으로 저장되었다고 나오네요.
주소를 test2.jsp로 바꾸면 쿠키값을 가져오게됩니다.
하지만 응답 래퍼 클래스에 의해서 모든 값이 소문자로 변하게 됩니다.
'프로그래밍 > JSP Servlet' 카테고리의 다른 글
JSP/Servlet – 데이터베이스에 있는 데이터 수정하기 (0) | 2016.04.17 |
---|---|
JSP/Servlet – 데이터베이스에 데이터 입력하기 (0) | 2016.04.10 |
JSP/Servlet – 데이터베이스에서 값 읽어오기 (0) | 2016.04.10 |
JSP/Servlet – 응답 메시지의 본체 내용을 변형하는 래퍼 클래스 만들기 (0) | 2016.04.07 |
JSP/Servlet – 요청 래퍼 클래스 작성하기 (0) | 2016.03.21 |
JSP/Servlet – 필터 체인의 방향 바꾸기 (0) | 2016.03.17 |
JSP/Servlet - 필터 클래스의 init 메소드와 destroy 메소드 활용 (0) | 2016.03.16 |
JSP/Servlet – 필터(Filter)의 이해 (0) | 2016.03.14 |