Servlet:运行在服务器端的小程序

Servlet是一个接口,定义了Java类被浏览器访问到(tomcat识别的规则)

将来定义一个类,实现Servlet接口,复写方法


快速入门:

1、创建JavaEE项目

选的时候改为Web项目应用程序

2、定义一个类,实现Servlet接口

3、实现接口中的抽象方法

4、配置Servlet

在web.xml配置

   <servlet>
        <servlet-name>demo1</servlet-name>
        <servlet-class>com.example.demo1.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo1</servlet-name>
        <url-pattern>demo1</url-pattern>
    </servlet-mapping>

 Servlet3.0:支持注解配置,可以不需要web.xml。在类上使用

省略形式

 @WebServlet("资源路径")


Servlet原理 :

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


Servlet的生命周期:

init:初始化方法,在Servlet被创建时执行一次

    *默认情况下,Servlet第一次被访问时 ,Servlet被创建<load-on-startup>值为负数

    *在服务器启动时,创建:<load-on-startup>值为正数

    *Servlet在内存中只存在一个对象,servlet是单例的。多个用户访问时,可能存在线程安全问题

 解决:尽量不定义成员变量,即使定义成员变量,也不要对其修改值。

可以配置执行Servlet创建时机

service:提供服务方法,每一次Servlet被访问时执行,执行多次

destory:在服务器正常关闭时执行

在Servlet销毁之前执行,一般用于释放资源。


*IDEA会为每一个tomcat部署的项目单独建立一份配置文件。

Using CATALINA_BASE:

*工作空间项目 和 tomcat部署的web项目(tomcat真正访问,对应工作空间项目web目录下的所有资源) 存储的位置不一样

*web-inf中的内容不能被浏览器不能直接访问,静态资源不要放在WEB-INF目录下

*tomcat调试:打端点,debug


Servlet体系结构:

Servlet----接口     

实现类:

GennericServlet (不用):将Servlet接口中的其他方法做了默认空实现,只将service方法作为抽象

  *定义Servlet类时,可以直接继承GennericServlet实现service(),其他方法根据需要覆盖重写

HTTPServlet(用):

对HTTP协议的一种封装,简化操作

判断请求方式:req.getMethod()   get/post

String method=req.getMethod();
if("GET".equals(method))
else if("POST".equals(method)){

}

在HTTPServlet可以直接使用doGet,doPost 

定义类继承HTTPServlet,重写doGet,doPost方法。

 通过浏览器直接调用/demo2执行doGet方法,通过表单提交执行doPost方法


Servlet相关配置:

String[] urlpartterns:访问路径

可以为一个资源设置多个路径

 路径定义规则:

/xxx   ,  /xxx/xxx  ,*.do(通配符)(优先级最低)

 

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