目录
[00 Servlet概述](#00 Servlet概述)
[01 Servlet的编写](#01 Servlet的编写)
[02 Servlet的配置](#02 Servlet的配置)
[03 HttpServletRequest对象](#03 HttpServletRequest对象)
00 Servlet概述
- 译为"服务器端小程序",本质上是一个Java接口,定义了服务器端程序必须实现的规范
- 在Web应用中的作用:
- 用于处理客户端发送的HTTP请求,生成相应的HTTP响应
- 可以实现用户认证、数据处理、页面跳转等功能
- 可以与其他技术结合使用,实现动态 Web 页面的生成
- Servlet的生命周期:
- 加载:容器加载类,并实例化一个对象
- 初始化:调用init()方法,进行初始化
- 服务:调用service()方法,处理请求
- 销毁:调用destroy()方法
01 Servlet的编写
java
// Servlet的编写
package test;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
// 以上为自动生成--------------------
// 1、创建Web项目
// 2、创建包
// 3、创建Java类,继承HttpServlet类,重写方法
// 4、设置@WebServlet注解,指定访问路径
@WebServlet("/test")
public class Servlet_test extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Hello Servlet!");
//OUT:Hello Servlet!
}
}
02 Servlet的配置
1、基于XML的配置
首先创建一个继承HttpServlet的类,并重写doGet、doPost等方法
在xml文件中,使用<servlet>和<servlet-mapping>标签来配置Servlet
XML
<web-app>
<!--servlet-name是Servlet的名称-->
<!--servlet-class是Servlet的完整类名-->
<servlet>
<servlet-name>ServletTest</servlet-name>
<servlet-class>test.ServletTest</servlet-class>
</servlet>
<!--url-pattern指定了访问该Servlet的URL路径-->
<servlet-mapping>
<servlet-name>ServletTest</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
</web-app>
2、基于注解的配置
在Servlet类上使用@WebServlet注解来指定URL模式
java
@WebServlet("/test")
03 HttpServletRequest对象
java
@WebServlet("/test")
public class Servlet_test extends HttpServlet {
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// HttpServletRequest对象的常用方法
// 最常用的是getParameter()方法
// 1、获取请求时的完整路径(从http到?前面)
String url=req.getRequestURL()+"";
System.out.println("URL:"+url);
// 2、获取请求时的部分路径(从站点名到?前面)
String uri=req.getRequestURI();
System.out.println("URI:"+uri);
// 3、获取请求时的参数(?后面的部分)
String queryString=req.getQueryString();
System.out.println("参数:"+queryString);
// 4、获取请求方式
String method=req.getMethod();
System.out.println("请求方式:"+method);
// 5、获取当前协议版本
String prototaol=req.getProtocol();
System.out.println("当前协议版本:"+prototaol);
// 6、获取项目的站点名
String webapp=req.getContextPath();
System.out.println("站点名:"+webapp);
// 7、获取指定名称的参数
String flag=req.getParameter("flag");
System.out.println("flag的参数值:"+flag);
// 8、获取指定名称的参数的所有参数值
String[] flags=req.getParameterValues("flags");
System.out.println("flags的参数值:"+ Arrays.toString(flags));
}
}