【Servlet】03-Web容器模型
来源:互联网 发布:淘宝进销存系统 编辑:程序博客网 时间:2024/06/05 23:02
在Servlet技术模型中,我们了解到了Web应用中,Servlet的基础职能,和使用Servlet的一些注意事项。但是,这一切,都需要Web容器进行管理,Web容器在Servlet编程中起到如下作用:
- 通过部署文件,初始化Servlet和ServletContext
- 控制Servlet的作用域,对Servlet属性进行增删查改
- 描述Web容器请求处理模型元素:过滤器、过滤器链、请求/响应的包装
- 监听Web事件(监听器的使用)
- 描述RequestDispatcher,用Servlet转发、包含目标资源
我们先来讲讲容器部署应用时,对Servlet怎么做初始化的:
DD(Deployment Descriptor)文件中
<servlet> <init-param> <param-name>paramName</param-name> <param-value>paramValue</param-value> <init-param></servlet>
Java文件中
// 在一个Servlet中getServletConfig().getInitParameter("paramName");
如果我们有如下需求:在整个项目中获取某一个属性,那么,我们是这样初始化的:
DD文件中:
<context-param> <param-name>paramName</param-name> <param-value>paramValue</param-value></context-param>
Java文件中:
getServletContext().getInitParameter("paramName");
如果,我们需要在Web项目启动时,构造一些对象,那么,监听器就粉墨登场。
要使用监听器,我们需要做如下几件事:
1. 实现一个监听器接口
2. 覆盖接口里的方法
3. 配置DD文件或者注解
我们监听器的Java文件如下:
@WebListenerclass SomeListener implements ServletContextListener{ public void contextInitialzed(ServletContextEvent sce){ // 获取Context的引用 ServletContext context = sce.getServletContext(); }}
我们的DD文件(没有使用@WebListener的时候有用):
<listener> <listener-class></listener-class></listener>
我们还有更多的Listener可以选择:
对于属性而言,我们还需要知道属性的作用域,我们需要知道的作用域有:
- 上下文(Context)
- 请求(Request)
- 会话(HtttpSession)
我们有一个参照表,用来描述各种作用域:
我们需要知道,ServletContext属性不是线程安全的,因为,它可能被其它用户更改。
这里有一个对上下文属性加锁的示例:
public void doGet(HttpServletRequest request, // 下面的代码对ServletContext同步HttpServletResponse response){ synchronized(getServletContext()){ getServletContext().setAttribute("attributeName","attributeValue"); }}
同样,我们的HttpSession属性也不是线程安全的,对HttpSession进行同步处理,可以避免线程不安全的修改。
对于和线程有关的问题,我们应做到:
- 声明局部变量,而不是实例变量
- 在合适的作用域里使用属性
我们认识了属性的一些知识后,我们可以把属性请求/分派出去:
request.setAttribute("beer","BEER");request.getRequestDispatcher("someurl");// 使用如下方法,必须以/打头getServletContext().getRequestDispatcher("/someurl");
0 0
- 【Servlet】03-Web容器模型
- web容器 & Servlet容器
- Servlet,Servlet容器,Jsp容器,Web容器
- web容器和servlet容器
- web容器和servlet容器
- Servlet容器和Web容器
- servlet容器和web容器
- Servlet容器与Web容器
- Servlet容器与Web容器
- Servlet容器与Web容器
- servlet容器与web容器
- Web容器&Servlet 笔记
- web容器和servlet
- Web容器与Servlet
- Servlet容器 Web服务器
- 【Web】Web容器与Servlet
- Web服务器、Servlet容器、Web容器
- Servlet容器模型(一)Web应用程序的目录结构和部署
- Word多栏页码轻松设置 Word页码设置教程!
- 关于Android App上线后从应用市场点击打开按钮进入应用后进行操作后,再点击home键到桌面后点击启动图标重新打开应用的解决方法
- 李克华 云计算高级群: 292870151 195907286 交流:Hadoop、NoSQL、分布式、lucene、solr、nutch kafka入门:简介、使用场景、设计原理、主要配置及集群搭
- 超强、超详细Redis数据库入门教程
- 循环打印四个图案
- 【Servlet】03-Web容器模型
- Netty系列之Netty百万级推送服务设计要点
- 【PAT】1040. Longest Symmetric String
- Cocos2d-Lua(Quick-Cocos2d-x)内存优化
- HDU3530-Subsequence
- Androidstuio有关导如项目作为依赖以及出现包冲突的解决办法
- Java多线程系列(2)--Thread中start()和run()
- 盒子模型 margin和padding和盒子大小的影响
- SD卡初始化以及识别过程