Java 将属性应用于JSP页面

Java 将属性应用于JSP页面,java,jsp,tomcat,servlets,Java,Jsp,Tomcat,Servlets,我想做的是将项目中的每个JSP页面与一个属性相关联。比方说,我有三页: helloWorld.jsp helloUniverse.jsp 这里的属性是“操作”。有没有一种方法可以应用到他们身上,比如: helloWorld.jsp -> Operation: "HelloWorld" helloUniverse.jsp -> Operation: "HelloUniverse" 这样就可以从ServletContextListener中获得它们: public void cont

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

helloWorld.jsp
helloUniverse.jsp
这里的属性是“操作”。有没有一种方法可以应用到他们身上,比如:

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"));
    }
}
public void contextInitialized(最终ServletContextEvent事件){
final ServletContext ctx=event.getServletContext();
//以下是我想要的代码:
List pages=ctx.getAllPages();
用于(类页:页){
operationMap.put(page.getName(),page.getAttribute(“操作”);
}
}
我知道这看起来非常牵强。。但是这样做可能吗?

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

  HelloWorld=helloWorld.jsp
  HelloUniverse=helloUniverse.jsp

这只是一个理论,但:

<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>

helloWorldJsp
/helloWorld.jsp
活动
你好世界
helloUniverseJsp
/helloUniverse.jsp
活动
希腊河
实际上,您可以将jsp映射为servlet(最终它们是servlet,对吗?)在那里分配init参数,然后在引导时读取它们,我不知道这是否足够,但这可能是您需要的。 缺点是您必须在web.xml中重新声明所有jsp,但这比静态的东西要好


如果你不喜欢静态变量,你也可以拥有一个资源文件,在引导时读取它,并将该文件与jsp一起维护。你可以在每个页面上添加一个隐藏参数,该参数的值可以用这个问题的答案填充:问题是,当jsp运行时,它仍然会被执行加载。我不想那样。我需要它在web应用程序启动时出现。为什么要构建这样的映射?我认为无论你试图实现什么,你都会朝着错误的方向前进。这不是一个好的解决方案,在创建新页面、更改名称和删除页面时很难维护。在创建、更改名称或删除页面时,应该如何维护这一点?这将是一个地狱般的工作。