Servlet入门

131 阅读3分钟

Servlet

什么是Servlet

1、Servlet是JavaEE规范之一。规范就是接口

2、Servlet就JavaWeb三大组件之一。三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。

3、Servlet是运行在服务器上的一个java小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。

ServletConfig类

什么是ServletConfig类

ServletConfig类从类名上来看,就知道是Servlet程序的配置信息类。

Servlet程序和ServletConfig对象都是由Tomcat负责创建,我们负责使用。

Servlet程序默认是第一次访问的时候创建,ServletConfig是每个Servlet程序创建时,就创建一个对应的ServletConfig对象

作用

1、可以获取Servlet程序的别名servlet-name的值

2、获取初始化参数init-param

3、获取ServletContext对象

ServletContext类

什么是ServletContext类

1、ServletContext是一个接口,它表示Servlet上下文对象

2、一个web工程,只有一个ServletContext对象实例。

3、ServletContext对象是一个域对象。

4、ServletContext是在web工程部署启动的时候创建。在web工程停止的时候销毁。

四个作用

1、获取web.xml中配置的上下文参数context-param

2、获取当前的工程路径,格式: /工程路径

3、获取工程部署后在服务器硬盘上的绝对路径

4、像Map一样存取数据(setAttribute(),getAttribute(),removeAttribute())

斜杠被服务器解析地址为:http://ip:port/工程名/,映射到IDEA代码的web目录

HttpServletRequest类

作用

每次只要有请求进入 Tomcat 服务器,Tomcat 服务器就会把请求过来的 HTTP 协议信息解析好封装到 Request 对象中。

然后传递到 service 方法(doGet 和 doPost)中给我们使用。我们可以通过 HttpServletRequest 对象,获取到所有请求的

信息。

常用方法

i. getRequestURI() 获取请求的资源路径

ii. getRequestURL() 获取请求的统一资源定位符(绝对路径)

iii. getRemoteHost() 获取客户端的 ip 地址

iv. getHeader() 获取请求头

v. getParameter() 获取请求的参数

vi. getParameterValues() 获取请求的参数(多个值的时候使用)

vii. getMethod() 获取请求的方式 GET 或 POST

viii. setAttribute(key, value); 设置域数据

ix. getAttribute(key); 获取域数据

x. getRequestDispatcher() 获取请求转发对象

请求转发

请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作叫请求转发。

image-20230403170008546

使用

RequestDispatcher requestDispatcher = req.getRequestDispatcher("/servlet2");

请求转发必须要以斜杠打头,/ 斜杠表示地址为:http://ip:port/工程名/ ,映射到IDEA代码的web目录

base标签

作用

base 标签设置页面相对路径工作时参照的地址

Web中斜杠的含义

在 web 中 / 斜杠 是一种绝对路径。

/ 斜杠 如果被浏览器解析,得到的地址是:http://ip:port/

/ 斜杠 如果被服务器解析,得到的地址是:http://ip:port/工程路径

HttpServletResponse类

作用

HttpServletResponse 类和 HttpServletRequest 类一样。每次请求进来,Tomcat 服务器都会创建一个 Response 对象传

递给 Servlet 程序去使用。HttpServletRequest 表示请求过来的信息,HttpServletResponse 表示所有响应的信息,

我们如果需要设置返回给客户端的信息,都可以通过 HttpServletResponse 对象来进行设置

请求重定向

image-20230403174728989

两种方式

请求重定向的第一种方案:

// 设置响应状态码 302 ,表示重定向,(已搬迁)

resp.setStatus(302);

// 设置响应头,说明 新的地址在哪里

resp.setHeader("Location", "http://localhost:8080");

请求重定向的第二种方案(推荐使用):

resp.sendRedirect("http://localhost:8080");