Servlet一些个人理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet一些个人理解相关的知识,希望对你有一定的参考价值。

一、什么是Servlet

  1.Servlet是一个基于Java技术的动态网页技术,运行在服务器端,由Servlet容器管理,用于生成动态内容,是jsp( servlet进行网页开发非常的繁琐,所以现在一般用于流程控制)的前身。

  补充:jsp:jsp的框架是html,开发网页非常简单方便,里面嵌套java,jsp的本质是servlet。jsp的执行过程:jsp----翻译---->.java(servlet)----编译---->.class----->                    执行。

   2.Servlet本质是一个实现了特定接口的java类,编写一个servlet,实际上就是按照Servlet规范编写了一个java类。

  3.Servlet不是由用户或程序员直接调用,是由容器管理的,没有main方法。

二、Servlet的生命周期

  技术分享图片

  1.加载:

    (1)如果在web.xml中配置了<load-on-start>则在服务器启动的时候就自动加载

    (2)没有配置就在第一次想servlet发送请求的时候加载

  2.实例化:

    加载Servlet后,服务器创建一个Servlet实例。

    补充:在学习Spring的自动注入时,曾疑惑为什么不能在servlet里面进行service类的注  入。后来查询资料,明白了,原因是:Spring不对servlet进行管理,服务器在进行加载servlet时会实例化一个对象,如果在applicationContext.xml中进行自动注入,又会创建一个对象。这两个对象不是同一个!

  3.初始化:

    调用init()方法,Servlet初始化参数被传递给Servlet配置对象ServletConfiig

  4.处理请求:

    调用service()方法,该方法用于传递请求和响应对象,进行流程控制。从请求对象(HttpServletRequest)中获取请求信息,处理该请求并用响应对象(HttpServletResponse)的方法返回给客户端。也可以调用doGet(),dopost()方法。

  5.销毁:

    当服务器不在需要Servlet,或重新装入新的Servlet实例时,服务器会调用destroy()方法。

三、Servlet相关实现

技术分享图片

  --Servlet必须直接或间接实现javax.servlet.Servlet接口

  --通过继承javax.servlet.GenericServlet抽象类实现跨协议的Servlet

  --通过继承javax.servlet.HttpServlet类实现http Servlet(常用方法)

    技术分享图片

里面有两个service方法,下面的是父类的,如果用这个的话,还需要把requst和response转为http的,所有一般直接实现上面的service方法,或者实现doGet(),doPost()方法(如果不实现会报405错

)。

 四、Servlet在web.xml中配置

  <servlet-name>用来定义servlet的名称,该名称在整个应用中必须是唯一的,可以随便起

  <servlet-class>用来指定servlet的完全限定的名称。

  <servlet-name>:Servlet的名字,唯一性和一致性,与<servlet>元素中声明的名字一致。

  <url-pattern>:指定相对于Servlet的URL的路径。该路径相对于web应用程序上下文的根路径。

  <servlet-mapping>将URL模式映射到某个Servlet,即该Servlet处理的URL。也就是说可以通过这个路径访问到该servlet

<servlet>
  <servlet-name>FristServlet</servlet-name>
  <servlet-class>全限定路径FristServlet</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>FristServlet</servlet-name>
  <url-pattern>/servlet/frist</url-pattern>
</servlet-mapping>  

 

 

 

 

  

 

  

 









以上是关于Servlet一些个人理解的主要内容,如果未能解决你的问题,请参考以下文章

spring IOC理解

关于IOC和DI的一些个人理解

关于Bean\Entity\Model\POJO的一些个人理解

[转帖]Windows与Linux的一些个人理解

对LinkedList源码的一些个人理解

对LinkedList源码的一些个人理解