Servlet知识点总结

1. Servlet技术概述

Servlet技术的核心是servlet接口,他是所有servlet类必须直接或间接实现的一个接口,在编写实现servlet类的时候是直接实现它,在扩展实现接口的类的时候就是间接实现它。servlet容器将servlet类加载到内存,并在servlet类的实例上调用具体的方法。在一个应用程序中,每个servlet类种只能有一个实例。用户请求致使servlet容器调用了servlet类种的service方法,并且传入一个servletRequest实例和一个ServletResponse的实例,ServletRequest中封装了当前的HTTP请求。因此Servlet开发人员不必解析和操作原始的HTTP请求数据。ServletResponse表示=当前用户的HTTP响应,使得将响应发回客户端变得十分容易。对于每一个应用程序,servlet容器还会创建一个ServletContext的实例,这个对象中封装了上下文的环境详情,每个上下文只有一个ServletContext,每个servlet示例也都有一个封装servlet配置的servletConfig。


2.Servlet的基本架构

Servlet接口:主要定义了servlet的生命周期方法
ServletConfig接口:为servlet提供了使用容器服务的若干重要对象和方法。
ServletContext接口:是Servlet的上下文对象,这个对象是在服务器启动时创建的,为Servlet提供了使用容器服务的若干重要方法。
GenericServlet抽象类:为servlet提供了一般的实现(包括实现了servlet和ServletConfig两个接口),保存了容器通过init方法传递给servlet的一个ServletConfig类型的重要对象。
HttpServlet抽象类:为处理http请求的servlet提供了一般实现,主要是定义和实现了若干service方法。
继承关系:GeneicServlet继承了Servlet和ServletConfig接口;HttpServlet继承了GenericServlet;我们写的servlet继承了HTTPServlet。

3.servlet api中的四个Java包:

1.javax.servlet:其中包含定义servlet和servlet容器之间契约的类和接口;
2.javax.servlet.http:其中包含定义httpservlet和servlet容器之间契约的类和接口;
3.javax.servlet.annotation:其中包含servlet、filter、listener的标注,它还为被标注元件定义元数据;
4.javax.servlet.descriptor:其中包含提供程序化登录web应用程序的配置信息的类型。

4.servlet的生命周期

加载(服务器启动时,会在web.xml文件中找到servlet文件的配置并创建servlet的实例);
init(),第一次访问servlet的时候调用,全过程仅执行一次(初始化);
service(),每一次访问servlet的时候调用(处理请求和响应);
destroy(),清理或销毁,服务器关闭。
 

5.servlet的执行原理:

1.当服务器收到客户端浏览器请求后,会解析URL路径,获取到访问的servlet的资源路径;
2.拿到资源路径通过web.xml文件进行查找,是否有对应的url-pattern;
3.如果有,则查找对应的servlet-class获取全路径名;
4.Tomcat会将字节码文件加载进内容,并创建对象;5.调用方法。(service()方法本身包含doGet()和doPost()。如果服务器发现service()方法,则不再执行doGet(),doPost().一般不建议去重写父类的service方法。因为重写了此方法,doGet方法和doPost方法将得不到利用.没有service()方法默认执行doGet()方法.)
 

6.servlet的十大方法

init(HTTPServletConfig config):被servlet容器调用与指明一个servlet被放进服务中,当Servlet第一次被请求的时候Servlet容器会调用这个方法,在后续的请求中不会被再次调用
service(HttpServletRequest request,HttpServletResponse response):被servlet容器调用以允许servlet响应一个请求,每当请求Servlet的时候多会调用一次。
doGet(httpServletRequest request,HttpServletResponse response):被server调用处理客户端的GET请求。
doPost(HttpServletRequest request,HttpServletResponse response):被server调用处理客户端的POST请求。
doPut(HttpServletRequest request,HttpServletResponse response):被server调用处理客户端的PUT请求。
doDelete(HttpServletRequest request,HttpServletResponse response):被server调用处理客户端的DELETE请求。
destroy():被servletcontainer调用以告知一个servlet它被剔除服务,当销毁Servlet的时候,该方法被调用.。
getServletInfo():返回有关Servlet的信息,例如作者、版本、版权。
getServletConfig():返回ServletConfig对象。
doHead(HttpServletRequest request,HttpServletResponse response):被server调用处理客户端的Head请求。
getServletConfig():返回ServletConfig对象
doHead(HttpServletRequest request, HttpServletResponse response):被server调用处理客户端的Head请求.
 

7.创建一个servlet的流程

1、创建一个Myservlet 实现servlet接口 复写方法
2、在init(),service(),destroy()方法中添加输出语句
3、在web.xml中注册我们创建的servlet。

8.如何在web.xml中配置servlet?

1.servlet的名字,包装:

<servlet>
<servlet-name>httpServletDemo(为servlet取的名字)</servlet-name>			//为servlet注册一个友好的名字
<servlet-class>com.lxitedu.HttpServletDemo(包名、类名)
</servlet-class>		//指明为哪一个servlet类起个友好的名字,名字要写全限定名;
</servlet>
serlvet一般情况是有用户第 一次访问的时候才初始化,
如果需要应用程序一启动就初始化,需要配置load-on-startup
<servlet>
<servlet-name>CheckServlet</servlet-name>
<servlet-class>com.starlion.servlet.CheckServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>

2.映射、访问的地址(url)

<servlet-mapping>//用于映射一个已注册的servlet的一个对外访问路径
<servlet-name>httpServletDemo(与上面的servlet名字要完全一样)</servlet-name>	//指明为哪一个servlet类配置对外访问路径
<url-pattern>/myServlet(运行时地址栏显示的文件名)</url-pattern>	//指明对外访问路径
</servlet-mapping>

同一个Servlet可以被映射到多个URL上,即多个 <servlet-mapping> 的<servlet-name> 的值,可以是同一个Servlet ;

3.配置默认首页

<welcome-file-list>配置默认首页

4.session有效期的设置

<session-config>
<session-timeout>300</session-timeout>
</session-config>

5.servlet全局参数的配置

<context-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</vontext-param>

servlet代码中使用this.getServletContext().getInitParameter(""encoding);进行读取

9.servlet的注解方式。

通过web.xml方式配置servlet是web3.0版本以前常用的方式,那么在3.0版本后,使用注解的方式代替配置文件。

servlet注解方式:
@WebServlet(value="/myServlet1",name = “MyServlet1”)

String name() default “”; 名字

String[] value() default {}; 访问路径

String[] urlPatterns() default {}; 访问路径

int loadOnStartup() default -1; 启动时机

WebInitParam[] initParams() default {}; 初始化参数

loadOnStartup:servlet初始化时机,默认是第一次访问servlet的时候初始化 这个时候loadOnStartup值为-1.

10.jsp和servlet的区别?

jsp是servlet技术的扩展,本质上是servlet的简易方式。jsp编译后是类servlet“。servlet和jsp最主要的不同点在于,servlet的应用逻辑是在Java文件中,并且完全从表示层中的html里分离开来。而jsp的情况是Java和html可以组合成一个扩展名为.jsp的文件。jsp侧重于视图,servlet主要用于控制逻辑。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值