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;
@Override
protected 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);
}
@Override
public Object getAttribute(String s) {
return originalRequest.getAttribute(s);
}
@Override
public Enumeration getAttributeNames() {
return originalRequest.getAttributeNames();
}
@Override
public String getCharacterEncoding() {
return originalRequest.getCharacterEncoding();
}
@Override
public void setCharacterEncoding(String s)
throws UnsupportedEncodingException {
originalRequest.setCharacterEncoding(s);
}
@Override
public int getContentLength() {
return originalRequest.getContentLength();
}
@Override
public long getContentLengthLong() {
return originalRequest.getContentLengthLong();
}
@Override
public String getContentType() {
return originalRequest.getContentType();
}
@Override
public ServletInputStream getInputStream()
throws IOException {
return originalRequest.getInputStream();
}
@Override
public String getParameter(String s) {
// 返回解密后的参数
return String.valueOf(decryptParameterMap.get(s));
}
@Override
public Enumeration getParameterNames() {
// 这里是通过实体类注入参数
return Collections.enumeration(decryptParameterMap.keySet());
}
@Override
public String[] getParameterValues(String s) {
// 这里是注入参数
Object o = decryptParameterMap.get(s);
if (o == null) {
return null;
} else {
return new String[]{String.valueOf(o)};
}
}
@Override
public Map getParameterMap() {
return originalRequest.getParameterMap();
}
@Override
public String getProtocol() {
return originalRequest.getProtocol();
}
@Override
public String getScheme() {
return originalRequest.getScheme();
}
@Override
public String getServerName() {
return originalRequest.getServerName();
}
@Override
public int getServerPort() {
return originalRequest.getServerPort();
}
@Override
public BufferedReader getReader()
throws IOException {
return originalRequest.getReader();
}
@Override
public String getRemoteAddr() {
return originalRequest.getRemoteAddr();
}
@Override
public String getRemoteHost() {
return originalRequest.getRemoteHost();
}
@Override
public void setAttribute(String s, Object obj) {
originalRequest.setAttribute(s, obj);
}
@Override
public void removeAttribute(String s) {
originalRequest.removeAttribute(s);
}
@Override
public Locale getLocale() {
return originalRequest.getLocale();
}
@Override
public Enumeration<Locale> getLocales() {
return originalRequest.getLocales();
}
@Override
public boolean isSecure() {
return originalRequest.isSecure();
}
@Override
public RequestDispatcher getRequestDispatcher(String s) {
return originalRequest.getRequestDispatcher(s);
}
@Override
public String getRealPath(String s) {
return originalRequest.getRealPath(s);
}
@Override
public int getRemotePort() {
return originalRequest.getRemotePort();
}
@Override
public String getLocalName() {
return originalRequest.getLocalName();
}
@Override
public String getLocalAddr() {
return originalRequest.getLocalAddr();
}
@Override
public int getLocalPort() {
return originalRequest.getLocalPort();
}
@Override
public ServletContext getServletContext() {
return originalRequest.getServletContext();
}
@Override
public AsyncContext startAsync()
throws IllegalStateException {
return originalRequest.startAsync();
}
@Override
public AsyncContext startAsync(ServletRequest servletrequest, ServletResponse servletresponse)
throws IllegalStateException {
return originalRequest.startAsync(servletrequest, servletresponse);
}
@Override
public boolean isAsyncStarted() {
return originalRequest.isAsyncStarted();
}
@Override
public boolean isAsyncSupported() {
return originalRequest.isAsyncSupported();
}
@Override
public AsyncContext getAsyncContext() {
return originalRequest.getAsyncContext();
}
@Override
public DispatcherType getDispatcherType() {
return originalRequest.getDispatcherType();
}
@Override
public boolean authenticate(HttpServletResponse httpservletresponse)
throws IOException, ServletException {
return originalRequest.authenticate(httpservletresponse);
}
@Override
public String changeSessionId() {
return originalRequest.changeSessionId();
}
@Override
public String getAuthType() {
return originalRequest.getAuthType();
}
@Override
public String getContextPath() {
return originalRequest.getContextPath();
}
@Override
public Cookie[] getCookies() {
return originalRequest.getCookies();
}
@Override
public long getDateHeader(String s) {
return originalRequest.getDateHeader(s);
}
@Override
public String getHeader(String s) {
return originalRequest.getHeader(s);
}
@Override
public Enumeration getHeaderNames() {
return originalRequest.getHeaderNames();
}
@Override
public Enumeration getHeaders(String s) {
return originalRequest.getHeaders(s);
}
@Override
public int getIntHeader(String s) {
return originalRequest.getIntHeader(s);
}
@Override
public String getMethod() {
return originalRequest.getMethod();
}
@Override
public Part getPart(String s)
throws IOException, ServletException {
return originalRequest.getPart(s);
}
@Override
public Collection<Part> getParts() throws IOException, ServletException {
return originalRequest.getParts();
}
@Override
public String getPathInfo() {
return originalRequest.getPathInfo();
}
@Override
public String getPathTranslated() {
return originalRequest.getPathTranslated();
}
@Override
public String getQueryString() {
return originalRequest.getQueryString();
}
@Override
public String getRemoteUser() {
return originalRequest.getRemoteUser();
}
@Override
public String getRequestURI() {
return originalRequest.getRequestURI();
}
@Override
public StringBuffer getRequestURL() {
return originalRequest.getRequestURL();
}
@Override
public String getRequestedSessionId() {
return originalRequest.getRequestedSessionId();
}
@Override
public String getServletPath() {
return originalRequest.getServletPath();
}
@Override
public HttpSession getSession() {
return originalRequest.getSession();
}
@Override
public HttpSession getSession(boolean flag) {
return originalRequest.getSession(flag);
}
@Override
public Principal getUserPrincipal() {
return originalRequest.getUserPrincipal();
}
@Override
public boolean isRequestedSessionIdFromCookie() {
return originalRequest.isRequestedSessionIdFromCookie();
}
@Override
public boolean isRequestedSessionIdFromURL() {
return originalRequest.isRequestedSessionIdFromURL();
}
@Override
public boolean isRequestedSessionIdFromUrl() {
return originalRequest.isRequestedSessionIdFromUrl();
}
@Override
public boolean isRequestedSessionIdValid() {
return originalRequest.isRequestedSessionIdValid();
}
@Override
public boolean isUserInRole(String s) {
return originalRequest.isUserInRole(s);
}
@Override
public void login(String s, String s1) throws ServletException {
originalRequest.login(s, s1);
}
@Override
public void logout() throws ServletException {
originalRequest.logout();
}
@Override
public <T extends HttpUpgradeHandler> T upgrade(Class<T> class1) throws IOException, ServletException {
return originalRequest.upgrade(class1);
}
}