在Sevlet中有时会用到服务器的全局变量,本节内容是如何使用服务器的全局变量(ServletContext)。Servlet中通过方法getServletContext()可以得到ServletContext实例,通过该实例可以设置和获取服务器的全局变量。
示例代码如下:
package com.taoistwar.jsp.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
public class TestServletContext extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext application = this.getServletContext();
Integer i = (Integer) application.getAttribute("hitCount");
if (i == null) {
i = new Integer(1);
}
application.setAttribute("hitCount", i++);
PrintWriter out = response.getWriter();
out.println(i);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
配置文件:
<servlet>
<servlet-name>TestServletContext</servlet-name>
<servlet-class>com.taoistwar.jsp.servlet.TestServletContext</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServletContext</servlet-name>
<url-pattern>/TestServletContext</url-pattern>
</servlet-mapping>
分享到:
相关推荐
- `ServletContext`常用于实现会话跟踪、共享全局变量、监听应用事件(如初始化、销毁)等。 - 如果需要在多个Servlet间共享非持久性的数据,`ServletContext`是一个理想的工具;而若需要持久化的数据存储,应考虑...
开发者可以通过`context.getAttribute()`和`context.setAttribute()`来获取和设置全局变量,这些变量对所有用户都可见。ServletContext还用于监听事件、加载配置信息以及与应用其他部分进行通信。 4. ...
可以使用`ServletContext`的`setAttribute()`方法来设置这个变量。 ```java int counter = 0; // 初始计数值 servletContext.setAttribute("pageCounter", counter); ``` 2. **监听HTTP请求**:每当有新的HTTP...
最后,我们将使用 Map 封装 Session 对象集合,并将其设置进 ServletContext 全局变量中。 下面是我们的实现步骤: 1. 设置 Servlet 容器(Tomcat)全局变量,封装项目的 Session 对象集合。 使用 ...
1. **共享数据**:ServletContext提供了全局变量的功能,可以通过`setAttribute()`和`getAttribute()`方法在不同的Servlet之间共享数据。这在需要跨Servlet通信时非常有用。 2. **监听事件**:可以通过实现`...
7.10.4. ThreadLocal目标源 7.11. 定义新的通知类型 7.12. 更多资源 8. 测试 8.1. 简介 8.2. 单元测试 8.3. 集成测试 8.3.1. Context管理和缓存 8.3.2. 测试fixture的依赖注入 8.3.3. 事务管理 8.3.4. ...
7.10.4. ThreadLocal目标源 7.11. 定义新的通知类型 7.12. 更多资源 8. 测试 8.1. 简介 8.2. 单元测试 8.3. 集成测试 8.3.1. Context管理和缓存 8.3.2. 测试fixture的依赖注入 8.3.3. 事务管理 8.3.4. 方便的变量 ...
7.10.4. ThreadLocal目标源 7.11. 定义新的通知类型 7.12. 更多资源 8. 测试 8.1. 简介 8.2. 单元测试 8.3. 集成测试 8.3.1. Context管理和缓存 8.3.2. 测试fixture的依赖注入 8.3.3. 事务管理 8.3.4. ...
此外,ServletContext还可以用来广播事件或存储全局信息。 6. **ServletRequest和ServletResponse**:这两个接口代表了HTTP请求和响应对象。ServletRequest持有来自客户端的请求信息,如参数、头信息等,而Servlet...
1. **全局属性存储**:`application`对象可以用来存储全局变量,这些变量对于Web应用中的所有用户都是可见的,无论他们何时何地访问应用。例如,你可以设置一个全局计数器,统计网站的总访问量。 ```jsp ...
开发者可以使用 `application.getAttribute("key")` 和 `application.setAttribute("key", "value")` 来读取和设置全局变量,这些变量对于Web应用中的所有用户都是可见的。 7. **page对象**: `page` 对象是一个 `...
4. **使用类变量的 `getResourceAsStream()` 方法**: 如果 Properties 文件位于类路径下,你可以通过类对象的 `getResourceAsStream()` 方法获取输入流。示例: ```java InputStream in = JProperties.class....
ServletContext提供了在不同Servlet之间共享信息的机制,例如存储全局变量、监听应用级事件、加载配置信息等。它还允许Servlet获取关于Web应用的信息,如Web应用的初始化参数和上下文路径。 在使用ServletContext时...
`application.getAttribute()`和`application.setAttribute()`方法用于读取和设置全局变量。这些变量对于所有用户和会话都是可见的,适用于配置信息或跨页面的数据共享。 总结起来,JSP的这五个核心对象构成了...
在JavaServer Pages (JSP) 技术中,隐含对象是预定义的变量,可以直接在JSP页面中使用,无需显式声明。它们提供了对Servlet API的便捷访问,简化了开发过程。以下是JSP中九个主要的隐含对象及其区别: 1. **page**:...
- ServletContext是整个Web应用的一个全局性的共享环境,在该Web应用中运行的Servlets可以访问此对象。 - ServletContext对象在Web应用启动时创建,在Web应用关闭时销毁。 - 它提供了读取Web应用初始化参数、获取...
JSP与Servlet传值技术总结 JSP与Servlet传值技术是Java Web开发中的一...* Application是全局变量,不关你前台有多少客户打开该网站的页,有多少客户关闭该网站的页,只要服务器端不关闭该网站,Application始终存在。
5. `ServletContext`:表示Web应用程序的上下文,提供了访问应用级信息的方法,如全局初始化参数、MIME类型映射等。 【javax.servlet.jsp.jar】则是JSP API的实现,JSP是一种视图技术,让开发者可以使用HTML或者XML...
- **避免实例变量**:减少实例变量的使用,尤其是可变的实例变量。 - **使用ThreadLocal**:通过`ThreadLocal`类来为每个线程提供独立的副本,从而避免共享资源的竞争。 综上所述,理解Web服务器、应用服务器和Web...
在实际开发中,熟练掌握这些预定义变量的使用能够显著提升Web应用的开发效率和代码质量。例如,`request`和`session`对象常用于处理表单数据和维持用户状态,`response`和`out`用于构建动态响应,而`application`则...