package com.core.conf;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.DispatcherServlet;/*** 重写doDispatch方法,该方法是所有请求得总入口,把request转到自定义的类里面**/
public class MyDispatcherServlet extends DispatcherServlet
{private static final long serialVersionUID = 1L;@Overrideprotected void doDispatch(HttpServletRequest request, HttpServletResponse response)throws Exception{super.doDispatch(new MyRequest(request), response);}}
package com.core.conf;import java.io.BufferedReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.Principal;
import java.util.*;import javax.servlet.AsyncContext;
import javax.servlet.DispatcherType;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpUpgradeHandler;
import javax.servlet.http.Part;
import com.ibeetl.admin.core.util.AESUtil;
import org.springframework.util.StringUtils;/*** 自定义HttpServletRequest,统一处理请求数据解密问题**/
public class MyRequest implements HttpServletRequest
{public HttpServletRequest originalRequest;public Map decryptParameterMap;public MyRequest(HttpServletRequest request){originalRequest = request;decryptParameterMap = new HashMap();AESUtil aesUtil = new AESUtil();try{request.setCharacterEncoding("UTF-8");}catch (UnsupportedEncodingException e){e.printStackTrace();}Map<String, String[]> properties = request.getParameterMap();Map<String, String> returnMap = new HashMap<String, String>();Iterator<Map.Entry<String, String[]>> entries = properties.entrySet().iterator();Map.Entry<String, String[]> entry;String key = "";String value = "";while (entries.hasNext()){entry = (Map.Entry<String, String[]>)entries.next();key = (String)entry.getKey();Object valueObj = entry.getValue();if (null == valueObj){value = "";}else if (valueObj instanceof String[]){String[] values = (String[])valueObj;for (int i = 0; i < values.length; i++ ){value = values[i] + ",";}value = value.substring(0, value.length() - 1);//在这里给参数解密value = aesUtil.decrypt(value);}else{value = valueObj.toString();}returnMap.put(key, value);}decryptParameterMap.putAll(returnMap);}@Overridepublic Object getAttribute(String s){return originalRequest.getAttribute(s);}@Overridepublic Enumeration getAttributeNames(){return originalRequest.getAttributeNames();}@Overridepublic String getCharacterEncoding(){return originalRequest.getCharacterEncoding();}@Overridepublic void setCharacterEncoding(String s) throws UnsupportedEncodingException{originalRequest.setCharacterEncoding(s);}@Overridepublic int getContentLength(){return originalRequest.getContentLength();}@Overridepublic long getContentLengthLong(){return originalRequest.getContentLengthLong();}@Overridepublic String getContentType(){return originalRequest.getContentType();}@Overridepublic ServletInputStream getInputStream()throws IOException{return originalRequest.getInputStream();}@Overridepublic String getParameter(String s){// 返回解密后的参数return String.valueOf(decryptParameterMap.get(s));}@Overridepublic Enumeration getParameterNames(){// 这里是通过实体类注入参数return Collections.enumeration(decryptParameterMap.keySet());}@Overridepublic String[] getParameterValues(String s){// 这里是注入参数Object o = decryptParameterMap.get(s);if (o == null){return null;}else{return new String[] {String.valueOf(o)};}}@Overridepublic Map getParameterMap(){return originalRequest.getParameterMap();}@Overridepublic String getProtocol(){return originalRequest.getProtocol();}@Overridepublic String getScheme(){// TODO Auto-generated method stubreturn originalRequest.getScheme();}@Overridepublic String getServerName(){// TODO Auto-generated method stubreturn originalRequest.getServerName();}@Overridepublic int getServerPort(){// TODO Auto-generated method stubreturn originalRequest.getServerPort();}@Overridepublic BufferedReader getReader()throws IOException{// TODO Auto-generated method stubreturn originalRequest.getReader();}@Overridepublic String getRemoteAddr(){// TODO Auto-generated method stubreturn originalRequest.getRemoteAddr();}@Overridepublic String getRemoteHost(){// TODO Auto-generated method stubreturn originalRequest.getRemoteHost();}@Overridepublic void setAttribute(String s, Object obj){originalRequest.setAttribute(s, obj);}@Overridepublic void removeAttribute(String s){// TODO Auto-generated method stuboriginalRequest.removeAttribute(s);}@Overridepublic Locale getLocale(){// TODO Auto-generated method stubreturn originalRequest.getLocale();}@Overridepublic Enumeration<Locale> getLocales(){// TODO Auto-generated method stubreturn originalRequest.getLocales();}@Overridepublic boolean isSecure(){// TODO Auto-generated method stubreturn originalRequest.isSecure();}@Overridepublic RequestDispatcher getRequestDispatcher(String s){// TODO Auto-generated method stubreturn originalRequest.getRequestDispatcher(s);}@Overridepublic String getRealPath(String s){// TODO Auto-generated method stubreturn originalRequest.getRealPath(s);}@Overridepublic int getRemotePort(){// TODO Auto-generated method stubreturn originalRequest.getRemotePort();}@Overridepublic String getLocalName(){// TODO Auto-generated method stubreturn originalRequest.getLocalName();}@Overridepublic String getLocalAddr(){// TODO Auto-generated method stubreturn originalRequest.getLocalAddr();}@Overridepublic int getLocalPort(){// TODO Auto-generated method stubreturn originalRequest.getLocalPort();}@Overridepublic ServletContext getServletContext(){// TODO Auto-generated method stubreturn originalRequest.getServletContext();}@Overridepublic AsyncContext startAsync()throws IllegalStateException{// TODO Auto-generated method stubreturn originalRequest.startAsync();}@Overridepublic AsyncContext startAsync(ServletRequest servletrequest, ServletResponse servletresponse)throws IllegalStateException{return originalRequest.startAsync(servletrequest, servletresponse);}@Overridepublic boolean isAsyncStarted(){return originalRequest.isAsyncStarted();}@Overridepublic boolean isAsyncSupported(){return originalRequest.isAsyncSupported();}@Overridepublic AsyncContext getAsyncContext(){// TODO Auto-generated method stubreturn originalRequest.getAsyncContext();}@Overridepublic DispatcherType getDispatcherType(){// TODO Auto-generated method stubreturn originalRequest.getDispatcherType();}@Overridepublic boolean authenticate(HttpServletResponse httpservletresponse)throws IOException, ServletException{// TODO Auto-generated method stubreturn originalRequest.authenticate(httpservletresponse);}@Overridepublic String changeSessionId(){// TODO Auto-generated method stubreturn originalRequest.changeSessionId();}@Overridepublic String getAuthType(){// TODO Auto-generated method stubreturn originalRequest.getAuthType();}@Overridepublic String getContextPath(){// TODO Auto-generated method stubreturn originalRequest.getContextPath();}@Overridepublic Cookie[] getCookies(){// TODO Auto-generated method stubreturn originalRequest.getCookies();}@Overridepublic long getDateHeader(String s){// TODO Auto-generated method stubreturn originalRequest.getDateHeader(s);}@Overridepublic String getHeader(String s){// TODO Auto-generated method stubreturn originalRequest.getHeader(s);}@Overridepublic Enumeration getHeaderNames(){// TODO Auto-generated method stubreturn originalRequest.getHeaderNames();}@Overridepublic Enumeration getHeaders(String s){// TODO Auto-generated method stubreturn originalRequest.getHeaders(s);}@Overridepublic int getIntHeader(String s){// TODO Auto-generated method stubreturn originalRequest.getIntHeader(s);}@Overridepublic String getMethod(){return originalRequest.getMethod();}@Overridepublic Part getPart(String s)throws IOException, ServletException{// TODO Auto-generated method stubreturn originalRequest.getPart(s);}@Overridepublic Collection<Part> getParts()throws IOException, ServletException{// TODO Auto-generated method stubreturn originalRequest.getParts();}@Overridepublic String getPathInfo(){// TODO Auto-generated method stubreturn originalRequest.getPathInfo();}@Overridepublic String getPathTranslated(){// TODO Auto-generated method stubreturn originalRequest.getPathTranslated();}@Overridepublic String getQueryString(){// TODO Auto-generated method stubreturn originalRequest.getQueryString();}@Overridepublic String getRemoteUser(){// TODO Auto-generated method stubreturn originalRequest.getRemoteUser();}@Overridepublic String getRequestURI(){// TODO Auto-generated method stubreturn originalRequest.getRequestURI();}@Overridepublic StringBuffer getRequestURL(){// TODO Auto-generated method stubreturn originalRequest.getRequestURL();}@Overridepublic String getRequestedSessionId(){// TODO Auto-generated method stubreturn originalRequest.getRequestedSessionId();}@Overridepublic String getServletPath(){// TODO Auto-generated method stubreturn originalRequest.getServletPath();}@Overridepublic HttpSession getSession(){// TODO Auto-generated method stubreturn originalRequest.getSession();}@Overridepublic HttpSession getSession(boolean flag){// TODO Auto-generated method stubreturn originalRequest.getSession(flag);}@Overridepublic Principal getUserPrincipal(){// TODO Auto-generated method stubreturn originalRequest.getUserPrincipal();}@Overridepublic boolean isRequestedSessionIdFromCookie(){// TODO Auto-generated method stubreturn originalRequest.isRequestedSessionIdFromCookie();}@Overridepublic boolean isRequestedSessionIdFromURL(){// TODO Auto-generated method stubreturn originalRequest.isRequestedSessionIdFromURL();}@Overridepublic boolean isRequestedSessionIdFromUrl(){// TODO Auto-generated method stubreturn originalRequest.isRequestedSessionIdFromUrl();}@Overridepublic boolean isRequestedSessionIdValid(){// TODO Auto-generated method stubreturn originalRequest.isRequestedSessionIdValid();}@Overridepublic boolean isUserInRole(String s){// TODO Auto-generated method stubreturn originalRequest.isUserInRole(s);}@Overridepublic void login(String s, String s1)throws ServletException{originalRequest.login(s, s1);}@Overridepublic void logout()throws ServletException{originalRequest.logout();}@Overridepublic <T extends HttpUpgradeHandler> T upgrade(Class<T> class1)throws IOException, ServletException{return originalRequest.upgrade(class1);}}