【问题标题】:Getting init parameter while accessing JSP file by filename通过文件名访问JSP文件时获取init参数
【发布时间】:2016-08-16 06:54:55
【问题描述】:

我正在尝试访问 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") %>

这是为什么呢?

【问题讨论】:

    标签: java eclipse jsp servlets


    【解决方案1】:

    如果你想从
    http://localhost:8080/JEE_Learning/testingJSP
    http://localhost:8080/JEE_Learning/testing.jsp访问name参数
    那么你应该添加

    <url-pattern>/testing.jsp</url-pattern>    
    

    给你的

    <servlet-mapping>
    

    【讨论】:

      【解决方案2】:

      如果你添加

      <%=getServletConfig().getServletName()%>
      

      到JSP页面你会看到输出

      • testingJSP 调用 .../testingJSP
      • jsp 调用 .../testing.jsp 时(在 Tomcat 中)。

      所以第一个请求调用testingJSP servlet,第二个请求调用容器的JSP servlet。因此,servlet init 参数仅在第一个请求中定义。

      【讨论】:

      • 你的回答让我明白了这一点:link 这对我来说完全是正确的。谢谢你:)
      猜你喜欢
      • 2018-07-09
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 2017-08-01
      • 1970-01-01
      • 2021-12-27
      相关资源
      最近更新 更多