Servlet之初始化参数和传递数据(ServletConfig,ServletContext )
2024-08-27 08:47:23
ServletConfig
容器初始化一个Servlet的时候,会为这个Servlet建一个唯一的Servletconfig的对象(Servlet的配置对象)
容器会从部署的描述文件(web.xml)中 读出servlet 初始化参数 交给 ServletConfig对象
再把ServletConfig对象传递给Serlvet的 init() 方法
- ServletConfig 的配置标签需要写到 Servlet 标签中,标签如下:
<init-param>
<param-name>number</param-name>
<param-value>100</param-value>
</init-param>
- 在Servlet中获取ServletConfig 对象:
HttpServlet 中的 getServletConfig 方法来获取
注意:ServletConfig 只能在配置的Servlet中使用,其他的Servlet是无法访问里面的配置参数的
ServletContext
- ServletContext 的配置标签需要写到 web-app (根标签)中 ,具体如下:
<context-param>
<param-name>appname</param-name>
<param-value>Servlet应用</param-value>
</context-param>
- 在Servlet中获取ServletContext对象:
HttpServlet中的 getServletContext 方法来获取
注意:ServletContext 配置的内容可以在整个项目中进行访问
因为ServletContext的数据是应用所有的servlet共享,可以通过该对象存储数据
ServletContext.setAttribute("nama","value");
ServletContext.getAttribute("name");
思考:能否通过送给ServletContext设置一个属性,来判断用户是否为登陆状态,从而确定用户能否访问的到登陆才能访问到的页面?
答: 是不可以的。因为ServletContext设置的属性 虽然是整个项目都可以访问得到,但是ServletContext是一直存在的。如果不删除属性,只有当项目卸载重新发布的时候才能删除,这显然是有问题。因此我们不是用它,我们用session来代替,当用户关闭窗口的时候session过一短时间就会自动销毁。
补充
利用请求域属性来传递数据 (分派 RequestDispatcher )
在ServletRequest 接口中定义了:
void setAttribute(java.lang.String name, java.lang.Object o) //将对象存储到ServletRequest中
java.lang.Object getAttribute(java.lang.String name) //检索存储在ServletRequest对象中的对象
那么,如果是一次请求中(分派),从第一个Servlet中传递值给第二个Servlet,需要通过 ServletRequest 对象来传递
最新文章
- 自定义ViewGroup须知
- zabbix微信告警(虚拟机脚本测试成功,zabbix上收不到信息)
- ThinkPHP的RBAC
- CSS3初学篇章_4(边框样式/段落样式)
- sql: sql developer tunnel转接
- spring mvc 下载文件链接
- Brackets 前端编辑器试用
- sass或scss入门
- 纯CSS3实现轮播图
- Python基础——0前言
- bzoj3051[WC2013]平面图(树上倍增+平面图转对偶图+扫描线)
- hdu-3746(kmp)
- web前端知识大纲:系列一 js篇
- Linux系统中的常用命令
- JavaScript 全屏展示
- C# 申请非托管内存
- lakala proportion轨迹分析代码
- dockerk个人学习(0)
- 第十一章 企业项目开发--消息队列activemq
- android studio 中出现";...ProjectScript\buildscript\cache.properties.lock";