|
|
@ -1,64 +1,70 @@
|
|
|
|
package com.cn.filter;
|
|
|
|
package com.cn.filter; // 定义过滤器包名
|
|
|
|
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.IOException; // 导入IOException类,用于处理IO异常
|
|
|
|
|
|
|
|
import javax.servlet.Filter; // 导入Filter接口,用于创建过滤器
|
|
|
|
import javax.servlet.Filter;
|
|
|
|
import javax.servlet.FilterChain; // 导入FilterChain类,用于过滤器链
|
|
|
|
import javax.servlet.FilterChain;
|
|
|
|
import javax.servlet.FilterConfig; // 导入FilterConfig类,用于过滤器配置
|
|
|
|
import javax.servlet.FilterConfig;
|
|
|
|
import javax.servlet.ServletException; // 导入Servlet异常类
|
|
|
|
import javax.servlet.ServletException;
|
|
|
|
import javax.servlet.ServletRequest; // 导入ServletRequest接口
|
|
|
|
import javax.servlet.ServletRequest;
|
|
|
|
import javax.servlet.ServletResponse; // 导入ServletResponse接口
|
|
|
|
import javax.servlet.ServletResponse;
|
|
|
|
import javax.servlet.http.HttpServletRequest; // 导入HttpServletRequest类
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import javax.servlet.http.HttpServletResponse; // 导入HttpServletResponse类
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Servlet Filter implementation class EncodingFilter
|
|
|
|
* Servlet Filter implementation class EncodingFilter
|
|
|
|
|
|
|
|
* <p>该过滤器用于设置请求和响应的编码,确保字符编码的正确性。</p>
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public class EncodingFilter implements Filter {
|
|
|
|
public class EncodingFilter implements Filter {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Default constructor.
|
|
|
|
* Default constructor.
|
|
|
|
|
|
|
|
* <p>EncodingFilter的默认构造函数。</p>
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public EncodingFilter() {
|
|
|
|
public EncodingFilter() {
|
|
|
|
// TODO Auto-generated constructor stub
|
|
|
|
// TODO Auto-generated constructor stub
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @see Filter#destroy()
|
|
|
|
* Destroy method.
|
|
|
|
*/
|
|
|
|
* <p>销毁过滤器时调用的方法,可以在此释放资源。</p>
|
|
|
|
public void destroy() {
|
|
|
|
*/
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
public void destroy() {
|
|
|
|
}
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//转换类型
|
|
|
|
|
|
|
|
HttpServletRequest req=(HttpServletRequest) request;
|
|
|
|
|
|
|
|
HttpServletResponse res=(HttpServletResponse) response;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String uri = req.getRequestURI();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(uri.contains(".css") || uri.contains(".js") || uri.contains(".png")|| uri.contains(".jpg")){
|
|
|
|
/**
|
|
|
|
//如果发现是css或者js文件,直接放行
|
|
|
|
* Do filter method.
|
|
|
|
chain.doFilter(request, response);
|
|
|
|
* <p>过滤器的核心方法,用于在请求处理链中执行过滤任务。</p>
|
|
|
|
} else {
|
|
|
|
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
|
|
|
|
request.setCharacterEncoding("utf-8");
|
|
|
|
*/
|
|
|
|
response.setCharacterEncoding("utf-8");
|
|
|
|
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
|
|
|
|
response.setContentType("text/html;charset=utf-8");
|
|
|
|
// 转换类型
|
|
|
|
chain.doFilter(request, response);
|
|
|
|
HttpServletRequest req = (HttpServletRequest) request;
|
|
|
|
}
|
|
|
|
HttpServletResponse res = (HttpServletResponse) response;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取请求URI
|
|
|
|
|
|
|
|
String uri = req.getRequestURI();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
// 如果请求是静态资源(如CSS、JS、图片),则直接放行
|
|
|
|
|
|
|
|
if (uri.contains(".css") || uri.contains(".js") || uri.contains(".png") || uri.contains(".jpg")) {
|
|
|
|
|
|
|
|
chain.doFilter(request, response);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// 设置请求和响应的编码为UTF-8
|
|
|
|
|
|
|
|
request.setCharacterEncoding("utf-8");
|
|
|
|
|
|
|
|
response.setCharacterEncoding("utf-8");
|
|
|
|
|
|
|
|
response.setContentType("text/html;charset=utf-8");
|
|
|
|
|
|
|
|
// 继续过滤器链
|
|
|
|
|
|
|
|
chain.doFilter(request, response);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @see Filter#init(FilterConfig)
|
|
|
|
* Init method.
|
|
|
|
*/
|
|
|
|
* <p>初始化过滤器时调用的方法,可以在此进行初始化设置。</p>
|
|
|
|
public void init(FilterConfig fConfig) throws ServletException {
|
|
|
|
* @see Filter#init(FilterConfig)
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
public void init(FilterConfig fConfig) throws ServletException {
|
|
|
|
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|