Singerw's Repository Singerw's Repository
首页
  • 相关文章

    • HTML相关文章
    • CSS相关文章
    • JavaScript相关文章
  • 学习笔记

    • JavaScript笔记
    • ES6笔记
    • Vue笔记
  • 相关文章

    • Spring相关文章
    • SpringBoot相关文章
    • MyBatis相关文章
    • MySQL相关文章
  • 学习笔记

    • SpringBoot笔记
    • Spring笔记
    • MyBatis笔记
    • MySQL笔记
    • JavaWeb笔记
    • JavaCore笔记
  • 学习笔记

    • Linux笔记
    • Git笔记
    • 技术文档
  • 偏门技术

    • GitHub技巧
    • 博客搭建
    • 科学上网
  • 安装教程

    • JDK
    • MySQL
    • Node.js
    • Linux
  • 终身学习
  • 面试人生
  • 心情杂货
  • 生活随笔
  • 归档
  • 标签
GitHub (opens new window)

Singerw

谁能够凭爱意将富士山私有
首页
  • 相关文章

    • HTML相关文章
    • CSS相关文章
    • JavaScript相关文章
  • 学习笔记

    • JavaScript笔记
    • ES6笔记
    • Vue笔记
  • 相关文章

    • Spring相关文章
    • SpringBoot相关文章
    • MyBatis相关文章
    • MySQL相关文章
  • 学习笔记

    • SpringBoot笔记
    • Spring笔记
    • MyBatis笔记
    • MySQL笔记
    • JavaWeb笔记
    • JavaCore笔记
  • 学习笔记

    • Linux笔记
    • Git笔记
    • 技术文档
  • 偏门技术

    • GitHub技巧
    • 博客搭建
    • 科学上网
  • 安装教程

    • JDK
    • MySQL
    • Node.js
    • Linux
  • 终身学习
  • 面试人生
  • 心情杂货
  • 生活随笔
  • 归档
  • 标签
GitHub (opens new window)
  • CSS基础知识
  • HTML基础知识
  • JavaScript
  • jsp 动态网页开发技术
  • JSTL和EL表达式
  • Servlet 指南
    • 一、JavaWeb 简介
      • 1.1. Web 应用程序
      • 1.2. 常见 Web 服务器
    • 二、Servlet 简介
      • 2.1 什么是Servlet
      • 2.2 Servlet 任务
      • 2.3 Servlet 生命周期
    • 三、 注解:@WebServlet:
    • 四、Servlet API
      • 4.1 HttpServletRequest
      • 4.2 HttpServletResponse
      • 4.3 HttpSession
      • 4.4 ServletContext
  • 《JavaWeb》学习笔记
Singerw
2021-08-22

Servlet 指南

# Servlet 指南

# 一、JavaWeb 简介

# 1.1. Web 应用程序

Web,在英语中 web 即表示网页的意思,它用于表示 Internet 主机上供外界访问的资源。

Web 应用程序是一种可以通过 Web 访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。

Internet上供外界访问的 Web 资源分为:

  • 静态 web 资源:指web 页面中供人们浏览的数据始终是不变。常见静态资源文件:html、css、各种图片类型(jpg、png)
  • 动态 web 资源:指 web 页面中供人们浏览的数据是由程序产生的,不同时间点访问 web 页面看到的内容各不相同。常见动态资源技术:JSP/Servlet、ASP、PHP

# 1.2. 常见 Web 服务器

  • Tomcat (opens new window)
  • Jetty (opens new window)
  • Resin (opens new window)
  • Apache (opens new window)
  • Nginx (opens new window)
  • WebSphere (opens new window)
  • WebLogic (opens new window)
  • JBoss (opens new window)

# 二、Servlet 简介

# 2.1 什么是Servlet

Servlet(Server Applet),Servlet是运行在服务器端的组件,能够给客户端返回动态页面,即小服务程序或服务连接器。Servlet是 Java 编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态 Web 内容。

一个servlet应该继承HttpServlet,重写doGet和doPost等方法;可以使用 @WebServlet来注解来标识urlmapping等信息。

多个客户端访问同一个Servlet时,不再创建新的对象,而是共用同一个Servlet对象。可以说,Servlet是多线程单实例的。

  • 狭义的 Servlet是指 Java 实现的一个接口。
  • 广义的 Servlet是指任何实现了这个Servlet接口的类。

