ServletContext 不是thread safe的,因为它里面的信息是整个web app所有servlet和jsp共享的。所以访问是要进行并发控制。
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();
out.println(“test context attributes”);
synchronized(getServletContext()) {
getServletContext().setAttribute(“foo”, “22”);
getServletContext().setAttribute(“bar”, “42”);
out.println(getServletContext().getAttribute(“foo”));
out.println(getServletContext().getAttribute(“bar”));
}
}
session也不是thread safe的。因为一个客户端可以开多个浏览器窗口,但是它们都属于一个session。
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();
out.println(“test session attributes<br>”);
HttpSession session = request.getSession();
synchronized(session) {
session.setAttribute(“foo”, “22”);
session.setAttribute(“bar”, “42”);
out.println(session.getAttribute(“foo”));
out.println(session.getAttribute(“bar”));
}
}
分享到:
相关推荐
Notification that an attribute has been added to a session. attributeAdded(ServletContextAttributeEvent) - Method in interface javax.servlet.ServletContextAttributeListener Notification that a new ...
Object attribute = pageContext.getAttribute("attributeName", PageContext.SESSION_SCOPE); ``` 9.Page对象类:Servlet Page对象代表当前正在执行的Servlet实例,但通常不直接使用,因为可以通过`this`关键字...
- `Object attribute = session.getAttribute(String name)`: 获取会话属性。 - `session.invalidate()`: 终止会话。 ### Cookie及其应用 Cookie是客户端存储信息的一种机制。Servlet可以通过`response.addCookie...
Object sessionAttribute = sessionMap.get("attributeName"); // 如果需要设置Session属性 sessionMap.put("attributeName", value); } ``` 在实际应用中,`ExternalContext`也常用于导航控制、资源定位、安全...
- `setAttribute(String name, Object attribute)` 方法用于在指定的作用域内设置属性,其中`name`是属性名,`attribute`是属性值。 - `getAttribute(String name)` 方法用于获取在特定作用域内设置的属性值。 举例...
- 当EL表达式被解析时,它会调用`pageContext.findAttribute`方法,依次从page、request、session、application四个域中查找与标识符匹配的对象。 - 如果找到了匹配的对象,则返回该对象;如果没有找到任何匹配项...
`pageContext.findAttribute()`方法可以用来查找任何范围内的属性。 2. **request对象**:代表客户端的HTTP请求,包含所有请求参数、头信息以及请求本身的信息。通过`request.getParameter()`可以获取请求参数,`...
JSP 九个内置对象及四个作用域 JSP(Java Server Pages)是一种基于Java的服务器端脚本...JSP四个作用域包括page、request、session和application四个作用域,分别对应着页面、请求、会话和应用程序四个级别的作用域。
5. **session对象**:session对象代表了HttpSession接口,用于存储会话级数据。通过getSession()方法创建或获取会话,setAttribute()设置会话属性,getAttribute()获取属性,removeAttribute()移除属性,以及...
此外,PageContext还提供了一个`findAttribute`方法,该方法会在四个作用域中查找属性,按照`page_scope`、`request_scope`、`session_scope`和`application_scope`的顺序查找。 #### 总结 本文档涵盖了JSP的基础...
本文将详细介绍Servlet中的八大内置对象:`request`、`response`、`session`、`out`、`page`、`application`、`exception`及`pageContext`,并解释它们的作用与应用场景。 #### 1. request - HttpServletRequest -...
HttpSession session = request.getSession(); ServletContext context = session.getServletContext(); Context otherContext = context.getContext("/app2"); Object attribute = otherContext.getAttribute(...
下面将详细介绍JSP中的九大内置对象:request、response、pageContext、session、application、out、config、page和exception。 #### 1. request对象 `request`对象封装了客户端请求的信息,并提供了多种方法来获取...
HttpSession session = request.getSession(); session.setAttribute("name", "zhangsan"); String name = (String) session.getAttribute("name"); ``` 2. **Cookie** - `Cookie` 是一种轻量级的数据存储方式...
- `pageContext`:`javax.servlet.jsp.PageContext`对象,简化了对各种范围内的名字空间、servlet相关对象的访问,以及封装了通用的servlet功能,如`findAttribute(String name)`和`setAttribute(String name, ...
It mostly contains the request information, ServletContext initialization parameters, ServetContext attributes, request headers, response headers etc. sendRedirect In JSP sendRedirect() method is a ...
JSP提供了九种内置对象,它们分别是:`request`、`response`、`session`、`out`、`page`、`application`、`exception`、`pageContext` 和 `config`。下面我们将逐一详细介绍这些内置对象及其主要方法。 #### 二、...
这些内置对象包括请求(Request)、响应(Response)、会话(Session)、应用(Application)、页面(Page)、页面上下文(PageContext)、例外(Exception)、Out和配置(Configuration)等。 1. **请求(Request)**对象:代表...