Sai*_*ula 110
<init-param>并且<context-param>是存储在web.xml文件中的静态参数.如果您有任何不经常更改的数据,您可以将其存储在其中一个数据中.
如果要存储特定于特定servlet范围的特定数据,则可以使用.<init-param>内部声明的任何<init-param>内容只能访问该特定的servlet.在标记内部声明init-param<servlet>.
<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>
Run Code Online (Sandbox Code Playgroud)
您可以按如下方式访问servlet中的这些参数:
out.println(getInitParameter("Greetings"));
Run Code Online (Sandbox Code Playgroud)
如果要存储整个应用程序通用的数据,并且如果它不经常更改,则可以使用<context-param>而不是servletContext.setAttribute()应用程序上下文的方法.有关<context-param>VS 使用的更多信息,请ServletContext.setAttribute()查看此问题.context-param在标记下声明web-app.您可以<context-param>如下声明和访问
<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>
Run Code Online (Sandbox Code Playgroud)
应用程序在JSP或Servlet中的用法
getServletContext().getInitParameter("Country");
getServletContext().getInitParameter("Age");
Run Code Online (Sandbox Code Playgroud)
请考虑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>
Run Code Online (Sandbox Code Playgroud)
您可以看到init-param是在servlet元素中定义的.这意味着它仅适用于声明下的servlet,而不适用于Web应用程序的其他部分.如果您希望此参数可用于应用程序的其他部分,则说需要将JSP显式传递给JSP.例如,作为request.setAttribute()传递.这非常低效且难以编码.
因此,如果要从应用程序内的任何位置访问全局值而不显式传递这些值,则需要使用Context Init参数.
请考虑web.xml中的以下定义
<web-app>
<context-param>
<param-name>myprop</param-name>
<param-value>value</param-value>
</context-param>
</web-app>
Run Code Online (Sandbox Code Playgroud)
此上下文参数可用于Web应用程序的所有部分,并且可以从Context对象中检索它.例如,getServletContext().getInitParameter("dbname");
从JSP中,您可以使用应用程序隐式对象访问上下文参数.例如,application.getAttribute("dbname");
小智 6
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/META-INF/PersistenceContext.xml
</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
我初始化了我的PersistenceContext.xml内部<context-param>因为我的所有servlet都将与MVC框架中的数据库进行交互.
Howerver,
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:ApplicationContext.xml
</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.organisation.project.rest</param-value>
</init-param>
</servlet>
Run Code Online (Sandbox Code Playgroud)
在前面提到的代码中,我正在配置平针织和ApplicationContext.xml唯一的休息层.对于我正在使用的相同</init-param>
小智 5
<init-param>如果要为特定servlet初始化某个参数,将使用它.当请求首先进入servlet时,它的init方法将被调用,doGet/doPost而如果你想为整个应用程序初始化一些变量,你将需要使用<context-param>.每个servlet都可以访问上下文变量.
\n\n\n\n
<init-param>和有什么区别<context-param>!?
单个 servlet与多个 servlet。
\n\n其他答案提供了详细信息,但这里是摘要:
\n\n一个 Web 应用程序,即 \xe2\x80\x9ccontext\xe2\x80\x9d,由一个或多个 servlet组成。
\n\n<init-param>定义上下文中单个特定 servlet可用的值。<context-param>定义一个可用于上下文中所有 servlet 的值。| 归档时间: |
|
| 查看次数: |
139741 次 |
| 最近记录: |