过滤器的两个应用
一、设置编码格式
编码过滤器
package com.bjsxt.filter;
import javax.servlet.*;
import java.io.IOException;
/**
* @program: JavaEE
* @description
*
* @author: wuhao
* @create: 2019-12-12 15:48
**/
//编码的过滤
public class EndFilter implements Filter {
String endcoding;
@Override
public void init(FilterConfig config) throws ServletException {
//先获得全局
endcoding = config.getServletContext().getInitParameter("endcoding");
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
//处理请求
req.setCharacterEncoding(endcoding);
//放行
chain.doFilter(req, resp);
//处理响应
}
@Override
public void destroy() {
}
}
WEB.xml的配置
<context-param>
<param-name>endcoding</param-name>
<param-value>UTF-8</param-value>
</context-param>
<filter>
<filter-name>EndFilter</filter-name>
<filter-class>com.bjsxt.filter.EndFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EndFilter</filter-name>
<url-pattern>/servlet/*</url-pattern> //只要是这个路径的请求都会经过编码的过滤器
</filter-mapping>
二、验证登陆(用户没有登陆,就无法直接访问项目的其他页面)
package com.bjsxt.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @program: JavaEE
* @description
* @author: wuhao
* @create: 2019-12-12 16:54
**/
public class LoginFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//先转换 获得 req和resp
HttpServletRequest req=(HttpServletRequest)servletRequest;
HttpServletResponse resp=(HttpServletResponse)servletResponse;
//判断session是否为空
Object employee = req.getSession().getAttribute("employee");
String requestURI = req.getRequestURI();
String queryString = req.getQueryString();
//先判断是否是登陆的请求是的话就放行
if ("/sxtoa/login.jsp".equals(requestURI)||"/sxtoa/servlet/EmplpyeeServlet?method=login".equals(requestURI+"?"+queryString)){
//放行
filterChain.doFilter(req,resp);
}else {
if (employee==null){
//重定向到登陆页面
resp.sendRedirect(req.getContextPath()+"/login.jsp");
}else {
//放行
filterChain.doFilter(req,resp );
}
}
}
@Override
public void destroy() {
}
}
Web.xml的配置
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.bjsxt.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.html</url-pattern>
</filter-mapping>

浙公网安备 33010602011771号