0

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

helloWorld.jsp
helloUniverse.jsp

这里的属性是“操作”。有没有办法可以将其应用于他们,例如:

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

这样它们就可以从 a 获得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"));
    }
}

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

4

2 回答 2

-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 参数,然后在引导时读取它们,我不知道这是否足够,但它可能是您需要的。不利的一面是您必须在 web.xml 中重新声明所有 jsp,但它比静态的东西更好。

如果您不喜欢静态变量,您也可以拥有一个资源文件并在引导程序中读取它并维护该文件以及可能也可以工作的 jsp。

于 2012-08-01T19:41:29.583 回答
-1

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

  HelloWorld=helloWorld.jsp
  HelloUniverse=helloUniverse.jsp
于 2012-08-01T07:19:51.847 回答