Servlet基础

来源:互联网 发布:一首网络歌曲叫什么雪 编辑:程序博客网 时间:2024/06/07 17:01

Servlet :

基于Java编程语言的web服务器端编程技术,主要用于在web服务器端获得客户端的访问请求信息和动态生成对客户端的响应信息,同时Servlet也是JSP技术的基础。

三大组件之一:Servlet Filter Lisener


使用Servlet的基本流程:

HTTP请求

客户端<---------------->服务器 {web服务器<-->静态页面;Servlet容器<--}-->数据库

HTTP响应


1 客户端向Web服务器发起一个HTTP请求

2 Web服务器(比如Apache)接收该请求,并交给Servlet容器。Servlet容器可以在主机的同一个进程,不同的进程或者其他的Web服务主机的进程中启动来处理这个请求

3 Servlet容器根据Servlet的配置文档确定需要调用的Servlet,并把request对象,response对象传给它

4 Servlet通过request对象获取客户请求信息和其他相关信息,并用特定的方法处理请求,生成送回给客户端的数据。Servlet处理完请求后要把返回的信息放入response对象

5 Servlet完成了请求的处理以后,Servlet会刷新response,把控制权返回给web服务器。·


Servlet的特点:

是用Java编写的,所以有平台无关性。

是持久的,只要web服务器加载一次,而且可以在不同的请求之间保持服务。

是可扩展的,是java所带来的优点,java是面向对象的,所以很容易拓展以适应用户的需求

是安全的,从外界调用一个Servlet的唯一方法是通过web服务器


Servlet的生命周期

客户端 web容器 Servlet

.|

口-----请求----> 口

-----init()------->口

----service()------>口

<---------------------返回结果口

口<------响应

口----destroy()--->口


虽然写的很乱,把口当做一个正方体

1 装载Servlet

2 实例化一个Servlet对象

3 调用Servlet的init()方法进行初始化

4 服务。容器收到对该servlet的请求,则调用该Servlet对象的Service方法处理请求。

5 卸载。当服务器端不在需要该servlet时,服务器调用destroy()方法卸载该servlet,释放servlet运行时占用的资源。

PS:

Servlet中的大多数方法不由我们调用,由Tomcat来调用,并且Servlet的对象也不由我们来创建。

init()方法,服务器会在servlet第一次被访问的时候创建servlet,在servlet创建了以后,服务器马上调用servlet的 void init(ServletConfig)方法。

在整个生命周期中,只调用一次

service()方法 每当服务器收到请求的时候调用,来处理请求

每次处理请求的时候都会被调用

destroy()方法,当服务器被关闭时,服务器会销毁Servlet,在销毁之前会调用servlet()的destroy()方法

在整个生命周期中,该方法只调用一次。

注意:

一个类只有一个对象,单例

线程不安全,效率高

Servlet由我们来写,但是对象由服务器来创建,并且由服务器来调用相应的方法

一个ServletConfig对象对应一段web.xml中的配置信息

Servlet是一个借口,实现类的对象由Tomcat提供


Servlet实现方法:

1 可以通过实现接口。

然后将里面所有的方法都补充完整。但是这样比较累。

2 继承HttpServlet来完成自定义的Servlet。

在HttpServlet的service(HttpServletRequest ,HttpServletResponse)方法回去判断当前请求是GET还是POST

如果是GET 就调用doGET()方法,如果是POST请求,回去调用doPost()方法,也就是说我们只用覆盖doGET()或doPost()就可以了


Servlet :

Servlet的名称,类和其他选项配置:

<servlet-name>OneServlet</servlet-name>

<servlet-class>com.OneTestServlet</servlet-class>

启动装入优先权:

Servlet中的<load-on-startup>整数</load-on-startup>

正数数字越小,优先级越高。负数则不创建

映射:

<servlet-mapping>

<Servlet-name>OneServlet</Servlet-name>

<url-pattern>/OneServlet</url-pattern>//请求路径中包含/OneServlet的模式,同样会访问OneServlet的Servlet。

</servlet-mapping>


ServletContext

一个项目只能有一个ServletContext对象,使用它可以给多个Servlet传递数据,在Tomcat启动时就创建,Tomcat关闭的时候才消失

ServletContext sctx = this.getServletContext();

有域对象功能,可以在多个servlet中传递数据//注意除了这个还有PageContext ServletRequest HttpSession (可以根据他们的域进行相应的设置,类推)

void setAttribute(String name , Object value)

Object getAttribute(String name)//注意有的时候需要强制类型转换一下

void removeAttribute(String name)


功能适用于各种需要数据的地方。








0 0
原创粉丝点击