将 context-param 元素替换为 Servlet 3.0 注释
给定:一个 Java EE 5 Web 应用程序,它有一个 web.xml,其中有一个片段,例如“
<context-param>
<description>c</description>
<param-name>a</param-name>
<param-value>b</param-value>
</context-param>
我需要做什么才能将该上下文参数规范移动到基于注释的策略”。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以在 javax.servlet 注释rel="nofollow noreferrer">
javax.servlet.annotation
包摘要:您会看到,没有什么比
@WebContextParam
更好的了。这也或多或少有意义;你会/能设置什么样的类?一些依赖于上下文参数的基于 Servlet 的框架(例如 JSF)也允许通过 JNDI 设置其中一些参数。您可能想研究一下。或者,如果它涉及自制代码,那么我会看看
@WebInitParam
对您来说是否不是一个更可行的选择。You can find all
javax.servlet
annotations in thejavax.servlet.annotation
package summary:You see, there's nothing like a
@WebContextParam
. Which makes also less or more sense; on what kind of class would/could you set it?Some Servlet based frameworks which rely on context parameters, such as JSF, also allows for setting some of them by JNDI. You might want to look into that instead. Or if it concerns homegrown code, then I'd look if
@WebInitParam
isn't a more feasible option for you.如果您使用 Tomcat,则可以在
context.xml
中使用 Parameter 标记,它的工作方式与放入web.xml
中的 context-param 相同。因此,您可以使用 @WebInitParam 来捕获上下文变量。
http://tomcat.apache.org/tomcat-5.5-doc /config/context.html#Context_Parameters
If you are using Tomcat, you can use the Parameter tag in
context.xml
, and it will work identical as a context-param put inweb.xml
.So you can use
@WebInitParam
to catch a context variable.http://tomcat.apache.org/tomcat-5.5-doc/config/context.html#Context_Parameters
好吧,我认为我们不能使用 “注释” 对 context-param 进行硬编码,因为这背后有一个逻辑原因:我相信你们知道注释总是硬编码在Servlet 和 Servlet 永远不会被内存中的容器加载以服务客户端请求,直到客户端发出第一个请求(请阅读 Servlet 生命周期).
那么,如果我们想从 "context-param" 中获取值(在其他 Servlet 中使用 Annotation 进行硬编码),会发生什么情况呢?并且带有 context-param 注释的 Servlet wrapped 仍未加载到内存中,因此我们无法获取 context 对象 :)
I现在想,你们可以很容易地猜到为什么我们不能在 context-param 的情况下使用注释,因为我们需要使用任何特定的 servlet 来硬编码该注释,而我们不能这样做...... ..
Well I think we just can't hardcode context-param using "Annotation" because there is a logical reason behind this : i am sure you guys knows annotations is always hardcoded in the Servlet and Servlet never loaded by the container in the memory for serving the client request until its first request is made by client (read Servlet Life Cycle ).
So what happen if we want to get the values out of "context-param" , which is hard-coded using Annotation in some other Servlet ? And the Servlet wrapped with context-param annotation is still not loaded in the memory thus we can't get the object for context :)
I think now you guys can easily guess why we can't use Annotation in case of context-param because we need to hardcode that Annotation with any specific servlet and we can't do that .......
可以使用 @WebServletContextListener 指定 servlet 内容侦听器遇到的数据。例如,
One can specify the servlet content listener met data by using @WebServletContextListener. For instance,