当前位置:网站首页>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域:公共的,都可以调用在整个项目运行期间,存储全局信息,一些重要信息不建议使用。
最后大家:
新的一周元气满满(*^▽^*)!!!
边栏推荐
- captcha-killer验证码识别插件
- Bing Dwen Dwen official NFT blind box will be sold for about 626 yuan each; JD home programmer was sentenced for deleting the library and running away; Laravel 9 officially released | Sifu weekly
- XSS之冷门事件
- 《统计学》第八版贾俊平第六章统计量及抽样分布知识点总结及课后习题答案
- Hackmyvm target series (5) -warez
- Build domain environment (win)
- Attach the simplified sample database to the SQLSERVER database instance
- JVM memory model concept
- Hcip -- MPLS experiment
- 网络基础详解
猜你喜欢
Middleware vulnerability recurrence Apache
Constants, variables, and operators of SystemVerilog usage
How to turn wechat applet into uniapp
How to understand the difference between technical thinking and business thinking in Bi?
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
Library management system
SystemVerilog discusses loop loop structure and built-in loop variable I
记一次edu,SQL注入实战
Tencent map circle
Chain team implementation (C language)
随机推荐
Bing Dwen Dwen official NFT blind box will be sold for about 626 yuan each; JD home programmer was sentenced for deleting the library and running away; Laravel 9 officially released | Sifu weekly
Applet Web Capture -fiddler
Ucos-iii learning records (11) - task management
小程序web抓包-fiddler
网络基础之路由详解
How to test whether an object is a proxy- How to test if an object is a Proxy?
Internet Management (Information Collection)
Experiment 7 use of common classes
"Gold, silver and four" job hopping needs to be cautious. Can an article solve the interview?
Network layer - simple ARP disconnection
An unhandled exception occurred when C connected to SQL Server: system Argumentexception: "keyword not supported:" integrated
Chain team implementation (C language)
HackMyvm靶机系列(2)-warrior
New version of postman flows [introductory teaching chapter 01 send request]
List and data frame of R language experiment III
Intranet information collection of Intranet penetration (I)
JDBC事务、批处理以及连接池(超详细)
网络层—简单的arp断网
Load balancing ribbon of microservices
搭建域环境(win)