Java init参数和context参数
Java init参数和context参数,java,servlets,Java,Servlets,和之间有什么区别 如果要为特定servlet初始化某些参数,将使用。当请求首先到达servlet时,它的init方法将被调用,然后doGet/doPost而如果您想为整个应用程序初始化一些变量,则需要使用。每个servlet都可以访问上下文变量。请考虑web.xml中的以下定义 <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>TestServlet&l
和
之间有什么区别 如果要为特定servlet初始化某些参数,将使用
。当请求首先到达servlet时,它的init
方法将被调用,然后doGet/doPost
而如果您想为整个应用程序初始化一些变量,则需要使用
。每个servlet都可以访问上下文变量。请考虑web.xml中的以下定义
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>TestServlet</servlet-class>
<init-param>
<param-name>myprop</param-name>
<param-value>value</param-value>
</init-param>
</servlet>
<web-app>
<context-param>
<param-name>myprop</param-name>
<param-value>value</param-value>
</context-param>
</web-app>
你好世界
TestServlet
myprop
价值
您可以看到init param是在servlet元素中定义的。这意味着它仅对声明下的servlet可用,而对web应用程序的其他部分不可用。如果希望此参数可用于应用程序的其他部分(比如JSP),则需要显式地将其传递给JSP。例如,实例作为request.setAttribute()传递。这是非常低效和难以编码的
因此,如果您希望在不显式传递这些值的情况下从应用程序中的任何位置访问全局值,则需要使用Context Init参数
考虑web.xml中的以下定义
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>TestServlet</servlet-class>
<init-param>
<param-name>myprop</param-name>
<param-value>value</param-value>
</init-param>
</servlet>
<web-app>
<context-param>
<param-name>myprop</param-name>
<param-value>value</param-value>
</context-param>
</web-app>
myprop
价值
此上下文参数可用于web应用程序的所有部分,并且可以从上下文对象中检索。例如,getServletContext().getInitParameter(“dbname”)
从JSP中,您可以使用应用程序隐式对象访问上下文参数。例如,application.getAttribute(“dbname”)
在前面提到的代码中,我仅将jersey和ApplicationContext.xml
配置为rest层。同样,我使用的
和
是存储在web.xml文件中的静态参数。如果您有任何不经常更改的数据,您可以将其存储在其中一个中
如果要存储限制在特定servlet范围内的特定数据,则可以使用
。在
内声明的任何内容仅可用于该特定servlet。在
标记内声明init param
<servlet>
<display-name>HelloWorldServlet</display-name>
<servlet-name>HelloWorldServlet</servlet-name>
<init-param>
<param-name>Greetings</param-name>
<param-value>Hello</param-value>
</init-param>
</servlet>
如果要存储整个应用程序的通用数据,并且如果数据不经常更改,则可以使用应用程序上下文的
而不是servletContext.setAttribute()
方法。有关
VSServletContext.setAttribute()
用法的更多信息,请查看以下内容上下文参数在标记web app
下声明。
您可以按如下方式声明和访问
<web-app>
<context-param>
<param-name>Country</param-name>
<param-value>India</param-value>
</context-param>
<context-param>
<param-name>Age</param-name>
<param-value>24</param-value>
</context-param>
</web-app>
和
之间有什么区别
单个servlet与多个servlet
其他答案给出了详细信息,但以下是总结:
web应用程序,即“上下文”,由一个或多个servlet组成
定义上下文中单个特定servlet可用的值
定义上下文中所有servlet可用的值
的方法:但没有设置上下文参数的方法
。
<web-app>
<context-param>
<param-name>Country</param-name>
<param-value>India</param-value>
</context-param>
<context-param>
<param-name>Age</param-name>
<param-value>24</param-value>
</context-param>
</web-app>
getServletContext().getInitParameter("Country");
getServletContext().getInitParameter("Age");