2012-12-29 46 views
0

我需要在JSP中顯示兩個URL,但我想將一些初始化參數傳遞給JSP頁面來完成此操作。servletConfig.getInitParameterNames()不起作用

所以,這是我的web.xml:

<web-app ... > 
<servlet> 
    <servlet-name>index1</servlet-name> 
    <jsp-file>/index.jsp</jsp-file> 
    <init-param> 
     <param-name>p1</param-name> 
     <param-value>http://www.google.com</param-value> 
    </init-param> 
    <init-param> 
     <param-name>p2</param-name> 
     <param-value>/pagina2.jsp</param-value> 
    </init-param> 
</servlet> 
<servlet-mapping> 
    <servlet-name>index1</servlet-name> 
    <url-pattern>/index.jsp</url-pattern> 
</servlet-mapping> 

在index.jsp中,我寫了下面的代碼:

<% 
    // This is only a test code. Obviously, it doesn't show the URLs 
     java.util.Enumeration e = getServletConfig().getInitParameterNames(); 
     while(e.hasMoreElements()) { 
      out.println(e.nextElement() + "<br>"); 
     } 
    %> 

但是當我運行JSP,這顯示了一些我不需要的initParameters。例如: logVerbosityLevel
httpMethods
keepgenerated
p2 ----------- > This is the parameter that I need

xpoweredBy
p1 ----------- > This is other parameter that I need
system-jar-includes
com.sun.appserv.jsp.classpath

我的問題是: 爲什麼JSP文件正在使用所有這些參數?
注意:我正在使用Glassfish。

+0

現在我已經把所有的代碼放入一個Servlet中。現在它起作用了。但其他參數是什麼意思? (logVerbosityLevel,httpMethods ...) – CristianC

回答

1

這些是負責提供JSP文件的container-builtin JspServlet類的初始化參數。對於Glassfish,您可以在該域的config/default-web.xml文件中找到它。它是org.apache.jasper.servlet.JspServlet的servlet條目(注意,除非你真的明白你在做什麼,否則不應修改它)。

+0

非常感謝,@BalusC。那麼,在看到Jps 2.0新功能之前,我仍然在學習Jsp 1.2。我會盡力寫下你所說的話。再次感謝。 – CristianC

+0

哦,對不起。我試過第一種方式: w 但它生成一個這樣的URL:w 但我想我做錯了什麼。 – CristianC

+0

噢,對不起,我把它混淆了。儘管名稱爲'$ {initParam}',它實際上是指'web.xml'的''實體。無法訪問EL中的JSP servlet init參數。我將編輯答案以刪除不正確的信息。 – BalusC