Filter를 이용한 request 파라미터 변경 방법
Filter를 이용한 request 파라미터 변경 방법.
package keis.user.comm;
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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import egovframework.rte.ptl.mvc.filter.HTMLTagFilterRequestWrapper;
public class MenuAuthFilter implements Filter{
protected Log log = LogFactory.getLog(this.getClass());
private FilterConfig config;
public MenuAuthFilter(){
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//new 생성자로 새로운 HttpServletRequest를 캐스팅 하여 request에 담습니다.
chain.doFilter(new HTMLTagFilterRequestWrapper((HttpServletRequest)request), response);
String uri = ((HttpServletRequest)request).getRequestURI();
//해당 세션의 사용자 권한을 가져옵니다.
//해당 권한에 해당 URL 패턴이 있는지 체크합니다.
}
@Override
public void dostroy(){
}
@Override
public void init(Filterconfig config) throws ServletException{
this.config = config;
}
}
javax.servlet.http.HttpServletRequestWrapper 를 상속받아 getParameterValues와 getParameter를 변경해 줌으로서
값을 변경하여 뿌려 줄수 있습니다.
실재로는 값을 변경하는 것이 아니라. 뿌릴때 변경하여 뿌려주는 것이입니다.
package egovframework.rte.ptl.mvc.filter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class HTMLTagFilterRequestWrapper extends HttpServletRequestWrapper{
public class HTMLTagFilterRequestWrapper extends HttpServletRequestWrapper{
super(request);
}
public String[] getParameterValues(String parameter){
String values[] = super.getParameterValues(parameter);
if(values == null)
return null;
for(int i = 0; i < values.length; i++)
if(values[i] != null){
StringBuffer strBuff = new StringBuffer();
for(int j = 0; j < values[i].length(); j++){
char c = values[i].charAt(j);
switch(c){
case 60: // '<'
strBuff.append("<");
break;
case 62: // '>'
strBuff.append(">");
break;
case 38: // '&'
strBuff.append("&");
break;
case 34: // '"'
strBuff.append(""");
break;
case 39: // '\''
strBuff.append("'");
break;
default:
strBuff.append(c);
break;
}
}
values[i] = strBuff.toString();
}else{
values[i] = null;
}
return values;
}
public String getParameter(String parameter){
String value = super.getParameter(parameter);
if(value == null)
return null;
StringBuffer strBuff = new StringBuffer();
for(int i = 0; i < value.length(); i++){
char c = value.charAt(i);
switch(c){
case 60: // '<'
strBuff.append("<");
break;
case 62: // '>'
strBuff.append(">");
break;
case 38: // '&'
strBuff.append("&");
break;
case 34: // '"'
strBuff.append(""");
break;
case 39: // '\''
strBuff.append("'");
break;
default:
strBuff.append(c);
break;
}
}
value = strBuff.toString();
return value;
}
}
'JAVA' 카테고리의 다른 글
[JAVA]ftp util (0) | 2017.11.24 |
---|---|
[JAVA]filter에서 파라미터 받기 (1) | 2017.11.23 |
[JAVA]Filter를 이용한 multipart/form-data 처리 및 파일 업로드 처리 (0) | 2017.11.23 |
[JAVA]filter 필터 (0) | 2017.11.23 |
[JAVA]filter 파일 업로드 -egov (0) | 2017.11.23 |