美文网首页
简学tomcat,自己写个Filter,纯手工java网站使之不

简学tomcat,自己写个Filter,纯手工java网站使之不

作者: 在路上phper | 来源:发表于2018-03-15 20:47 被阅读45次
    image.png

    后面我们会使用编辑器自动发布并运行
    我们前面学习了servlet api


    image.png

    其中java serverlet api 不同版本有一定的规范 不同的厂商(tomcat)会对其进行实现
    那么我们今天要学习的就是filtering(过滤器)
    有什么作用呢?
    比如我们请求一个网站的时候 各种各样的地址 那么这些地址不管后缀名为.do或者其他后缀 交给我们统一的servlet处理之前或者之后可以通过过滤器对数据进行过滤或者我们自己定义的一些业务(比如有些危险字符或者有些参数)可以直接在请求到达servlet之前就可以把他干掉
    下面我们学习一下filtering
    首先把上节课的myservlet修改下


    image.png
    把输出信息改成中文的了
    重新编译一下项目
    将classes目录拷贝到WEB-INF下
    启动tomcat

    运行上节课的网址localhost:8080/myweb/abcabc.do


    image.png
    可以发现出现了乱码 是因为我们服务端没有做编码设置
    那么我们在myservlet中设置编码可以么?
    答案是可以的
    但是在实际开发过程中 可以有好多个servlet 如果对每个servlet进行一个编码设置 很不方便
    所以我们应该在servlet执行之前,到达servlet之前 设置一个过滤器 可以在过滤器中把编码改掉
    在到达servlet之后我们的编码则会正常
    下面学习下filtering
    image.png
    这里面会有个执行顺序 今天这节课会先执行filtering执行servlet然后还可以回到filtering
    大概过程如下
    当浏览器(吃瓜群众)请求网站的时候,里面的数据会通过filter(可以有多个,可在web.xml中配置先调用哪个),进入filter之后对我们的请求和相应作出处理。然后把控制权交给servlet或者下一个filter,是有一个调用链存在的
    下面自己写个filter 里面主要有三个方法doFilter init(需要在web.xml中配置和servlet配置类似)destory三个方法
    doFilter是这节课必须要写的一个方法 是一个过滤行为 可以把相应的控制权往后移,当servlet接收时候,要调用filterchain 是过滤器的调用链对象
    首先在com.jtthink包下新建一个myfilter.java
    代码如下
    image.png

    重新编译一下项目
    target中出现两个class文件


    image.png
    将classes目录拷贝到WEB-INF下
    然后需要做一些配置(类似servlet配置)
    image.png
    在web.xml中加入如下
    <filter>
    <filter-name>myfilter</filter-name>
    <filter-class>com.jtthink.myfilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>myfilter</filter-name>
    <url-pattern>*.do</url-pattern>
    </filter-mapping>
    重启tomcat
    运行网站localhost:8080/myweb/abcabc.do
    image.png
    可以发现编码被我们统一改掉了
    接下来做个简单小案例
    访问的时候 如果浏览器是火狐 则不让其访问
    直接使其停止访问 不跳到servlet中使其输出你好
    如果是其他浏览器则正常输出显示
    修改myfilter中的doFilter方法
    image.png
    重新编译项目
    将编译生成classes复制到WEB-INF下
    重启tomcat
    运行项目localhost:8080/myweb/abcabc.do
    火狐访问
    image.png
    谷歌访问
    image.png
    可以发现对firefox浏览器进行了拦截处理

    相关文章

      网友评论

          本文标题:简学tomcat,自己写个Filter,纯手工java网站使之不

          本文链接:https://www.haomeiwen.com/subject/fpgnfftx.html