1)web.xml中没有配置CONTEXT_CLASS_PARAM参数,所有这块逻辑是走
contextClassName = defaultStrategies.getProperty(WebApplicationContext.class.getName());这块分支。而这句代码目的是要构建 【org.springframework.web.context.support.XmlWebApplicationContext】作为 WebApplicationContext 的实现类。具体配置开源可以看defaultStrategies的实例化赋值代码。
2)后面的内容就过度到XmlWebApplicationContext的创建过程,这必然涉及到如果获取xml的配置路径。
2.1 抽象模板类 AbstractRefreshableConfigApplicationContext::getConfigLocations方法中,有这样的描述 (this.configLocations != null ? this.configLocations : getDefaultConfigLocations());
2.2 那重点就是 this.configLocations 的set 过程。
在ContextLoader::configureAndRefreshWebApplicationContext的方法中,我们可以找到这样的代码
wac.setConfigLocation(configLocationParam); 最终从 String configLocationParam = sc.getInitParameter(CONFIG_LOCATION_PARAM); 这句代码可以得知它的路径来源是 web.xml中的配置
<param-name>contextConfigLocation</param-name>。
大体这样的逻辑,希望可以帮到你。
你可以看一下jsp的九大内置对象(在servlet中有对应的对象)的范围,这样就可以根据功能需要来决定需要把变量存储在什么对象内
每次登录都是一次请求,所以用request对象,session没法统计每一次的请求
贴下代码哦,不看代码咋知道哪里没写对。
初步感觉你应该是没注册监听器吧,用的是servlet3.0的话,不需要在web.xml里注册;在自建的监听器类ListenerClass里加上@WebListener就行了
例如:
这个得看个人情况 自学肯定时间长 如果有个好的老师 加上有抱死电脑的决心 有毅力的坚持 这样估计半年
我也是的,后来是怎么解决的呢
我试了一下都是可以的,应该是为了让我们看的更清楚一点
requestListener的实现是更进一步功能的实现。不仅可以看到在线用户,还可以看到在线用户的相关信息,比如定义中的IP
session创建 默认生命周期时间是30分钟(session有短暂的持久化在硬盘),如果你没有进行设置生命周期时间很短,获取手动销毁session,那就存在,你可以尝试设置session的生命周期为5秒,然后关闭浏览器后在进行重新打开发送请求。
贴代码
web的全局变量对象是单例的。例如:启动tomcat只初始化一次
javax.servlet.annotation.WebListener这是注解
这里获取的是在线人数的集合。
解释一下为什么这里不用去创建一个监听器类而是直接在普通的JavaBean类中实现接口吧:
前面两类作用范围都是相对于整个页面,比如session的就是相对整个页面的session会话,request就是整个页面的所有request请求
而这类作用范围是某个对象,所以要监听哪个对象就让哪个对象实现接口就行了
我用IDER,初始值直接是3,用一个加1是真的
额,代码竟然不显示
我再贴一下
public class FirstListener implements ServletRequestListener { // Public constructor is required by servlet spec public FirstListener() { } @Override public void requestDestroyed(ServletRequestEvent servletRequestEvent) { System.out.println("request destroyed initParam=" + servletRequestEvent.getServletContext().getAttribute("initParam")); } @Override public void requestInitialized(ServletRequestEvent servletRequestEvent) { servletRequestEvent.getServletContext().setAttribute("intiParam","yang"); System.out.println("request initialized"); } }
判断当前用户之前是否已经放入ArrayList集合里面,如果已经有就取出来返回。如果没有就返回null
就是可以被多个监听器监听呗
attribute 没有获取到
如果想用IDEA默认启动浏览器,应该怎么解决这个问题呢?还有为什么会出现这个问题啊?麻烦各位大佬解释一下
界面关闭从新打开保存一下就OK了