JavaWeb~ 学习Servlet常见方法与生命周期( HTTP Request、HTTP Response、 Servlet Cookies、Servlet Session)

  • 实现代码

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.io.Writer;

public class HttpServletTest2 extends HttpServlet {

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String firstName = req.getParameter(“firstName”);

String secondName = req.getParameter(“secondName”);

String password = req.getParameter(“password”);

resp.setContentType(“text/html; charset=utf-8”);

Writer writer = resp.getWriter();

writer.write(“”);

writer.write("

firstName: " + firstName + “</h1”);

writer.write(“
”);

writer.write("

secondName: " + secondName + “

”);

writer.write(“
”);

writer.write("

password: " + password + “

”);

writer.write(“”);

}

}

  • 获取header部分

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.io.Writer;

import java.util.Enumeration;

public class HttpServletTest3 extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//resp.setContentType(“text/html; charset=utf-8”);

resp.setContentType(“text/html”);

resp.setCharacterEncoding(“utf-8”);

//返回的是一个枚举

Enumeration enumeration = req.getHeaderNames();

Writer writer = resp.getWriter();

writer.write(“”);

while (enumeration.hasMoreElements()) {

String header = enumeration.nextElement();

writer.write(“

” + header + ": " + req.getHeader(header) + “

”);

}

writer.write(“</html”);

}

}

操作HTTP Response头的方法

==================================================================================

在这里插入图片描述

  • 返回一个404

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

public class HttpServletTest5 extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// 得到一个 Tomcat 内置的错误页面.

resp.sendError(404);

}

}

  • 返回时间并设置一秒刷新一次

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.io.Writer;

import java.util.Date;

public class HttpServletTest4 extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// 每秒自动刷新

// 返回的页面中, 填写上当前时间.

// 获取当前时间

// System.currentTimeMillis();

// new Date();

// new Calender();

resp.setContentType(“text/html; charset=utf-8”);

//设置header部分 1 表示每间隔一秒

resp.setIntHeader(“Refresh”, 1);

Date date = new Date();

Writer writer = resp.getWriter();

writer.write(“”);

writer.write(“

” + date.toString() + “

”);

writer.write(“”);

}

}

  • 返回重定向

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

public class HttpServletTest6 extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//重定向到一个网页 这个方法自动帮我们设置了respond的状态码和状态描述等相关信息

resp.sendRedirect(“https://blog.youkuaiyun.com/Shangxingya/article/details/107295800”);

}

}

设置 HTTP 状态代码的方法

==============================================================================

在这里插入图片描述

Servlet 操作cookie方法

=================================================================================

在这里插入图片描述

  • 设置cookie

import javax.servlet.ServletException;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

public class HttpServletTest7 extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//构建一个Cookie

Cookie name = new Cookie(“userName”, “listen”);

Cookie password = new Cookie(“password”, “listenY”);

//把cookie写到respond中

resp.addCookie(name);

resp.addCookie(password);

resp.setContentType(“text/html; charset=utf-8”);

resp.getWriter().write(“

设置Cookie成功

”);

}

}

  • 或得cookie

import javax.servlet.ServletException;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.io.Writer;

public class HttpServletTest8 extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//获得Cookie字段

Cookie[] cookies = req.getCookies();

//将所有的cookie输出到响应报文中

resp.setContentType(“text/html; charset=utf-8”);

Writer writer = resp.getWriter();

writer.write(“”);

for (Cookie c : cookies

) {

writer.write(“

” + c.getName() + ": " + c.getValue() + “

”);

}

writer.write(“”);

}

}

  • 删除cookie

import javax.servlet.ServletException;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.io.Writer;

public class HttpServletTest10 extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//删除现有的cookie

//获取所有cookie 然后将这些cookie的生命时间设置为0

//将这些cookie保存在响应报文中

Cookie[] cookies = req.getCookies();

// 设置响应内容类型

resp.setContentType(“text/html; charset=utf-8”);

if (cookies != null) {

for (Cookie c : cookies

) {

c.setMaxAge(0);

resp.addCookie©;

}

Writer writer = resp.getWriter();

writer.write(“”);

writer.write(“

删除cookie成功

”);

} else {

Writer writer = resp.getWriter();

writer.write(“”);

writer.write(“

当前没有cookie

”);

}

}

}

Servlet 操作session方法

==================================================================================

在这里插入图片描述

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import java.io.IOException;

import java.io.Writer;

public class HttpServletTest9 extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// 1. 先获取 Session. 如果用户曾经没有访问过, 此时将创建新的 session

// 如果用户已经访问过了, 就获取到曾经的 Session

// 新用户访问:

// 这个操作就会自动生成一个 sessionId, 同时创建一个 httpSession 对象

// 把这个键值对放到内置的 hash 表中. 同时把 sessionId 写回到浏览器的

// Cookie 中

// 老用户访问:

// 根据请求中 Cookie 里的 sessionId, 在 hash 表中查, 找到对应的 session 对象

HttpSession session = req.getSession(true);

// 2.判断是否为新用户

Integer count = 1;

if (session.isNew()) {

//新用户

// 把 count 值写入到 session 对象中.

// httpSession 也可以当成是一个 hash 表.

session.setAttribute(“count”, count);

} else {

// 老用户

// 从 httpSession 中读取到 count 值

count = (Integer) session.getAttribute(“count”);

count++;

session.setAttribute(“count”, count);

}

resp.setContentType(“text/html; charset=utf-8”);

Writer writer = resp.getWriter();

writer.write(“”);

writer.write(“

” + session.getAttribute(“count”).toString() + “

”);

writer.write(“”);

}

}

Servlet文件上传理解

============================================================================

  • 前端表单
上传文件表单

选择上传的文件


  • 文件传输代码

import javax.servlet.ServletException;

import javax.servlet.annotation.MultipartConfig;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.Part;

import java.io.IOException;

import java.io.Writer;

//必须要有这个字段表示文件上传

@MultipartConfig

public class HttpServletTest11 extends HttpServlet {

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String loadPath = “D:\java\test\”;

//获取文件,文件在html中的name是“file”

Part imag = req.getPart(“file”);

//制作文件全路径

String path = loadPath + imag.getSubmittedFileName();

imag.write(path);

//如果上传成功就制作响应报文

resp.setContentType(“text/html; charset=utf-8”);

Writer writer = resp.getWriter();

writer.write(“”);

writer.write(“

写入成功

”);

writer.write("

路径为: " + path + “

”);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值