JavaWeb——Day14_2

来源:互联网 发布:易语言音乐播放器源码 编辑:程序博客网 时间:2024/05/15 13:01

*4.过滤器_基础

servlet filter

很重要的技术。






servlet的乱码。

之前解决乱码问题是在每一个servlet加入response.setcon和Request.setchar解决。

但是如果有多个sevlet呢?

--完全可以用过滤器访问。

--权限控制。


Servlet规范中 Servlet  Listener  Filter
    
    1.开发Filter
        想要开发一个过滤器需要如下两个步骤:
            (1)写一个类实现特定的接口Filter
                生命周期:当服务器启动时,web应用加载后,立即创建这个web应用中的所有的过滤器,过滤器创建出来后立即调用init方法执行初始化的操作.
                创建出来后一直驻留在内存中为后续的拦截进行服务.每次拦截到请求后都会导致doFilter方法执行.
                在服务器关闭或web应用被移除出容器时,随着web应用的销毁过滤器对象销毁.销毁之前调用destory方法执行善后工作.
                init
                    FilterConfig:代表web.xml中对当前过滤器的配置信息
                    ~获取ServletContext对象
                    ~获取初始化信息
                        getInitParameter
                        getInitParameterNames
                doFilter
                    request
                    response
                    FilterChain:
                        代表过滤器链的对象.
                        一个资源可能被多个过滤器所拦截到,拦截的顺序和过滤器在web.xml中filter-mapping的配置顺序相同.
                        所有对当前资源访问进行拦截的过滤器按照拦截顺序就组成了一个过滤器链.这个过滤器链的最后一个节点是要访问的资源.
                        Filter中调用FilterChain提供了doFilter方法,这个方法一旦被调用就表明当前过滤器没有问题了,请执行过滤器链的下一个节点.如果下一个节点是资源则直接执行了资源
               
                destory
                    
            (2)在web.xml中注册一下过滤器
                <filter>
            <filter-name>Demo1Filter</filter-name> -- 给过滤器起一个名字
            <filter-class>com.itheima.filter.Demo1Filter</filter-class> -- 过滤器的处理类
            <init-param>--可以配置当前过滤器的初始化信息,可以配置多个,在Filter中利用FilterConfig对象来获取
            <param-name>name1</param-name>
            <param-value>value1</param-value>
            </init-param>
            </filter>
            <filter-mapping> -- 一个Filter可以配置多个filter-mapping
            <filter-name>Demo1Filter</filter-name>
            <url-pattern>/servlet/Demo1Servlet</url-pattern> -- 一个Filtermapping中可以配置多个url-partten,这个url-partten的写法和servlet-mapping中的写法相同
            <url-pattern>/servlet/*</url-pattern>
            <url-pattern>/*</url-pattern>
            <url-pattern>*.do</url-pattern>
            <servlet-name>Demo3Servlet</servlet-name>
                               --也可以配置多个servlet-name,其中填入servlet的名字明确的通知要拦截哪个名字的Servlet
            <dispatcher>REQUEST</dispatcher>
                               --配置拦截哪种方式的对资源的访问可以是REQUEST/FORWARD/INCLUDE/ERROR四个值之中的一个,可以配置多个dispatcher,如果一个都不配则默认是REQUEST
           <dispatcher>FORWARD</dispatcher>
            </filter-mapping>








怎么放行访问的资源?

FilterChain:
                        代表过滤器链的对象.
                        一个资源可能被多个过滤器所拦截到,拦截的顺序和过滤器在web.xml中filter-mapping的配置顺序相同.

所有对当前资源访问进行拦截的过滤器按照拦截顺序就组成了一个过滤器链.这个过滤器链的最后一个节点是要访问的资源.

Filter中调用FilterChain提供了doFilter方法,这个方法一旦被调用就表明当前过滤器没有问题了,请执行过滤器链的下一个节点.如果下一个节点是资源则直接执行了资源







init
                    FilterConfig:代表web.xml中对当前过滤器的配置信息
                    ~获取ServletContext对象
                    ~获取初始化信息
                        getInitParameter
                        getInitParameterNames









*5.过滤器案例_全站乱码过滤器






解决:



get提交:

get提交 之前是手动编解码的。



怎么改造呢?







接下来再改造getparamvalus和getparam的时候用的方法差不多。不用再写一遍了。


检验:







如果翻看源码会知道:

细节问题:






*6.过滤器案例_30天内自动登录过滤器











0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 办护照时的身份证过期了怎么办 有摩托车驾照想考小车驾照怎么办 分管副局长能直接安排工作吗怎么办 我在北京打工老婆没地方住怎么办 我的车扣了32分怎么办 济南万科地产投诉电话不管用怎么办 买手机被商家欺骗买到合约机怎么办 向消协投诉有用吗?我该怎么办? 我住南开区想办公租房不知怎么办 租房提前退房房东不退押金怎么办 体检时候眼睛有一只是弱视怎么办? b本被扣分9分了怎么办 工作调动后在新单位退休医保怎么办 社保卡和医保卡丢了怎么办 医保卡挂失后又找到了怎么办 医保卡丢失忘了卡号怎么办? 医保卡丢了怎么办又记不住卡号 住院发票丢了医保不给报销怎么办 住院期间被医院丢失了医保卡怎么办 大学时的医保卡毕业后丢了怎么办 用身份证注册的移动卡丢了怎么办 用别人身份证办的卡丢了怎么办 济南医保卡挂失后又找到了怎么办 单位没有给办理医保卡的老人怎么办 单位办的医保卡丢了怎么办 北京退休人员医保卡丢了怎么办 普通发票联丢了医保给报销怎么办 手机买好高铁票身份证丢了怎么办 买了高铁票身份证丢了怎么办 小米手机手电简打开不亮了怎么办 华为p7手机显示屏不亮了怎么办 红米手机3x屏幕不灵怎么办? 乐视1s手机字库坏了怎么办 三星c7手机左右两按钮不亮怎么办 手机摔了一屏碎了下黑屏了怎么办 三星手机摔了一下黑屏了怎么办 行驶证一年扣分超过50分怎么办 朋友去广西传销现在骗我怎么办 行驶证忘带交警查住了怎么办 行驶证正本丢了副本在怎么办 在杭州驾照12分扣完了怎么办