【问题标题】:Servlet JSP web.xmlServlet JSP web.xml
【发布时间】:2023-03-29 12:22:01
【问题描述】:

我在 NetBeans 中看到一个功能,用于为 Servlet 选择 JSPweb.xml 中的结果 XML 是这样的:

<servlet>
    <servlet-name>TestServlet</servlet-name>
    <jsp-file>/index.jsp</jsp-file>
</servlet>

这是什么意思?它是干什么用的? 是否类似于 ASP .NET 中的代码隐藏架构?

【问题讨论】:

    标签: java jsp servlets web.xml


    【解决方案1】:

    JSP 是一种 servlet。 JSP 页面被编译成 servlet。这个 servlet 在任何 java web 服务器提供的 servlet 容器中运行。

    在web.xml中,&lt;servlet&gt;标签用来命名servlet类和jsp文件的名称。然后你可以根据自己的URL映射那些servlet和jsp文件。

    <servlet>
       <servlet-name>hello</servlet-name>
       <jsp-file>/jsp/hello.jsp</jsp-file>
    </servlet>
    <servlet-mapping>
      <servlet-name>hello</servlet-name>
      <url-pattern>/helloworld</url-pattern>
    </servlet-mapping>
    

    如果您的 hello.jsp 文件位于 JSP 文件夹下。当您尝试使用 /helloworld 打开 URL 时。它将打开页面 hello.jsp。

    【讨论】:

      【解决方案2】:

      这是什么意思?它是干什么用的?

      它用于将 servlet(不是您编写的实际 Servlet 类)的规范名称映射到 JSP(恰好是 servlet)。就其本身而言,它并不是很有用。您通常需要将 servlet 映射到 url 模式:

      <servlet>
          <servlet-name>TestServlet</servlet-name>
          <jsp-file>/index.jsp</jsp-file>
      </servlet>
      <!--mapping-->
      <servlet-mapping>
          <servlet-name>TestServlet</servlet-name>
          <url-pattern>/test/*</url-pattern>   
      </servlet-mapping>
      

      现在到达 /test/* 的所有请求现在都将由 JSP 提供服务。

      此外,servlet 规范还规定:

      jsp-file 元素包含完整的 Web 中 JSP 文件的路径 以“/”开头的应用程序。如果一个 jsp-file 被指定并且 load-onstartup 元素存在, 那么 JSP 应该被预编译并且 已加载。

      因此,它可以用于预编译 servlet,以防您的构建过程没有预编译它们。请记住,以这种方式预编译 JSP 并不是最佳实践。理想情况下,您的构建脚本应该处理这些问题。

      它像 ASP .NET 中的架构背后的代码吗?

      不,如果您正在寻找代码隐藏架构,最相似的就是 JSF 提供的托管 Beans 支持。

      【讨论】:

      • 实际上我不喜欢架构背后的代码,我很高兴它不是那样的。但是 JSF 架构比后面的代码要好得多。但我还是很困惑。在我的例子中,什么会产生结果? TestServletindex.jsp ?
      • 我不确定我是否理解您的评论。该请求将由index.jsp 处理。 TestServlet 就像我在答案中所说的只是 servlet 的规范名称,因此您可以在 web.xml 中将其作为 servlet 引用。您需要附加一个 URL 模式,并且必须将请求发送到与该模式匹配的 URL,以便进行任何处理。
      • 啊哈,我不需要为TestServlet写任何代码吧?
      • 我应该把index.jsp放在哪里?
      • Rudziankoŭ,也把它放在/ROOT 目录中。
      【解决方案3】:

      JSP servlet。 JSP 是一种模板技术,它解析 .jsp 文件并生成 servlet .java 文件。完成后,.java 文件将被编译为在 servlet/JSP 引擎上下文中运行的 .class 文件。

      web.xml 文件所做的只是将 .jsp 文件与 servlet 名称相关联。还有更多:您必须将该 .jsp 映射到一个 URL,以便 servlet/JSP 引擎知道何时调用它。

      我对 ASP 或 .NET 的了解不够充分,无法说出这是否与“代码隐藏”相同。

      【讨论】:

      • 很好,但我还是很困惑。在我的例子中,什么会产生结果? TestServlet 还是 index.jspTestServlet 是不是我需要编写的 servlet?
      • @ehsun7b 你不需要写TestServlet 类;这只是您在应用程序中用来指代您的 servlet 的名称。 index.jsp 将处理&lt;servlet-mapping&gt; 正文中列出的所有请求,用于TestServletweb.xml 中。
      • @duffymo 有没有办法从 web.xml 中删除这个 jsp 映射?
      猜你喜欢
      • 2012-09-23
      • 2012-12-08
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 2015-03-01
      • 2016-02-05
      • 2013-01-20
      • 1970-01-01
      相关资源
      最近更新 更多