使用Servlet和JSP开发Java应用程序 ---- Servlet 介绍

1. Servlet 概念

什么是 Servlet

Servlet 是 Java 编写的服务器端程序
Servlet API 是一个可用于开发 Servlet 的类和接口的集合

Servlet 的工作原理

服务器端接收到请求后,服务器端先将请求发送给 Web 容器
Web 容器检查是否存在所请求的 Servlet 实例
如果存在 Servlet 实例,那么由 Servlet 处理客户端请求,并返回动态响应
如果不存在 Servlet 实例,那么创建并初始化 Servlet 实例,初始化完成后,再由 Servlet 处理客户端请求,返回动态响应

2. Servlet 类层次结构和生命周期方法

Servlet 类层次结构

Servlet 接口是 Servlet 类层次结构的根接口,所有的 Servlet 都需要直接或者间接地实现 Servlet 接口

Servlet 生命周期方法

javax.Servlet.Servlet 接口中定义了 Servlet 的生命周期方法:init()、service()、destroy()

Web 容器中按照以下的顺序调用 Servlet 的生命周期方法

  1. Web 容器创建一个或者多个 Servlet 类的实例
  2. Servlet 初始化时调用 init() 方法。Servlet 生命周期中只调用一次 init() 方法
  3. 调用 service() 方法,处理客户端请求
  4. service() 方法处理请求并向 Web 容器返回动态响应
  5. 如果有请求再次发生,重复3、4步骤
  6. Web 容器将 Servlet 实例删除前调用 destroy() 方法。Servlet 生命周期中只调用一次 destroy() 方法

3. 创建 Servlet

编写 Servlet

读取和处理客户端请求
我们可以通过 Servlet 接口提供的 getParament() 方法获取请求参数的值

String getParament(String arg);

获取用户发送的用户名

String userName = String getParament("name");

向客户端发送响应
我们向客户端发送数据需要获取 java.io.PrintWrite 对象
使用 Servlet 接口提供的 getWriter() 方法来获取 PrintWriter 对象

PrintWriter out = response.getWriter();

发送的内容可以是字符串类型的数据,也可以是 html 页面类型的数据

编译并封装 Servlet(注册 Servlet)

方法一:web.xml文件

web.xml 文件在 WEB-INF 文件下
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" 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">
    <servlet>
        <description>登录请求</description>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.qdu.servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

web.xml 各类属性

  1. version:指定架构的版本
  2. xmlns:指定部署描述符架构的命名空间
  3. xsi:指定架构的位置

< Servlet > 标记包含服务器的信息

  1. < servlet-name >:显示 Servlet 的名称
  2. < url-pattern >:通过其访问 Servlet
  3. < servlet-class >:Servlet 类的名称

方法二:@WebServlet("/url")
在编写 Servlet 前,添加 @WebServlet("/url") 用于实现 Servlet 的注册

urlPatterns 和 value 属性功能等效,都用于指定 servlet 的 url 模式

@WebServlet(name = "studentInfoServlet", value = "/sis")
@WebServlet(name = "studentInfoServlet", urlPatterns = "/sis")

也可以不指定 servlet 的 name ,默认名是类名,但是首字母小写

@WebServlet(value = "/sis")
@WebServlet(urlPatterns = "/sis")

如果只需要指定url模式可以指定多个,如果有多个,以字符串数组的形式给出就可以

@WebServlet(value = "/sis")
@WebServlet(value = {"/sis","/aaa","/bbb"})

urlPatterns 和 value 可以省略

@WebServlet("/sis")

将 Servlet 部署为 Java EE 应用程序

在访问应用程序前,应该先将其部署到 Web 应用服务器,如 Tomcat 或 Glassfish 等
在这里插入图片描述

通过浏览器访问 Servlet

我们可以直接通过地址栏输入 Servlet 的 url 来进行访问
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在人间负债^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值