zoukankan      html  css  js  c++  java
  • Servlet之初始化参数和传递数据(ServletConfig,ServletContext )

    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 对象来传递

  • 相关阅读:
    HL7及PIX相关的测试工具
    HDU4570----Multi-bit Trie----简单的DP
    hdu2248
    poj 3693 Maximum repetition substring (后缀数组)
    高性能通道
    volyaire重振Infiniband
    利用iWARP/RDMA解决以太网高延迟
    linux 单网卡来绑定多IP实现多网段访问以及多网卡绑定单IP实现负载均衡
    C细节学习
    每2秒获取系统的赋值及内存使用率
  • 原文地址:https://www.cnblogs.com/nm666/p/7967183.html
Copyright © 2011-2022 走看看