过滤器的两个应用

一、设置编码格式

编码过滤器

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>

  

猜你喜欢

转载自www.cnblogs.com/ww103/p/12079152.html