Servlet

目录

[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));
    }
}
相关推荐
汉堡大王952710 分钟前
Vue 3 + TS + Element Plus 实战:如何从零搭建企业级违章记录管理 SaaS 前端
前端·javascript·vue.js
minimoon_jojo12 分钟前
Ant Design 树形表格渲染原理
前端
海天鹰12 分钟前
屏幕颜色检测
javascript·html5
paopaokaka_luck18 分钟前
基于springboot3+vue3的音乐推荐系统(协同过滤算法、Echarts图形化分析)
前端·echarts
用户7917286761971 小时前
opencode-plugin-peers完全指南:OpenCode如何实现 Claude Code式跨会话消息
javascript
八号当铺1 小时前
使用 Figma Agent Kit:插件 + MCP + 还原 Skill,打通本地设计协作
前端·人工智能·ai编程
一心只读圣贤书1 小时前
AI 辅助前端国际化实践:从文案梳理到多语言资源治理
前端
无责任此方_修行中2 小时前
搓了一个国产大模型与 AI Agent 比价工具
前端·后端·ai编程
szephyr2 小时前
腾讯云 ADP 智能体的 Skills 配置变更后没有走灰度,直接全量替换出了问题怎么定位?
java·前端·腾讯云·腾讯云adp
夏雪coding2 小时前
nginx SPA 回落把 CSS 变成了 HTML:一个返回 200 却让样式失效的坑
前端·nginx