08、JavaWeb-Filter过滤器(web.xml定义实现)

 实际开发中Filter的使用场景:
1、统一处理中文乱码。
2、屏蔽敏感词。
3、控制资源的访问权限。 

 

 

 

 

源码:

过滤器:Servlet12_CharacterFilter.java 
/**
 * @author:
 * @date:2022/1/17
 * @description: 过滤器 
 *  其实现的接口的方法不用必须全部实现
 */
public class Servlet12_CharacterFilter implements Filter {

    /**
     * @param: [servletRequest, servletResponse, filterChain]
     * @return: void
     * @description: index13_testFilter.jsp的请求先进入Filter,然后再通过web.xml中配置的url-pattern 进入Servlet12_login.java处理
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        servletRequest.setCharacterEncoding("UTF-8");
        //必须filterChain.doFilter()才能往下走,如果有多个过滤过滤链才能够进行传递 才能进入Servlet12_login.java
        //这里的servletRequest和servletResponse和Servlet12_login.java中的req、resp都是同一个对象
        filterChain.doFilter(servletRequest,servletResponse);
    }
/*    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void destroy() {

    }*/


}

Servlet12_login.java
/**
 * @author:
 * @date:2022/1/17
 * @description: 
 */
@WebServlet("/servlet12_login")
public class Servlet12_login extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // req.setCharacterEncoding("UTF-8"); // 如果在过滤链中已经处理,则这里可以删去。
        //String name = req.getParameter("name");
        String name = req.getParameter("value");
        System.out.println(name);
        //这样取值会有两种情况的结果
        //
        //1、" " 空字符串
        //
        //当url里有name属性,但是没有值的时候后台用request.getParameter("name")获取的是空字符串""
        //
        //2、null
        //
        //当url里没有name属性,request.getParameter("name")获取的值是null
        //————————————————
        //版权声明:本文为CSDN博主「大广-全栈开发」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
        //原文链接:https://blog.csdn.net/yan88888888888888888/article/details/84835247
    }
}
Servlet12_test.java
@WebServlet("/servlet12_test")
public class Servlet12_test extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //req.setCharacterEncoding("UTF-8");
        String value = req.getParameter("value");
        System.out.println(value);
    }
}

index13_testFilter_Servlet12_login.jsp 

<%--
  Created by IntelliJ IDEA.
  User: Admin
  Date: 2022/1/17
  Time: 11:58
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Filter</title>
</head>
<body>
<form action="servlet12_login" method="post">
    <table>
        <tr>
            <td><input type="text" name="value"></td>
        </tr>
        <tr>
            <td><input type="submit" value="提交"></td>
        </tr>
    </table>

</form>
</body>
</html>

index13_testFilter_Servlet12_test.jsp 

<%--
  Created by IntelliJ IDEA.
  User: Admin
  Date: 2022/1/17
  Time: 11:58
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Filter</title>
</head>
<body>
<form action="servlet12_test" method="post">
    <table>
        <tr>
            <td><input type="text" name="value"></td>
        </tr>
        <tr>
            <td><input type="submit" value="提交"></td>
        </tr>
    </table>

</form>
</body>
</html>

 web.xml

 <!--过滤器(只对Servlet12_CharacterFilter.java做了拦截,其他的没有拦截,如果想要test也被拦截,只需要追加url-pattern)-->
    <filter>
        <filter-name>character</filter-name>
        <filter-class>com.test.app.Servlet12_CharacterFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>character</filter-name>
        <url-pattern>/servlet12_login</url-pattern>
        <url-pattern>/servlet12_test</url-pattern>
    </filter-mapping>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值