当前位置:网站首页>servlet中 servlet context与 session与 request三个对象的常用方法和存放数据的作用域。
servlet中 servlet context与 session与 request三个对象的常用方法和存放数据的作用域。
2022-07-06 09:23:00 【飘飘~】
提示:context,session,request,作为Servlet之间重要的传值手段,对于他们作用域的区分,使我们学习的重难点。
目录
HttpSession:一次会话,当session销毁时结束(默认为短暂会话,若要持久会话需要设置最大存活期session.setMaxInactiveInterval(秒数);)。
前言:本篇文章我们将从三者的基本概念开始进行阐述,从三者之间的优缺点入手,进而分析他们之间作用域的异同。
一、Servlet的三大数据存放对象
①ServletContext
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过config.getServletContext()方法获得ServletContext对象。
②HttpSession
创建于服务器端,保存于服务器,维护于服务器端,每创建一个新的Session,服务器端都会分配一个唯一的ID,并且把这个ID保存到客户端的Cookie中,保存形式是以JSESSIONID来保存的。
③HttpServletRequest
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。
三者公共方法(API)
存储数据:setAttribute(name,value);
获取数据:getAttribute(name);
删除数据: removeAttribute(name);
二、作用域
ServletContext:(服务器启动到服务器关闭。)
Test01
package com.ape.view;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
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 org.thymeleaf.context.WebContext;
/**
* Servlet implementation class Test01
*/
@WebServlet("/Test01")
public class Test01 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 处理乱码
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
//获取资源
PrintWriter out = response.getWriter();
ServletContext context = getServletContext();
//request域
String name = "猪八戒";
context.setAttribute("name", name);
//打印到页面
out.print("页面1"+context.getAttribute("name"));
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Test02
package com.ape.view;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Test02
*/
@WebServlet("/Test02")
public class Test02 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 处理乱码
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
//获取资源
PrintWriter out = response.getWriter();
ServletContext context = getServletContext();
//request域
//打印到页面
out.print("页面2"+context.getAttribute("name"));
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
运行结果:
当前edge浏览器都可以请求到


换一个火狐浏览器也可以请求到

HttpSession:一次会话,当session销毁时结束(默认为短暂会话,若要持久会话需要设置最大存活期session.setMaxInactiveInterval(秒数);)。
Test01
package com.ape.view;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
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 javax.servlet.http.HttpSession;
import org.thymeleaf.context.WebContext;
/**
* Servlet implementation class Test01
*/
@WebServlet("/Test01")
public class Test01 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 处理乱码
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
//获取资源
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
//request域
String name = "沙和尚";
session.setAttribute("name", name);
//打印到页面
out.print("页面1"+session.getAttribute("name"));
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Test02
package com.ape.view;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
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 javax.servlet.http.HttpSession;
/**
* Servlet implementation class Test02
*/
@WebServlet("/Test02")
public class Test02 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 处理乱码
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
//获取资源
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
//request域
//打印到页面
out.print("页面2"+session.getAttribute("name"));
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
运行结果:
当前edge浏览器都可以请求到

换一个火狐浏览器请求不到

HttpServletRequest:一次请求。
Test01
package com.ape.view;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Test01
*/
@WebServlet("/Test01")
public class Test01 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 处理乱码
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
//获取资源
PrintWriter out = response.getWriter();
//request域
String name = "孙悟空";
request.setAttribute("name", name);
//打印到页面
out.print("页面1"+request.getAttribute("name"));
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Test02
package com.ape.view;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Test02
*/
@WebServlet("/Test02")
public class Test02 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 处理乱码
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
//获取资源
PrintWriter out = response.getWriter();
//request域
//打印到页面
out.print("页面2"+request.getAttribute("name"));
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
运行结果:

当进行转发后: (地址栏不变,但request请求完成了)
三、 使用场景
Request域:跟当前操作有关,可以通过转发传值到其他页面。
Session域:是一次回话,只能用于当前浏览器,适用于跟用户信息相关的,比如保存登录信息。
application域:公共的,都可以调用在整个项目运行期间,存储全局信息,一些重要信息不建议使用。
最后大家:
新的一周元气满满(*^▽^*)!!!
边栏推荐
- 《统计学》第八版贾俊平第六章统计量及抽样分布知识点总结及课后习题答案
- 《统计学》第八版贾俊平第十四章指数知识点总结及课后习题答案
- Intranet information collection of Intranet penetration (3)
- Record once, modify password logic vulnerability actual combat
- Hackmyvm target series (1) -webmaster
- Harmonyos JS demo application development
- Library management system
- 《统计学》第八版贾俊平第十章方差分析知识点总结及课后习题答案
- C language file operation
- Detailed explanation of network foundation
猜你喜欢

Markdown font color editing teaching

记一次edu,SQL注入实战

Captcha killer verification code identification plug-in

Experiment 6 inheritance and polymorphism

Record once, modify password logic vulnerability actual combat

Xray and burp linkage mining

《統計學》第八版賈俊平第七章知識點總結及課後習題答案

JVM memory model concept

Middleware vulnerability recurrence Apache

内网渗透之内网信息收集(五)
随机推荐
Hackmyvm target series (3) -visions
Constants, variables, and operators of SystemVerilog usage
Harmonyos JS demo application development
HackMyvm靶机系列(4)-vulny
Intel oneapi - opening a new era of heterogeneity
HackMyvm靶机系列(1)-webmaster
Low income from doing we media? 90% of people make mistakes in these three points
搭建域环境(win)
Attach the simplified sample database to the SQLSERVER database instance
Solutions to common problems in database development such as MySQL
Experiment 9 input and output stream (excerpt)
Only 40% of the articles are original? Here comes the modification method
我的第一篇博客
[issue 18] share a Netease go experience
Xray and burp linkage mining
[insert, modify and delete data in the headsong educator data table]
Record once, modify password logic vulnerability actual combat
Applet Web Capture -fiddler
Library management system
Sqqyw (indifferent dot icon system) vulnerability recurrence and 74cms vulnerability recurrence