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

  • 相关阅读:
    PHP7.27: connect mysql 5.7 using new mysqli
    PHP: Browser, Operating System (OS), Device, and Language Detect
    PHP 在WIN10 下配置
    MySQL chartset
    學習Echart 2.2.7
    The open source JavaScript graphing library that powers Plotly
    D3.js 制作中国地图
    FastReport.Net
    CSS 3D transforms
    SparkCore的调优之开发调优
  • 原文地址:https://www.cnblogs.com/nm666/p/7967183.html
Copyright © 2011-2022 走看看