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

简介: 目录1,ServletContext阶段重点1.1:简述及获取1.2:设置和获取全局初始化参数1.3:域对象2,案例1:记录登录成功人数相当于某个项目的身份证 :一个项目有一个ServletContext对象作用:获取项目配置信息域对象(项目内信息传递与共享)获取项目内资源信息1.2:设置和获取全局初始化参数设置全局初始化参

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
    }
}

image.gif

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

设置全局初始化参数:

image.gif编辑

获取全局初始化参数:

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

value字符串

Servlet:

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());
    }
}

image.gif

小结:

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

1.3:域对象

HttpServletRequest:在于请求转发。

相当于JavaSE中Map集合。

image.gif编辑

域对象的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;
}

image.gif

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

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

image.gif编辑

image.gif编辑  

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

image.gif编辑

关键点:

1、访问Servlet

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

流程:

image.gif编辑

代码实现:

login.jsp

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

image.gif

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";
    }
}

image.gif

msg.jsp

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

image.gif

小结:

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

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

最后:

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

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

相关文章
|
3月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
142 1
|
2月前
|
前端开发 机器人 测试技术
【RF案例】Web自动化测试弹窗处理
在进行Web自动化测试时,常会遇到不同类型的弹窗,如ajax、iframe、新窗口及alert/Confirm等。这些弹窗可通过Selenium进行定位与处理。其中,ajax弹窗直接定位处理;iframe需先选中再操作;新窗口类似iframe处理;而alert/Confirm则需特殊方法应对。在Robot Framework中,需先定义并获取窗口后使用特定关键字处理。此外,还有部分div弹窗需在消失前快速定位。希望本文能帮助大家更好地处理各类弹窗。
41 6
【RF案例】Web自动化测试弹窗处理
|
2月前
|
前端开发 数据安全/隐私保护
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
本文档详细介绍了HTML表单的多种元素及其用法,包括下拉菜单(`&lt;select&gt;` 和 `&lt;option&gt;`)、文本域(`&lt;textarea&gt;`)、标签解释(`&lt;label&gt;`)、各类按钮(`&lt;button&gt;`)及表单重置功能、无语义布局标签(`&lt;div&gt;` 和 `&lt;span&gt;`)以及字符实体的应用。此外,还提供了一个完整的注册信息表单案例,涵盖个人信息、教育经历和工作经历等部分,展示了如何综合运用上述元素构建实用的表单。
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
|
2月前
|
前端开发
【前端web入门第五天】03 清除默认样式与外边距问题【附综合案例产品卡片与新闻列表】
本文档详细介绍了CSS中清除默认样式的方法,包括清除内外边距、列表项目符号等;探讨了外边距的合并与塌陷问题及其解决策略;讲解了行内元素垂直边距的处理技巧;并介绍了圆角与盒子阴影效果的实现方法。最后通过产品卡片和新闻列表两个综合案例,展示了所学知识的实际应用。
47 11
|
2月前
|
前端开发
前端web入门第四天】03 显示模式+综合案例热词与banner效果
本文档介绍了HTML中标签的三种显示模式:块级元素、行内元素与行内块元素,并详细解释了各自的特性和应用场景。块级元素独占一行,宽度默认为父级100%,可设置宽高;行内元素在同一行显示,尺寸由内容决定,设置宽高无效;行内块元素在同一行显示,尺寸由内容决定,可设置宽高。此外,还提供了两个综合案例,包括热词展示和banner效果实现,帮助读者更好地理解和应用这些显示模式。
|
2月前
|
JavaScript 前端开发
【前端web入门第一天】03 综合案例 个人简介与vue简介
该网页采用“从上到下,先整体再局部”的制作思路,逐步分析并编写代码实现个人简介页面。内容涵盖尤雨溪的背景、学习经历及主要成就,同时介绍其开发的Vue.js框架特点。代码结构清晰,注重细节处理,如使用快捷键提高效率,预留超链接位置等,确保最终效果符合预期。
|
3月前
|
SQL 缓存 自然语言处理
实战案例1:基于C语言的Web服务器实现。
实战案例1:基于C语言的Web服务器实现。
188 15
|
3月前
|
前端开发 JavaScript API
【独家揭秘】Bottle框架为何能俘获开发者的心?三大实战案例带你领略Web开发新境界!
【8月更文挑战第31天】Bottle是一款轻量级Python Web框架,以简单高效著称,秉持极简设计,适合快速开发小型项目或构建API服务。本文通过具体代码示例展示Bottle框架的独特魅力,从安装到创建应用、路由设置、模板渲染及表单处理等方面进行详细介绍,帮助读者轻松上手并掌握Bottle的应用技巧。
50 1
|
3月前
|
前端开发
炫酷登录页大变身:5分钟带你入门Web动效设计
炫酷登录页大变身:5分钟带你入门Web动效设计
|
3月前
|
开发者 Java Spring
JSF 牵手社交登录,如魔法风暴席卷 Web 世界,开启震撼便捷登录之旅!
【8月更文挑战第31天】在互联网时代,便捷登录成为用户的核心需求。社交登录凭借其便捷性、安全性和社交化的特点,在各类Web应用中广泛应用。JavaServer Faces(JSF),作为一款流行的Java Web框架,能够轻松集成社交登录功能,显著提升用户体验。本文详细介绍社交登录的优势,并提供两种JSF集成社交登录的常见方法:一是利用Spring Social等第三方库简化开发;二是自行实现社交登录流程。开发者可根据项目需求选择适合的方案。
40 0