JavaWeb开发技术学习笔记(五)——Servlet

Servlet

Java类必须符合一定的 规范

​ a.必须继承 javax.servlet.http.HttpServlet
​ b.重写其中的 doGet()或doPost()方法

doGet(): 接受 并处 所有get提交方式的请求
doPost():接受 并处 所有post提交方式的请求

Servlet要想使用,必须配置Serlvet2.5:web.xml
Servle3.0: @WebServlet

Serlvet2.5:web.xml:

项目的根目录:WebContent 、src

所在的jsp是在 WebContent目录中,因此 发出的请求WelcomeServlet 是去请求项目的根目录。

Servlet流程:
请求 -> -> 根据中的 去匹配 中的,然后寻找到,求中将请求交由该执行。

2个/:
jsp:/ localhost:8888
web.xml: / http://localhost:8888/项目名/

回顾纯手工方法创建第一个Servlet

步骤:
编写一个类,继承HttpServlet
重写doGet()、doPost()方法
编写web.xml 中的servlet映射关系

借助于Eclipse快速生成Servlet

直接新建Servlet即可!(继承、重写、web.xml 可以借助Eclipse自动生成)

Servlet3.0,与Servlet2.5的区别:
Servlet3.0不需要在web.xml中配置,但 需要在 Servlet类的定义处之上编写 注解@WebServlet(“url-pattern的值”)
匹配流程: 请求地址 与@WebServlet中的值 进行匹配,如果匹配成功 ,则说明 请求的就是该注解所对应的类

项目根目录:WebContent、src(所有的构建路径)
例如:
WebContent中有一个文件index.jsp
src中有一个Servlet.java

如果: index.jsp中请求 < a href=“abc”>… ,则 寻找范围:既会在src根目录中找 也会在WebContent根目录中找

如果:index.jsp中请求,寻找范围:先在src或WebContent中找a目录,然后再在a目录中找abc

web.xml中的 /:代表项目根路径
http://localhost:8888/Servlet25Project/
jsp中的/: 服务器根路径
http://localhost:8888/

构建路径、WebContent:根目录

Servlet生命周期:5个阶段

在这里插入图片描述

加载
初始化: init() ,该方法会在 Servlet被加载并实例化的以后 执行
服务 :service() ->doGet() doPost
销毁 :destroy(), Servlet被系统回收时执行
卸载

init():
a.默认第一次访问 Servlet时会被执行 (只执行这一次)
b.可以修改为 Tomcat启动时自动执行
i.Servlet2.5: web.xml


1

其中的“1”代表第一个。
ii.Servlet3.0
@WebServlet( value="/WelcomeServlet" ,loadOnStartup=1 )

service() ->doGet() doPost :调用几次,则执行几次
destroy():关闭tomcat服务时,执行一次。

在servlet3.0以后,我们可以不用再web.xml里面配置servlet,只需要加上@WebServlet注解就可以修改该servlet的属性了。

下面是@WebServlet的属性列表。

属性名 类型 描述
name String 指定Servlet 的 name 属性,等价于 。如果没有显式指定,则该 Servlet 的取值即为类的全限定名。
value String[] 该属性等价于 urlPatterns 属性。两个属性不能同时使用。
urlPatterns String[] 指定一组 Servlet 的 URL 匹配模式。等价于标签。
loadOnStartup int 指定 Servlet 的加载顺序,等价于 标签。
initParams WebInitParam[] 指定一组 Servlet 初始化参数,等价于标签。
asyncSupported boolean 声明 Servlet 是否支持异步操作模式,等价于 标签。
description String 该 Servlet 的描述信息,等价于 标签。
displayName String 该 Servlet 的显示名,通常配合工具使用,等价于 标签。

Servlet API

由两个软件包组成: 对应于HTTP协议的软件包、对应于除了HTTP协议以外的其他软件包
即Servlet API可以适用于 任何 通信协议。
我们学习的Servlet,是位于javax.servlet.http包中的类和接口,是基础HTTP协议。

Servlet继承关系

在这里插入图片描述
ServletConfig:接口
ServletContext getServletContext():获取Servlet上下文对象 application
String getInitParameter(String name):在当前Servlet范围内,获取名为name的参数值(初始化参数)

a.ServletContext中的常见方法(application):
getContextPath():相对路径
getRealPath():绝对路径
setAttribute() 、getAttribute()
—>
String getInitParameter(String name);在当前Web容器范围内,获取名为name的参数值(初始化参数)

Servlet3.0方式 给当前Servlet设置初始值:
@WebServlet( … , initParams= {@WebInitParam(name=“serveltparaname30”,value=“servletparavalue30”) } )
注意,此注解只 隶属于某一个具体的Servlet ,因此无法为 整个web容器设置初始化参数 (如果要通过3.0方式设置 web容器的初始化参数,仍然需要在web.xml中设置)

HttpServletRequest中的方法:(同request),例如setAttrite()、getCookies()、getMethod()
HttpServletResponse中的方法:同response

Servlet使用层面:

l中设置)

HttpServletRequest中的方法:(同request),例如setAttrite()、getCookies()、getMethod()
HttpServletResponse中的方法:同response

Servlet使用层面:

Eclipse中在src创建一个Servlet,然后重写doGet() doPost()就可以 (doGet() doPost()只需要编写一个)。

猜你喜欢

转载自blog.csdn.net/MACRosshaha/article/details/105668254
今日推荐