将属性应用于JSP页面

时间:2012-08-01 06:55:50

标签: java jsp tomcat servlets

我想要做的是将项目中的每个JSP页面与一个属性相关联。可以说,我有三页:

helloWorld.jsp
helloUniverse.jsp

,这里的属性是'Operation'。有没有办法可以将它应用到他们身上,如:

helloWorld.jsp -> Operation: "HelloWorld"
helloUniverse.jsp -> Operation: "HelloUniverse"

这样他们就可以从ServletContextListener

获得
public void contextInitialized(final ServletContextEvent event) {   
    final ServletContext ctx = event.getServletContext();

    // Following is the code I wish for:
    List<Class<Servlet>> pages = ctx.getAllPages();
    for(Class<Servlet> page : pages) {
        operationMap.put(page.getName(), page.getAttribute("operation"));
    }
}

我知道它看起来非常牵强......但这样的事情可能吗?

2 个答案:

答案 0 :(得分:-1)

好的,首先是静态方式: 创建一个operation.properties并按行添加所有操作值。

  HelloWorld=helloWorld.jsp
  HelloUniverse=helloUniverse.jsp

答案 1 :(得分:-1)

这只是一个理论,但是:

<servlet>
<servlet-name>helloWorldJsp</servlet-name>
<jsp-file>/helloWorld.jsp</jsp-file>
<init-param>
<param-name>operation</param-name>
<param-value>HelloWorld</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>helloUniverseJsp</servlet-name>
<jsp-file>/helloUniverse.jsp</jsp-file>
<init-param>
<param-name>operation</param-name>
<param-value>helloUniverse</param-value>
</init-param>
</servlet>

你实际上可以将你的jsp作为servlet映射(最后它们是servlet,对吗?)在那里分配init参数然后在bootstrap读取它们,我不知道这是否足够,但它可能就是你需要的。 缺点是你必须重新声明web.xml中的所有jsp,但它比静态更好。

如果你对静态变量不感兴趣,你也可以拥有一个资源文件,并在bootstrap中读取它,并保存文件以及可能也有效的jsp。