2014-07-12 48 views
0

我想获得我在web.xml中声明的参数。 此代码片段来自web.xml如何获取初始参数为jsp?

<servlet> 
    <servlet-name>index</servlet-name> 
    <jsp-file>/index.jsp</jsp-file> 
    <init-param> 
     <param-name>test</param-name> 
     <param-value>testValue</param-value> 
    </init-param> 
</servlet> 
<servlet-mapping> 
    <servlet-name>index</servlet-name> 
    <url-pattern>/index</url-pattern> 
</servlet-mapping> 

我试图通过这个代码来获得的:

<%= getServletContext().getInitParameter("test") %><%= application.getInitParameter("test") %><%= "Param = " + application.getInitParameter("test") %> 

,但我从来没有得到。

回答

0

第一件事是, ,你正在使用一个不太好的代码实践的scriptlet。你应该避免使用它们。使用servlet来做这些事情.Java scriptlet自引入JSP 2.0以来已经过时并且不被信任,并且有很多在JSP中不使用Java脚本的好理由。

还有一件事你的代码是正确的从servlet上下文获取值。你可能有暴露出的问题的web.xml

更改web.xml.Change您的URL模式:

<servlet-mapping> 
    <servlet-name>index</servlet-name> 
    <url-pattern>/index.jsp</url-pattern> 
</servlet-mapping> 

正如你只需<%=config.getInitParameter("test")%>

编写的代码中获取价值,或者你可以得到这个魏利
+0

谢谢。我只开始使用Java EE。但我不明白哪个是我的错误?为什么我不能使用/index? – greenpo1son

+0

Url-pattern指定应该调用servlet-name中给定的servlet的url的类型。您想调用servlet来获取index.jsp页面。 /索引不是有效的网址。这就是为什么。如果我没有错,我的答案是正确的;) –

+0

希望你有你的答案。/index不是一个有效的url.url-pattern意味着这个url的wtever请求应该通过已定义的servlet-name servlet。 –

1

要获得servlet初始化参数,不叫getServletContext().getInitParameter()将返回一个上下文参数,但你要拨打:

<%= getServletConfig().getInitParameter("test") %> 

或者干脆

<%= config.getInitParameter("test") %> 
+0

它没有工作。即使如此:<%out.println(“
”);通过out.println(getInitParameter方法( “testParam”)); %> – greenpo1son

+0

我有一个问题。当我像这个“localhost:8080/MyWebPage/index.jsp”那样调用我的页面时,我不会更改,但是我像这样调用我的页面“localhost:8080/MyWebPage/index.jsp”,然后获取最初的参数。问题是什么? PS对不起,我的英语...我希望我解释清楚... – greenpo1son

+0

你的意思是“本地主机:8080/MyWebPage/index.jsp”和“本地主机:8080/MyWebPage /索引”?第二个没有.jsp的地方? – Mifmif

0

不要将每个jsp定义为一个servlet。还有一个jsp servlet会为你处理这个问题。如果您需要应用程序范围变量,请使用“context-param”。更好地避免“全局”变量,除非它们在每台服务器上进行更改。创建一个属性文件并使用ResourceBundle从这里读取它们。