WEB核心【ServletContext阶段重点,案例记录登录人数】第十章
💟作者简介:大家好呀!我是爱吃豆的土豆
📝个人主页:【爱吃豆的土豆的博客_CSDN博客-Web知识,spring框架,vue领域博主】
🏆博主信息:人必有所执,方能有所成🐋希望大家多多支持😘一起进步呀!
🌈若有帮助,还请【关注➕点赞➕收藏】,不行的话我再努力努力呀!💪
⚡版权声明:本文由【爱吃豆的土豆】原创、在CSDN首发、需要转载请联系博主。
目录
1,ServletContext阶段重点
1.1:简述及获取
相当于某个项目的身份证 :一个项目有一个ServletContext对象
作用:
获取项目配置信息
域对象(项目内信息传递与共享)
获取项目内资源信息
-
@WebServlet({"/d1"})
-
public class Demo1Servlet extends BaseServlet {
-
public void run1(){
-
//默认情况下:项目中何处以何种方式获取到的ServletContext对象,都是同一个
-
ServletContext servletContext = getServletContext();
-
ServletContext servletContext2 = getServletConfig().getServletContext();
-
System.out.println(servletContext==servletContext2);//true
-
}
-
}
1.2:设置和获取全局初始化参数
设置全局初始化参数:
获取全局初始化参数:
servletContext.getInitParameter("name");//若获取的键值对不存在的,返回Null。存在返回
value字符串
-
public void run2(){
-
ServletContext servletContext = getServletContext();
-
System.out.println(servletContext.getInitParameter("encoding"));
-
System.out.println(servletContext.getInitParameter("myname"));
-
System.out.println("---------");
-
Enumeration<String> e = servletContext.getInitParameterNames();
-
while (e.hasMoreElements()){
-
System.out.println(e.nextElement());
-
}
-
}
小结:
若某些键值对需要在任意Servlet中进行获取,把该键值对配置成全局初始化参数。
1.3:域对象
HttpServletRequest:在于请求转发。
相当于JavaSE中Map集合。
域对象的value值:都是Object类型。
-
//需求:run3 run4方法,run3存储键值对 ,run4读取键值对。 run3 和 run4没有关联
-
//request 和 ServletContext 传递数据
-
//reMsg = request
-
//scMsg = ServletContext
-
public String run3(){
-
getRequest().setAttribute("reMsg","request");
-
getServletContext().setAttribute("scMsg","ServletContext");
-
return null;
-
}
-
-
public String run4(){
-
System.out.println(getRequest().getAttribute("reMsg"));
-
System.out.println(getServletContext().getAttribute("scMsg"));
-
return null;
-
}
request作用范围:一次请求和响应之间 (多次请求转发)
ServletContext作用范围:(服务器启动,ServletContext创建。服务器关闭,ServletContext销毁)
2,案例1:记录登录成功人数
关键点:
1、访问Servlet
2、ServletContext,在整个项目内进行数据共享、统计
流程:
代码实现:
login.jsp
-
<form class="form-horizontal" method="post" action="/day07_1/user">
-
<input type="hidden" name="method" value="login"/>
UserServlet
-
@WebServlet({"/user"})
-
public class UserServlet extends BaseServlet {
-
public String login(){
-
//1、假设用户一定登录成功【无代码】
-
//2、登录成功人数统计
-
//2.1、尝试从ServletContext中获取count
-
ServletContext servletContext = getServletContext();
-
Object count = servletContext.getAttribute("count");
-
//2.2、判断count是否为Null
-
if(count==null){
-
//2.3、若为null,说明第一次统计,次数为1
-
servletContext.setAttribute("count",1);
-
}else{
-
//2.4、若不为null,说明第N次统计,原来次数+1
-
servletContext.setAttribute("count",Integer.parseInt(count.toString())+1);
-
}
-
//3、跳转msg.jsp展示
-
return "forward:/msg.jsp";
-
}
-
}
msg.jsp
<h1>您是第${count}位登录成功的用户!</h1>
小结:
Request作用域太小,导致无法给所有用户进行统计。
ServletContext作用域,可以在项目内部进行统计。
最后:
如果文章对您有帮助,就拿起小手赶紧给博主点赞💚评论❤️收藏💙 一下吧!
愿我们在未来的日子里。熠熠生辉!!!
文章来源: qianxu.blog.csdn.net,作者:爱吃豆的土豆,版权归原作者所有,如需转载,请联系作者。
原文链接:qianxu.blog.csdn.net/article/details/125115699
- 点赞
- 收藏
- 关注作者
评论(0)