Servlet

Servlet

一、概述

Servlet的生命周期方法:

void init(ServletConfig):出生之后(1次);

void service(ServletRequest request,ServletResponse response):每次处理请求时都会被调用;

void destroy():临死之前(1次);

特性:

单例,一个类只有一个对象;当然可能存在多个Servlet类!

线程不安全的,所以它的效率是高的!

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

Servlet是JavaWeb的三大组件之一,它属于动态资源,Servlet的作用

是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:

l  接收请求数据;

l  处理请求;

l  完成响应。

  例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口。

二、实现Servlet的方式

实现Servlet有三种方式:

l  实现javax.servlet.Servlet接口;

l  继承javax.servlet.GenericServlet类;

l  继承javax.servlet.http.HttpServlet类;

  通常我们会去继承HttpServlet类来完成我们的Servlet,Servlet中的方法大多数不由我们来调用,而是由Tomcat来调用。并且Servlet的对象也不由我们来创建,由Tomcat来创建!

完成Servlet需要分为两步:

1,编写Servlet类

2,在web.xml文件中配置Servlet

三、HttpServlet

3.1、HttpServlet概述

HttpServlet类是GenericServlet的子类,它提供了对HTTP请求的特殊支持,所以通常我们都会通过继承HttpServlet来完成自定义的Servlet

3.2、HttpServlet覆盖了service()方法

HttpServlet类中提供了service(HttpServletRequest,HttpServletResponse)方法,这个方法是HttpServlet自己的方法,不是从Servlet继承来的。在HttpServlet的service(ServletRequest,ServletResponse)方法中会把ServletRequest和ServletResponse强转成HttpServletRequest和HttpServletResponse,然后调用service(HttpServletRequest,HttpServletResponse)方法,这说明子类可以去覆盖service(HttpServletRequest,HttpServletResponse)方法即可,这就不用自己去强转请求和响应对象了。

3.3、doGet()和doPost()

在HttpServlet的service(HttpServletRequest,HttpServletResponse)方法会去判断当前请求是GET还是POST,如果是GET请求,那么会去调用本类的doGet()方法,如果是POST请求会去调用doPost()方法,这说明我们在子类中去覆盖doGet()或doPost()方法即可。

四、Servlet细节

4.1、Servlet与线程安全

因为一个类型的Servlet只有一个实例对象,那么就有可能会现时出一个Servlet同时处理多个请求,那么Servlet是否为线程安全的呢?答案是:“不是线程安全的”。这说明Servlet的工作效率很高,但也存在线程安全问题!

所以:

不要在Servlet中创建成员!创建局部变量即可!

可以创建无状态成员!

可以创建有状态的成员,但状态必须为只读的!

4.2、让服务器在启动的时候就创建Servlet

这需要在web.xml中进行配置

在<servlet>元素中配置<load-on-startup>元素可以让服务器在启动时就创建该Servlet,其中<load-on-startup>元素的值必须是大于等于的整数


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值