1.注入bean
@Bean
@Qualifier(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_BEAN_NAME)
public DispatcherServlet dispatcherServlet() {return new com.admin.core.conf.MyDispatcherServlet();
}
2.重写doDispatch方法,
/*** 重写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);}}
1.这里可以根据需求对request进行操作,request默认是不能操作的
package com.admin.core.conf;import com.ibeetl.admin.core.util.AESUtil;import javax.servlet.*;
import javax.servlet.http.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.Principal;
import java.util.*;/*** 自定义HttpServletRequest,统一处理请求数据解密问题*/
public class MyRequest implements HttpServletRequest {public HttpServletRequest originalRequest;public Map decryptParameterMap;public MyRequest(HttpServletRequest request) {originalRequest = request;decryptParameterMap = new HashMap();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);if (("null").equals(value)) {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() { return originalRequest.getScheme();}@Overridepublic String getServerName() { return originalRequest.getServerName();}@Overridepublic int getServerPort() { return originalRequest.getServerPort();}@Overridepublic BufferedReader getReader()throws IOException { return originalRequest.getReader();}@Overridepublic String getRemoteAddr() { return originalRequest.getRemoteAddr();}@Overridepublic String getRemoteHost() {return originalRequest.getRemoteHost();}@Overridepublic void setAttribute(String s, Object obj) {originalRequest.setAttribute(s, obj);}@Overridepublic void removeAttribute(String s) { originalRequest.removeAttribute(s);}@Overridepublic Locale getLocale() {return originalRequest.getLocale();}@Overridepublic Enumeration<Locale> getLocales() {return originalRequest.getLocales();}@Overridepublic boolean isSecure() {return originalRequest.isSecure();}@Overridepublic RequestDispatcher getRequestDispatcher(String s) {return originalRequest.getRequestDispatcher(s);}@Overridepublic String getRealPath(String s) {return originalRequest.getRealPath(s);}@Overridepublic int getRemotePort() {return originalRequest.getRemotePort();}@Overridepublic String getLocalName() {return originalRequest.getLocalName();}@Overridepublic String getLocalAddr() {return originalRequest.getLocalAddr();}@Overridepublic int getLocalPort() {return originalRequest.getLocalPort();}@Overridepublic ServletContext getServletContext() {return originalRequest.getServletContext();}@Overridepublic AsyncContext startAsync()throws IllegalStateException {return 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() {return originalRequest.getAsyncContext();}@Overridepublic DispatcherType getDispatcherType() {return originalRequest.getDispatcherType();}@Overridepublic boolean authenticate(HttpServletResponse httpservletresponse)throws IOException, ServletException {return originalRequest.authenticate(httpservletresponse);}@Overridepublic String changeSessionId() {return originalRequest.changeSessionId();}@Overridepublic String getAuthType() {return originalRequest.getAuthType();}@Overridepublic String getContextPath() {return originalRequest.getContextPath();}@Overridepublic Cookie[] getCookies() {return originalRequest.getCookies();}@Overridepublic long getDateHeader(String s) {return originalRequest.getDateHeader(s);}@Overridepublic String getHeader(String s) {return originalRequest.getHeader(s);}@Overridepublic Enumeration getHeaderNames() {return originalRequest.getHeaderNames();}@Overridepublic Enumeration getHeaders(String s) {return originalRequest.getHeaders(s);}@Overridepublic int getIntHeader(String s) {return originalRequest.getIntHeader(s);}@Overridepublic String getMethod() {return originalRequest.getMethod();}@Overridepublic Part getPart(String s)throws IOException, ServletException { return originalRequest.getPart(s);}@Overridepublic Collection<Part> getParts() throws IOException, ServletException {return originalRequest.getParts();}@Overridepublic String getPathInfo() {return originalRequest.getPathInfo();}@Overridepublic String getPathTranslated() {return originalRequest.getPathTranslated();}@Overridepublic String getQueryString() {return originalRequest.getQueryString();}@Overridepublic String getRemoteUser() {return originalRequest.getRemoteUser();}@Overridepublic String getRequestURI() {return originalRequest.getRequestURI();}@Overridepublic StringBuffer getRequestURL() {return originalRequest.getRequestURL();}@Overridepublic String getRequestedSessionId() {return originalRequest.getRequestedSessionId();}@Overridepublic String getServletPath() {return originalRequest.getServletPath();}@Overridepublic HttpSession getSession() {return originalRequest.getSession();}@Overridepublic HttpSession getSession(boolean flag) {return originalRequest.getSession(flag);}@Overridepublic Principal getUserPrincipal() {return originalRequest.getUserPrincipal();}@Overridepublic boolean isRequestedSessionIdFromCookie() {return originalRequest.isRequestedSessionIdFromCookie();}@Overridepublic boolean isRequestedSessionIdFromURL() {return originalRequest.isRequestedSessionIdFromURL();}@Overridepublic boolean isRequestedSessionIdFromUrl() {return originalRequest.isRequestedSessionIdFromUrl();}@Overridepublic boolean isRequestedSessionIdValid() {return originalRequest.isRequestedSessionIdValid();}@Overridepublic boolean isUserInRole(String s) {return 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);}
}