init-param 和 context-param
和 之间有什么区别!?<init-param>
<context-param>
<init-param>
并且是存储在web.xml文件中的静态参数。如果您有任何不经常更改的数据,则可以将其存储在其中一个数据中。<context-param>
如果要存储限制在特定 Servlet 作用域内的特定数据,则可以使用 。您在其中声明的任何内容只能对该特定 servlet 访问。初始化参数在标记内声明。<init-param>
<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>
您可以在 servlet 中访问这些参数,如下所示:
out.println(getInitParameter("Greetings"));
如果要存储整个应用程序通用的数据,并且如果它不经常更改,则可以使用应用程序上下文的方法代替方法。有关VS用法的更多信息,请查看此问题。context-param 在 标签 下声明。您可以声明和访问,如下所示<context-param>
servletContext.setAttribute()
<context-param>
ServletContext.setAttribute()
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>
在 JSP 或 Servlet 中的应用程序中的用法
getServletContext().getInitParameter("Country");
getServletContext().getInitParameter("Age");
考虑以下网络定义.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>
您可以看到 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>
此上下文参数可用于 Web 应用程序的所有部分,并且可以从上下文对象中检索它。例如,getServletContext().getInitParameter(“dbname”);
从 JSP,您可以使用应用程序隐式对象访问上下文参数。例如,application.getAttribute(“dbname”);