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("&lt;");

break;


case 62: // '>'

                            strBuff.append("&gt;");

                            break;


case 38: // '&'

                            strBuff.append("&amp;");

                            break;


                            case 34: // '"'

                            strBuff.append("&quot;");

                            break;


                            case 39: // '\''

                            strBuff.append("&apos;");

                            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("&lt;");

                   break;


                  case 62: // '>'

                   strBuff.append("&gt;");

                   break;


              case 38: // '&'

               strBuff.append("&amp;");

               break;


          case 34: // '"'

          strBuff.append("&quot;");

          break;


          case 39: // '\''

          strBuff.append("&apos;");

          break;


          default:

          strBuff.append(c);

          break;

}

}


value = strBuff.toString();

return value;

}

}

블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,