WEB核心【ServletContext阶段重点,案例记录登录人数】第十章

举报
爱吃豆的土豆 发表于 2022/09/25 05:15:26 2022/09/25
【摘要】 💟作者简介:大家好呀!我是爱吃豆的土豆     📝个人主页:【爱吃豆的土豆的博客_CSDN博客-Web知识,spring框架,vue领域博主】 🏆博主信息:人必有所执,方能有所成 🐋希望大家多多支持😘一起进步呀! 🌈若有帮助,还请【关注➕点赞➕收藏】,不行的话我再努力努力呀!💪 ⚡版...

💟作者简介:大家好呀!我是爱吃豆的土豆    
📝个人主页:【爱吃豆的土豆的博客_CSDN博客-Web知识,spring框架,vue领域博主
🏆博主信息:人必有所执,方能有所成

🐋希望大家多多支持😘一起进步呀!
🌈若有帮助,还请【关注点赞收藏】,不行的话我再努力努力呀!💪
⚡版权声明:本文由【爱吃豆的土豆】原创、在CSDN首发、需要转载请联系博主。

目录

1,ServletContext阶段重点

1.1:简述及获取

1.2:设置和获取全局初始化参数

1.3:域对象

2,案例1:记录登录成功人数

1,ServletContext阶段重点

1.1:简述及获取

相当于某个项目的身份证 :一个项目有一个ServletContext对象

作用:

获取项目配置信息

域对象(项目内信息传递与共享)

获取项目内资源信息


  
  1. @WebServlet({"/d1"})
  2. public class Demo1Servlet extends BaseServlet {
  3. public void run1(){
  4. //默认情况下:项目中何处以何种方式获取到的ServletContext对象,都是同一个
  5. ServletContext servletContext = getServletContext();
  6. ServletContext servletContext2 = getServletConfig().getServletContext();
  7. System.out.println(servletContext==servletContext2);//true
  8. }
  9. }

1.2:设置和获取全局初始化参数

设置全局初始化参数:

 获取全局初始化参数:

servletContext.getInitParameter("name");//若获取的键值对不存在的,返回Null。存在返回

value字符串

Servlet


  
  1. public void run2(){
  2. ServletContext servletContext = getServletContext();
  3. System.out.println(servletContext.getInitParameter("encoding"));
  4. System.out.println(servletContext.getInitParameter("myname"));
  5. System.out.println("---------");
  6. Enumeration<String> e = servletContext.getInitParameterNames();
  7. while (e.hasMoreElements()){
  8. System.out.println(e.nextElement());
  9. }
  10. }

小结:

若某些键值对需要在任意Servlet中进行获取,把该键值对配置成全局初始化参数。

1.3:域对象

HttpServletRequest:在于请求转发。

相当于JavaSE中Map集合。

域对象的value值:都是Object类型。


  
  1. //需求:run3 run4方法,run3存储键值对 ,run4读取键值对。 run3 和 run4没有关联
  2. //request 和 ServletContext 传递数据
  3. //reMsg = request
  4. //scMsg = ServletContext
  5. public String run3(){
  6. getRequest().setAttribute("reMsg","request");
  7. getServletContext().setAttribute("scMsg","ServletContext");
  8. return null;
  9. }
  10. public String run4(){
  11. System.out.println(getRequest().getAttribute("reMsg"));
  12. System.out.println(getServletContext().getAttribute("scMsg"));
  13. return null;
  14. }

 

request作用范围:一次请求和响应之间 (多次请求转发)

ServletContext作用范围:(服务器启动,ServletContext创建。服务器关闭,ServletContext销毁)

  

2,案例1:记录登录成功人数

关键点:

1、访问Servlet

2、ServletContext,在整个项目内进行数据共享、统计

流程:

 

代码实现:

login.jsp


  
  1. <form class="form-horizontal" method="post" action="/day07_1/user">
  2. <input type="hidden" name="method" value="login"/>

 UserServlet


  
  1. @WebServlet({"/user"})
  2. public class UserServlet extends BaseServlet {
  3. public String login(){
  4. //1、假设用户一定登录成功【无代码】
  5. //2、登录成功人数统计
  6. //2.1、尝试从ServletContext中获取count
  7. ServletContext servletContext = getServletContext();
  8. Object count = servletContext.getAttribute("count");
  9. //2.2、判断count是否为Null
  10. if(count==null){
  11. //2.3、若为null,说明第一次统计,次数为1
  12. servletContext.setAttribute("count",1);
  13. }else{
  14. //2.4、若不为null,说明第N次统计,原来次数+1
  15. servletContext.setAttribute("count",Integer.parseInt(count.toString())+1);
  16. }
  17. //3、跳转msg.jsp展示
  18. return "forward:/msg.jsp";
  19. }
  20. }

 msg.jsp

<h1>您是第${count}位登录成功的用户!</h1>
 

 

小结:

Request作用域太小,导致无法给所有用户进行统计。

ServletContext作用域,可以在项目内部进行统计。

最后:

        如果文章对您有帮助,就拿起小手赶紧给博主点赞💚评论❤️收藏💙 一下吧! 

       愿我们在未来的日子里。熠熠生辉!!!

文章来源: qianxu.blog.csdn.net,作者:爱吃豆的土豆,版权归原作者所有,如需转载,请联系作者。

原文链接:qianxu.blog.csdn.net/article/details/125115699

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。