33.3 Servlet概念 、生命周期、idea2020.2使用注解

目录1 Servlet概念2 Servlet入门2.1 Servlet执行原理:3 Servlet生命周期3.1 init()方法3.2service()方法3.3 destroy()方法4注解5 Ideat与Tomcat相关配置1 Servlet概念Servlet概念:运行在服务器端的小程序 * Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。 * 将来我们自定义一个类,实现Servlet接口,复写方法...
摘要由CSDN通过智能技术生成

目录

1 Servlet概念

2 Servlet入门

2.1 Servlet执行原理:

3 Servlet生命周期

3.1 init()方法

3.2 service()方法

3.3 destroy()方法

4 注解

5 Ideat与Tomcat相关配置


1 Servlet概念

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

    * Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。
    * 将来我们自定义一个类,实现Servlet接口,复写方法。

2 Servlet入门

    1. 创建JavaEE项目


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

package cn.lws.web;

import javax.servlet.*;
import java.io.IOException;

public class ServletDemo01 implements Servlet{

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    /**
     * 提供服务的方法*/
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("hello servlet");
    }

    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
    }
}

    3. 配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
<!--    servlet配置-->
    <servlet>
        <servlet-name>aaa</servlet-name>
        <servlet-class>cn.lws.web.ServletDemo01</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>aaa</servlet-name>
        <url-pattern>/bbbb</url-pattern>
    </servlet-mapping>
</web-app>

4 执行

输入:http://localhost:8080/bbbb

 

2.1 Servlet执行原理

  1. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径(在web.xml文件中找url-partten)
  2. 如果有,则在找到对应的<servlet-class>全类名
  3. tomcat通过全类名将字节码文件加载进内存,并且创建其对象(全类名.newInstance())
  4. 调用其方法(调用ServletDemo.java中的service()方法)

3 Servlet生命周期

Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:

  • Servlet 初始化后调用 init () 方法。
  • Servlet 调用 service() 方法来处理客户端的请求。
  • Servlet 销毁前调用 destroy() 方法。
  • 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

现在让我们详细讨论生命周期的方法。

3.1 init()方法

init()方法在Servlet被创建时执行,且只执行一次。说明一个Servlet在内存中只存在一个对象,Servlet是单例的(多个用户同时访问时,可能存在线程安全问题。解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值)

 Servlet对象什么时候被创建?

默认情况下,第一次被访问时,Servlet被创建

配置执行Servlet的创建时机:如:<load-on-startup>0 </load-on-startup>  表示服务器启动时创建Servlet对象

值为负数,第一次被访问时,创建Servlet 。               值为0或正整数,服务器启动时创建Servlet (默认情况)

3.2 service()方法

每次访问Servlet时,Service方法都会被调用一次。

3.3 destroy()方法

destroy()方法,用于释放资源。Servlet执行destroy方法,只执行一次,只有服务器正常关闭,才会执行此方法


4 Servlet使用注解

1 创建java Modules,之后鼠标右击选择add Frameworks Support 

2 选择左边的javaEE,右边E Jave EE的版本version 是Java EE8

3 选择Web Application , 创建4.0版本

4 选择ok

5 打开Module是,添加Tomcat jar 包。如下图所示操作

6 项目结构(此时项目没有web.ml文件)

7 书写代码

在类上使用@WebServlet注解,进行配置

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/ServletTest01")
public class ServletTest01 implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("servlet 4.0...");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {
    }
}

测试:

浏览器输入

结果:

 

注解源码

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebServlet {
    String name() default "";

    String[] value() default {};

    String[] urlPatterns() default {};

    int loadOnStartup() default -1;

    WebInitParam[] initParams() default {};

    boolean asyncSupported() default false;

    String smallIcon() default "";

    String largeIcon() default "";

    String description() default "";

    String displayName() default "";
}

 

5 Ideat与Tomcat相关配置

1      IDEA会为每一个tomcat部署的项目单独建立一份配置文件(CATALINA_BASE)

打开我的项目

 

2 工作空间项目    和     tomcat部署的web项目

tomcat真正访问的是“tomcat部署的web项目”,"tomcat部署的web项目"对应着"工作空间项目" 的web目录下的所有资源

       WEB-INF目录下的资源不能被浏览器直接访问。

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值