@WebServlet("/req-info")
public class GetRequestInfoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 我们只做打印(在 IDEA 的控制台上看到显示),不做响应(浏览器看不到,白屏)
// 1. 请求方法
String method = req.getMethod();
System.out.println("HTTP 方法: " + method);
System.out.println();
System.out.println();
String requestURI = req.getRequestURI();
System.out.println("requestURI: " + requestURI);
StringBuffer requestURL = req.getRequestURL();
System.out.println("requestURL: " + requestURL.toString());
String pathInfo = req.getPathInfo();
System.out.println("pathInfo: " + pathInfo);
String contextPath = req.getContextPath();
System.out.println("contextPath: " + contextPath);
String servletPath = req.getServletPath();
System.out.println("servletPath: " + servletPath);
String pathTranslated = req.getPathTranslated();
System.out.println("pathTranslated: " + pathTranslated);
String queryString = req.getQueryString();
System.out.println("queryString: " + queryString);
System.out.println();
System.out.println();
String serverName = req.getServerName();
System.out.println("serverName: " + serverName);
int serverPort = req.getServerPort();
System.out.println("serverPort: " + serverPort);
String scheme = req.getScheme();
System.out.println("schema: " + scheme);
String protocol = req.getProtocol();
System.out.println("protocol: " + protocol);
System.out.println();
System.out.println();
// 请求头们(本质就是一组 Key-Value;不同之处 Key 是可以重复的)
Enumeration<String> headerNames = req.getHeaderNames();
// Enumeration 类似 Iterator(hasNext() + next())
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
String value = req.getHeader(name);
System.out.println(name + " := " + value);
}
}
}
@WebServlet("/output")
public class OutputResponseText extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html"); // text/plain application/json
PrintWriter writer = resp.getWriter();
writer.printf("输出");
}
}
@WebServlet("/input")
public class InputRequestParameters extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String username = req.getParameter("username");
if (username == null) {
// 没有 key
}
if (username.trim().isEmpty()) {
// 有 key 没有 value
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String username = req.getParameter("username");
if (username == null) {
// 没有 key
}
if (username.trim().isEmpty()) {
// 有 key 没有 value
}
}
}
上传文件前端
DOCTYPE html>
<html lang="zh-hans">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<form method="post" action="/upload.do" enctype="multipart/form-data">
<input type="text" name="username">
<input type="password" name="password">
<input type="file" name="image">
<button>上传button>
form>
body>
html>
@WebServlet("/first-visit")
public class FirstVisitServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 第一次访问,需要办会员卡(cookie)+ 准备专属的文件柜(session)
// 这个 session 对象就是你的专属服务柜
HttpSession session = req.getSession(true);
session.setAttribute("first-visit-at", new Date());
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/plain");
resp.getWriter().println("办理会员成功");
// 1. 直接访问其他 URL,观察 请求中有没有 Cookie 头、观察应用/Cookie 有没有值
// 2. 访问 /first-visit,观察响应头中的 Set-Cookie
// 3. 再次访问其他 URL,观察 请求中有没有 Cookie 头、观察应用/Cookie 有没有值
}
}
@WebServlet("/get-first-time")
public class GetFirstTimeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/plain");
PrintWriter writer = resp.getWriter();
HttpSession session = req.getSession(true); // 如果是会员,则返回之前的;如果不是,则新建
if (session == null) {
writer.println("没有专属文件柜,不是会员");
return;
}
Object o = session.getAttribute("first-visit-at");
if (o == null) {
writer.println("文件柜有,但纸上没有记录内容");
return;
}
Date date = (Date) o;
writer.println(date);
}
}
@WebServlet("/only-get-cookie")
public class OnlyGetCookieServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie[] cookies = req.getCookies();
for (Cookie cookie : cookies) {
System.out.println(cookie.getName() + " => " + cookie.getValue());
}
}
}
OnlySetCookieServlet
@WebServlet("/only-set-cookie")
public class OnlySetCookieServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie cookie1 = new Cookie("name", "peixinchen");
cookie1.setMaxAge(120); // 设置过期时间
// 其他
resp.addCookie(cookie1);
Cookie cookie2 = new Cookie("gender", "male");
resp.addCookie(cookie2);
}
}