Servlet的使用
创始人
2025-06-01 12:19:48

1.Servlet的含义

Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app。

Servlet 就是 Tomcat 这个 HTTP 服务器提供给 Java 的一组 API, 来完成构建动态页面这个任务。

2.Servlet 的生命周期。

生命周期即他每个阶段需要干的事情:

Servlet每个阶段的工作:

1.开始的时候,执行init;

2.每次收到请求,执行service;

3.销毁之前,执行destroy;

一个servlet程序,里面可以包含多个servlet,某个servlet的生死,不影响整个servlet的使用;

3.代码案例

3.1显示 HttpServletRequest 的常用属性

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/showRequest")
public class showRequest extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//搞个StringBuilder,把这些api的结果,统一写回到响应中StringBuilder stringBuilder = new StringBuilder();stringBuilder.append(req.getProtocol());stringBuilder.append(req.getMethod());stringBuilder.append(req.getRequestURI());stringBuilder.append(req.getContextPath());stringBuilder.append(req.getQueryString());resp.getWriter().write(stringBuilder.toString());}
}

3.2 获取GET请求中的query string 的内容

请求形如 /message?aa=10&bb=20

在Servlet 代码中获取到 aa 和 bb 的值, 并显示在页面上

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/message")
public class GetString extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String aa = req.getParameter("aa");String bb = req.getParameter("bb");resp.setContentType("text/html");resp.getWriter().write("aa = "+aa+" bb = "+bb);}
}

3.3获取 POST 请求中 body 的内容 

分别实现这两种 body 格式的处理:

  1. aa=10&bb=20
  2. { "aa": 10, "bb":20}

把 aa 和 bb 的值获取到, 展示到页面上.

第一种:

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/message")
public class GetString extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String aa = req.getParameter("aa");String bb = req.getParameter("bb");resp.setContentType("text/html");resp.getWriter().write("aa = "+aa+" classId = "+bb);}}


Document






 Document

第二种:

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
@WebServlet("/message2")
public class PostJson extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//super.doPost(req, resp);//通过这个方法来处理body为json格式的数据//直接吧req对象里 body 完整的读取出来//getInputStream//在流对象中读多少个字节,取决于Content-lengthint length = req.getContentLength();byte[] buffer = new byte[length];InputStream inputStream = req.getInputStream();inputStream.read(buffer);//把这个字节数组构造成String,打印出来String body = new String(buffer,0,length,"utf8");System.out.println("body = "+body);//设置返回值的格式类型htmlresp.setContentType("text/html");resp.getWriter().write(body);}
}

 使用postman构造post模拟请求:


 

相关内容

热门资讯

今年我省粮食产量达515.56... (来源:辽宁日报)转自:辽宁日报 图为在中储粮(盘锦)储运有限公司,装运粮食的重型卡车排起长队...
国家发展改革委部署促进投资止跌... (来源:辽宁日报)转自:辽宁日报 新华社北京12月13日电 (记者魏玉坤) 记者13日从全国发展和改...
江苏省实施《中华人民共和国森林... (来源:新华日报) 目 录 第一章 总则 第二章 森林、林木和林地权属管理...
姜堰数字化产品讲“活”理论 (来源:新华日报) □ 本报记者 卢佳乐 通讯员 姜宣 “王教授,您约我‘喝茶论道’,...
联合国维和部队在苏丹遇袭 6人... 转自:财联社【联合国维和部队在苏丹遇袭 6人死亡】财联社12月14日电,当地时间13日,苏丹武装部队...