Servlet 运行于支持 Java 的应用服务器中。从原理上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于 HTTP协议的Web 服务器。

# 2.2 Servlet 任务

  • 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
  • 读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
  • 处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
  • 发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
  • 发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。

# 2.3 Servlet 生命周期

  1. 加载 - 第一个到达服务器的 HTTP 请求被委派到 Servlet 容器。容器通过类加载器使用Servlet 类对应的文件加载 servlet,将类加载到JVM中.;
  2. 初始化 - Servlet通过调用 init () 方法进行初始化,只会在第一次访问的时候初始化一次。
  3. 服务 - Servlet 调用 service() 方法来处理客户端的请求,请求一次就执行一次。
  4. 销毁 - Servlet 通过调用 destroy() 方法终止(结束),重新启动或者停止Tomcat时Servlet销毁。
  5. 卸载 - Servlet是由 JVM 的垃圾回收器进行垃圾回收的。

  • 类加载和构造
  • 初始化
  • 服务
  • 销毁

# 三、 注解:@WebServlet:

从Servlet3.0开始,配置Servlet支持注解方式,但还是保留了配置web.xml方式,使用Servlet有两种方式:

属性名 类型 描述
name String 指定Servlet 的 name 属性,等价于 <servlet-name>。如果没有显式指定,则该 Servlet 的取值即为类的全限定名。
value String[] 该属性等价于 urlPatterns 属性。两个属性不能同时使用。
urlPatterns String[] 指定一组 Servlet 的 URL 匹配模式。等价于<url-pattern>标签。
loadOnStartup int 指定 Servlet 的加载顺序,等价于 <load-on-startup>标签。
initParams WebInitParam[] 指定一组 Servlet 初始化参数,等价于<init-param>标签。
asyncSupported boolean 声明 Servlet 是否支持异步操作模式,等价于<async-supported> 标签。
description String 该 Servlet 的描述信息,等价于 <description>标签。
displayName String 该 Servlet 的显示名,通常配合工具使用,等价于 <display-name>标签。

WebServlet中的重要属性详解:

loadOnStartup属性:标记容器是否在启动应用时就加载Servlet,默认不配置或数值为负数时表示客户端第一次请求Servlet时再加载;0或正数表示启动应用就加载,正数情况下,数值越小,加载该Servlet的优先级越高;默认值为-1.

// loadOnStartup = 0 0或正数表示启动应用就加载,正数情况下,数值越小,加载该Servlet的优先级越高;默认值为-1.
// urlPatterns/value属性: String[]类型,可以配置多个映射,urlPatterns/value是一样的,用哪个都可以。

@WebServlet(urlPatterns = "/news",loadOnStartup = 0)
1
2
3
4

urlPatterns/value属性: String[]类型,可以配置多个映射。urlPatterns/value是一样的,用哪个都可以,请求地址就是实际访问的Servlet地址。

urlPatterns的规则:

/*:拦截所有

*.do:拦截指定后缀,例如a.do,index.do

/index/test 或者 /UserServlet:拦截路径

/*.do是非法的,启动会报错
1
2
3
4
5
6
7

WebServlet源码:

package javax.servlet.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@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 "";
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

# 四、Servlet API

# 4.1 HttpServletRequest

HttpServletRequest:负责处理请求,在servlet中使用:

HttpServletRequest的常见方法:

  • request.getParameter("newstitle") 获取传递的参数的值,返回值是一个String类型.
  • request.getParameterValues("cks") 获取传递的参数的值,返回值是一个String[]类型.
  • request.setCharacterEncoding("utf-8") 和请求页面的编码要一致;
  • request.getRemoteAddr() 得到客户端请求的ip地址
  • String contextPath = request.getContextPath() 请求的上下文 /newsSys
  • request.getRequestDispatcher("index.jsp").forward(request, response) 页面的转发

# 4.2 HttpServletResponse

# 4.3 HttpSession

# 4.4 ServletContext

编辑 (opens new window)
#JavaWeb
JSTL和EL表达式

← JSTL和EL表达式

最近更新
01
Maven资源导出问题终极版
10-12
02
《MyBatis-Plus》学习笔记
10-07
03
MyBatis-Plus—配置日志
10-07
更多文章>
Theme by Vdoing | Copyright © 2020-2021 版权所有 | repository.singerw.com
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×