java回顾:Servlet

本文详细介绍了Servlet的各个方面,从Servlet的介绍、作用到执行原理,包括Servlet的生命周期、配置加载、实现方式及映射路径配置规范。重点讲解了Servlet3.0的注解开发,提供了一种更简洁的配置方式。通过本文,读者可以全面了解Servlet的使用和工作流程。
摘要由CSDN通过智能技术生成

目录

一、Servlet

1、servlet介绍 

2、servlet作用

1.3 servlet入门

3、Servlet的执行原理

1.1 执行流程:

1.2 执行原理

4、servlet生命周期

1.1 生命周期的api

1.2 Servlet生命周期的api执行时机图解

 5、服务器启动,立刻加载Servlet对象

1.1 配置 

1.2  配置load-on-startup标签后servlet生命周期:

6、Servlet实现方式

1.1  实现Servlet方式二_自定义类继承GenericServlet

1.2 实现Servlet方式三_自定义类继承HttpServlet(掌握)

1.3  实现Servlet方式三_自定义类继承HttpServlet 流程

1.4 错误总结

7、 Servlet映射路径配置规范

7.2 目录匹配:/user/* 只要访问以/user开始的的路径都可以访问

7.3 后缀名匹配:*.do *.action 注意这里不能书写/ 访问以.do或者.action结尾的资源路径,后缀名都属于标识符

7.4 缺省路径:/ 如果上述三种路径都不满足就访问缺省路径。

8、绝对路径

9、相对路径

10、Servlet3.0注解开发(掌握)

10.1 步骤

10.2 测试 

11、修改idea创建注解的servlet模板

12、关于servlet3.0注解开发的疑问_配置路径省略了属性urlPatterns


创建web项目,新建普通项目,右键项目名点击add Fram...,勾选Web点ok;

一、Servlet

1、servlet介绍 

  1. Servlet是一个接口,即规范
  2. 定义的实现类必须实现接口中的所有的抽象方法
  3. Servlet全称Server Applet 服务器端的程序。是sun公司提供一套规范,用来处理客户端请求、响应给浏览器的动态web资源。其实servlet的实质就是java代码,通过java的API动态的向客户端输出内容,并且从客户端接收数据。
  4. 一个类要想通过浏览器被访问到,那么这个类就必须直接或间接的实现Servlet接口

2、servlet作用

  • 接收客户端的请求
  • 处理业务逻辑
  • 响应给浏览器客户端

 

1.3 servlet入门

1.创建web项目

2.在创建的web项目中自定义类实现Servlet接口

public class servlet入门 implements Servlet{

    ...重写方法
}

3.在自定义类中实现Servlet接口中的所有的抽象方法

4.在实现Servlet接口的service方法体中书写代码处理业务逻辑

void service(ServletRequest req, ServletResponse res)  

5.在web项目的核心配置文件web.xml中配置访问servlet的路径。

说明:这样配置是告知tomcat有具体的Servlet类需要被访问。

6.启动tomcat

7.在浏览器中访问servlet类

若@WebServlet注解无法使用,去tomcat包中把lservlet-api.jar 拷贝到项目的lib下add即可。

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_4_0.xsd"
         version="4.0">
    <!--告知tomcat以下类要被浏览器客户端访问-->
    <!--servlet 标签中配置要被访问的具体类,tomcat底层拿到具体的类全路径,然后通过反射技术,调用该
        类中的默认无参构造方法创建对象:
        Class clazz = class.forName("hhy.servlet入门");
        clazz.newInstance(); 调用该类中的默认无参构造方法创建对象-->
    <servlet>
        <!--随便定义,但在当前web.xml文件中必须唯一-->
        <servlet-name>hellowServlet</servlet-name>
        <!--
        1.这里配置要被访问类的全路径:包名.类名 右键类名copy r...
        -->
        <servlet-class>hhy.servlet入门</servlet-class>
    </servlet>

    <!--
        1.servlet-mapping :配置浏览器地址栏访问的虚拟路径和上面的类的之间映射关系
    -->
    <servlet-mapping>
        <!--该文本中必须和上述servlet标签中的 <servlet-name>文本值一致-->
        <servlet-name>hellowServlet</servlet-name>
        <!--浏览器访问该类的虚拟路径,这里在按照如下写-->
        <url-pattern>/hello </url-pattern>
    </servlet-mapping>
</web-app>

 测试:

//2.在创建的web项目中自定义类实现Servlet接口
public class servlet入门 implements Servlet{
    //3.在自定义类中实现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 {

        //4.在实现Servlet接口的service方法体中书写代码处理业务逻辑
        System.out.println("hello Servlet");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
    }
}

启动tomcat, 访问路径http://localhost:8080/hello(hello为web.xml中配置的),控制台打印service方法中的值。

3、Servlet的执行原理

1.1 执行流程:

1.2 执行原理

说明:

  1. 当点击run运行的时候,tomcat之所以会启动,是因为程序入口(main方法)在tomcat中
  2. tomcat开始运行,会加载web项目里面的配置文件web.xml(xml解析,读取数据),要是根据url-pattern(设置的路径) 找到对应的servlet-class
  3. 然后tomcat进入等待状态(永不停止,除非手动关闭)
  4. 当用户在浏览器中输入地址:http://localhost:8080/hello就会定位到tomcat的访问的项目下面的某个servlet中
  5. tomcat会根据 /hello 的servlet的虚拟路径 找到HelloServlet的全限定名
  6. tomcat底层通过反射创建HelloServlet的对象,并调用HelloServlet的service方法:
Class clazz = Class.forName("全限定名");
Servlet servlet = clazz.newInstance();//实际上HelloServlet对象,向上转型
servlet.service();

4、servlet生命周期

指一个对象从生(创建)到死(销毁)的一个过程

1.1 生命周期的api

// 1. servlet对象创建完毕,使用对象调用此方法,初始化方法,只有在第一次访问的时候执行一次
public void init(ServletConfig servletConfig);
// 2. 用户访问servlet时,调用此方法 (每次访问都会调用一次)
public void service(ServletRequest servletRequest, ServletResponse servletResponse);
// 3. servlet对象销毁时,调用此方法
public void destroy();

1.2 Servlet生命周期的api执行时机图解

 

反射调用无参构造方法创建对象 

public class servlet入门 implements Servlet{

    //反射根据w
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值