servlet和filter原理

来源:互联网 发布:数据库linit 编辑:程序博客网 时间:2024/06/05 14:06

servlet安装步骤

 1、从Tomcatelib目录下找servlet-jar夹包,放到项目的lib目录下

 2、实施并且部署一个servlet

        (1)创建一个java类

        (2)让java类继承httpServlet

        (3)重写这个类中的doGet()方法

        (4)进入web.xml中配置servlet 配置servlet-name子标签,配置servlet-class子标签

        (5)配置servlet-mapping标签servlet-name标签,这个标签必须和在第四步配置的servlet-name一致

                  url-pattern标签,指代前端页面访问的路劲

        (6)在servletdoget()使用HttpServletRequest中的getParameter方法获得前端发送的参数

                  getParameter方法中的参数应该与form表单中的空间中的name保持一致,这样拿到的内容就是name空间中的内容

                  遇到一个特殊情况,有时候我不知道前段给我们发送的有哪些内容:

                  我们可以用req.getParameterMap方法来实现这个过程,该方法可以帮助我们获得请求中的所有参数。

                  

                  

        (7)在doget()中使用HttpServletResponse中的getWriter方法获得一个printWrite,然后使用这个流向前端发送数据。

                 *(一)向前端发送数据出现中文乱码问题:以一个resp.setContentType("text/html;charset=utf-8");以这种形式解决中文乱码问题

                   (二)返回一个HTML或者一个JSP的界面。

                                (1、)重定向过程,通过resp.sendRedirect("重定向的路劲");

                                             特定:浏览器发送了两次请求 浏览器的发生变化

                                (2、)转发过程通过request.dispatcher("需要转发的页面").forward(req,resp);

                                            特点:浏览器的地址栏不发生不发生变化,还是请求的接口位置

                                                      浏览器只发送一次请求(另一个请求服务器发出)

                                    通过servlet直接向浏览器发送一个页面,这个页面是由servlet直接生成的

                                   1.生成的html页面可以动态添加数据

                                   2.缺点:代码太过于复杂

                       

       Servlet生命周期:

                  1、构造方法   如果没有配置load-on-startup=1,测用户访问时创建,若配置了则用户启动服务器立刻创建对像,

                        (1)  这个过程只执行一次,意味着Servlet在服务器中只存在一个对象

                  2、初始化方法 (init   只执行一次      

                          (1)如果配置了init-param,我们会在init方法执行后,使用servlet中的getInitParameter(String) 这个

                         方法,来加载一下全局参数,比如数据库配置,其他特定同构造方法

                  3、service方法 

                        (1)每次请求都被调用一次,负责处理具体请求的过程,比如决定使用dogetdopost方法

                        

                   4、destory方法   

                        (1)容器进程关闭时调用

                           (2)容器重新部署实调用

                           (3)容器手动强制中执时,不调用

                           4、调用后,构造方法和init方法可以再次被调用,也就是说这个对象被销毁了,可以在创建了

                       

                                       

         Filter过滤器

         先执行web.xml中,在根据拦截到的范围执行对应的filter类的条件逻辑过程

         web.xml中配置根据拦截范围调节范围大小,只拦截一个页面/页面名.html。想拦截多个范围的可用*.html,再在对应的类中用白名单,根据getRequestURL

         判断是否有。

         filter在servlet之前创建,创建之后立刻执行init,创建后执行doFilter

         先销毁servlet,在销毁filter。

         filter比servlet 

                

         

原创粉丝点击