我正在尝试访问JSP文件中的init参数。
当我从servlet映射输入url模式时,如下所示:http://localhost:8080/JEE_Learning/testingJSP
它工作正常,参数在那里。
但是当我输入一个JSP文件名时:http://localhost:8080/JEE_Learning/testing.jsp
参数为空。
web.xml:
<servlet>
<servlet-name>testingJSP</servlet-name>
<jsp-file>/testing.jsp</jsp-file>
<init-param>
<param-name>name</param-name>
<param-value>John</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>testingJSP</servlet-name>
<url-pattern>/testingJSP</url-pattern>
</servlet-mapping>
内JSP文件:
<%= getInitParameter("name") %>
这是为什么?
最佳答案
如果添加
<%=getServletConfig().getServletName()%>
到JSP页面,您将看到输出
呼叫
testingJSP
时.../testingJSP
调用
jsp
(在Tomcat中)时为.../testing.jsp
。因此,第一个请求调用
testingJSP
servlet,第二个请求调用容器的JSP servlet。因此,servlet init参数仅在第一个请求中定义。