Servlet

有关Servlet:server applet

1. 概念:运行在服务器端的小程序

Servlet就是一个接口,定义了java类被浏览器访问到的规则,换句话说就是被tomcat识别的规则;将来我们定义一个类,实现Servlet接口,重写其中的方法。

2. Servlet的快速入门

  • 创建一个javaEE项目
  • 定义一个类,实现Servlet接口
    public class ServletDemo implements Servlet
  • 实现接口中的方法
  • 配置Servlet
//在web.xml里进行配置
<servlet>
   <servlet-name>demo</servlet-name>
   <servlet-class>com.pan.servlet.ServletDemo</servlet-class>
</servlet>

<servlet-mapping>
   <servlet-name>demo</servlet-name>
   <url-pattern>/demo</url-pattern>
</servlet-mapping>

Servlet是运行在服务端的一个Java类,
该类的功能是:获得客户端请求并向客户端响应的,Servlet并不负责业务处理;

3. Servlet的执行原理

1.当服务器接收到客户端浏览器的请求后,会解析请求url路径,获取访问的Servlet的路径资源。
2.查找web.xml,是否有对应的 <url-pattern> 标签体内容。
3.如果有,则找到对应<servlet-class>全类名。
4.tomcat会将字节码文件加载进内存,创建对象。
5.调用其方法。

4. Servlet中的生命周期方法

(1)init()方法:在Servlet被创建时,只执行一次

Servlet什么时候被创建?
1.默认情况下,在第一次被访问的时候创建
2.当然,也可以配置Servlet创建的时机
<servlet>标签下进行配置:
(1).第一次被访问时创建,可以设置<load-on-startup>的值为负数
(2).在服务器启动时创建,设置<load-on-startup>的值为0或者正数

该方法只执行一次,说明Servlet在内存中止存在一个对象,Servlet是单例的。
当多个用户进行访问时,可能会出现线程安全问题。解决的办法就是我们不要在Servlet中定义成员变量,即使定义了成员变量,也不要对其进行修改。

(2)service()方法:是用来提供服务的,会被多次执行

每次访问Servlet时,service方法都会被执行一次。

(3)destory()方法:Servlet被销毁时执行,只执行一次

Servlet被销毁时执行,服务器关闭时被销毁。
只有服务器正常关闭时,才会调用destory方法。
destory方法在Servlet被销毁前执行,一般用于释放资源。

5. Servlet3.0
在之前我们配置Servlet时需要配置web.xml文件,有多少个Servlet就需要配置多少次,会比较麻烦。Servlet3.0提供了注解配置,可以不需要web.xml。

  1. 创建一个javaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
  2. 定义一个类,实现Servlet接口
    public class ServletDemo implements Servlet
  3. 实现接口中的方法
  4. 在类上使用@WebServlet注解,进行配置
    @WebServlet(“资源路径”) =====》 @WebServlet("/demo")

6. Servlet的体系结构
Servlet是一个接口,GenericServlet是一个抽象类,HttpServlet也是一个抽象类。

继承Servlet,就要实现相关所有的方法,但是我们只会用到service方法。
因此我们可以选择继承其他两个抽象类.
1.GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象。将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可。
2.HttpServlet:对http协议的一种封装,简化操作。继承HttpServlet,复写doGet/doPost方法。

7. Servlet相关配置
urlpartten:Servlet访问路径。
(1)一个Servlet可以定义多个访问路径:@WebServlet({"/xx","/xxx","/xxxx"})
(2)路径定义的规则:

  • /xxx:路径匹配
  • /xxx/xxx:多层路径,目录结构
  • *.do:扩展名匹配(使用这种方法时,注意前边不要写斜杆)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值