servlet浅析

1.servlet

         运行在web服务器或应用服务器上的程序

2.生命周期

       init():初始化方法,只在servlet初始化时被调用,只调用一次

       service():处理客户端的请求,每一次可以端的一个请求,创建一个新的线程进行处理,在servlet周期内可以被调用很多次,请求通常为http请求

       destroy():servlet结束时调用,servlet被销毁时调用,只调用一次

       doPost():在http请求指定为post请求时,被调用

       doGet():在http请求未指定为post请求时,被调用,

      post请求与get请求的区别:

      get请求的形式如:http://localhost:8080/login.json? userName=name&passWord=123,参数是放在http请求的header里的,post的请求的参数是放在http请求的body里。get请求的大小有限制的,不能传送大量的数据。此外如上文所示,get请求的参数能直接在url里能直接看见,因此安全性不高

3.过滤器

     针对某类请求进行统一的处理,这个处理可以在进servlet前或者servlet处理完成后,最常见的如权限验证,对update之类的操作如果需要判断用户是否是登录状态且需要用户有修改的权限。这些判断如果在业务代码里,容易造成业务代码膨胀和余,这时可以考虑采用过滤器,把判断逻辑单独抽离出来放在过滤器里集中处理,这样更易于处理且利于后期的维护,在springmvc里有类似的组件叫拦截器,两者作用都类似,都是采用的责任链这种设计模式实现的。调用的顺序同web.xml里声明的顺序一直。

过滤器的实现需要实现Filter接口,主要实现doFilte方法,在web.xml里的配置同servelet类似。

<filter>
  <filter-name>LogFilter</filter-name>
  <filter-class>com.demo.LogFileter</filter-class>  //实现类Filter接口的类全路径
  <init-param>                                      //初始化参数,可在init方法里获取   
    <param-name>Site</param-name>
    <param-value>csdn</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>LogFilter</filter-name>
  <url-pattern>/*</url-pattern>     //拦截的某类请求,这里是拦截所有的请求
</filter-mapping>

4.异常处理

  通过<error-page>在web.xml里配置,实际项目中通常采用springmvc的统一异常处理来进行异常的处理

5.cookie与session的区别

    cookie是存放在用户浏览器里的,常见的自动登录功能就是通过cookie实现的,如果没有设置cookie的过期时间,浏览器关闭后,cookie失效,此外cookie不能跨域

  session是保留在服务器端
    

      

       

        

      Servlet 生命周期

发布了5 篇原创文章 · 获赞 2 · 访问量 964

猜你喜欢

转载自blog.csdn.net/Andrew_2018/article/details/102244263