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一些个人理解的主要内容,如果未能解决你的问题,请参考以下文章