当前位置:网站首页>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域:公共的,都可以调用在整个项目运行期间,存储全局信息,一些重要信息不建议使用。
最后大家:
新的一周元气满满(*^▽^*)!!!
边栏推荐
- SQL注入
- Experiment 6 inheritance and polymorphism
- HackMyvm靶机系列(7)-Tron
- 7-4 hash table search (PTA program design)
- 内网渗透之内网信息收集(二)
- 内网渗透之内网信息收集(三)
- Force deduction 152 question multiplier maximum subarray
- Intel oneapi - opening a new era of heterogeneity
- Mathematical modeling idea of 2022 central China Cup
- [paper reproduction] cyclegan (based on pytorch framework) {unfinished}
猜你喜欢
Xray and burp linkage mining
Intranet information collection of Intranet penetration (4)
How does SQLite count the data that meets another condition under the data that has been classified once
Network layer - simple ARP disconnection
Xray and Burp linked Mining
内网渗透之内网信息收集(三)
HackMyvm靶机系列(2)-warrior
List and data frame of R language experiment III
JDBC read this article is enough
SystemVerilog discusses loop loop structure and built-in loop variable I
随机推荐
Hackmyvm target series (7) -tron
xray与burp联动 挖掘
AQS details
Hackmyvm target series (2) -warrior
On the idea of vulnerability discovery
Overview of LNMP architecture and construction of related services
Force deduction 152 question multiplier maximum subarray
HackMyvm靶机系列(7)-Tron
Hackmyvm target series (1) -webmaster
Wei Shen of Peking University revealed the current situation: his class is not very good, and there are only 5 or 6 middle-term students left after leaving class
网络基础之路由详解
7-5 staircase upgrade (PTA program design)
sqqyw(淡然点图标系统)漏洞复现和74cms漏洞复现
Sentinel overall workflow
[VMware abnormal problems] problem analysis & Solutions
MySQL learning notes (stage 1)
Applet Web Capture -fiddler
外网打点(信息收集)
Xray and burp linkage mining
Library management system