一 跨域问题
Filter_CrossOrigin
package com.ufox.web.filter; import javax.servlet.*; import javax.servlet.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; // 解决跨域问题 @WebFilter("/*") public class Filter_CrossOrigin implements Filter { public void init(FilterConfig config) throws ServletException { } public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { HttpServletRequest request1 = (HttpServletRequest) request; HttpServletResponse response1 = (HttpServletResponse) response; // request1.getHeader("origin") // response1.setHeader("Set-Cookie", response1.getHeader("Set-Cookie") + "; SameSite=None; Secure=true"); response1.setHeader("Access-Control-Allow-Origin", request1.getHeader("origin")); response1.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE"); response1.setHeader("Access-Control-Max-Age", "3600"); response1.setHeader("Access-Control-Allow-Headers", "x-requested-with, Content-Type"); response1.setHeader("Access-Control-Allow-Credentials", "true"); chain.doFilter(request1, response1); } } 二,乱码问题
CharchaterFilter
package com.ufox.web.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * 解决全站乱码问题,处理所有的请求 */ @WebFilter("/*") public class CharchaterFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { //这是初始化方法 } @Override public void doFilter(ServletRequest req, ServletResponse rep, FilterChain filterChain) throws IOException, ServletException { //将父接口转为子接口 HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) rep; //获取请求方法 String method = request.getMethod(); //解决post请求中文数据乱码问题,get请求在tomcat8.0以后已经内部解决 if(method.equalsIgnoreCase("post")){ request.setCharacterEncoding("utf-8"); } //处理响应乱码 response.setContentType("text/html;charset=utf-8"); //放行处理 filterChain.doFilter(request,response); } @Override public void destroy() { //销毁的时候执行 } }