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

  • 相关阅读:
    0.计算机相关
    面试笔试大概会出现的问题其二
    uboot传递启动参数给内核
    移植uboot之裁剪和修改参数
    uboot移植之支持板子nand启动
    uboot移植之建立新板、初始化时钟/SDRAM/UART
    uboot移植之重定位
    uboot移植之重定位之前的启动过程
    uboot移植之初步编译
    输入子系统分析
  • 原文地址:https://www.cnblogs.com/nm666/p/7967183.html
Copyright © 2020-2023  润新知