猿问

Eclipse 是否会破坏 Servlet/JSP 映射?

我正在为我的服务器使用 JPA/Hibernate 5.4.2、Java Servlet API 4.0.1 和 Tomcat 9 构建一个小型网站。我使用 Eclipse JEE 4.11 作为我的 IDE。


本质上,我在 Servlet 和 JSP 映射方面遇到了很多问题,我不明白为什么。在一个例子中,我有一个特定的 JSP 文件拒绝承认其他 JSP 文件,即使它们都在同一个文件夹中。例如,除非我添加文件夹名称(例如“/jsp/Header.jsp”),否则它看不到我的头文件(使用 包含)。但是,这样做会弄乱我的所有其他页面的 URL,从而阻止它们依次加载页眉和页脚。


据我所知,就好像应用程序切换目录以访问给定文件,但它永远不会恢复原状,因此其他 URL 路径变得无效,因为它们现在指向错误的位置。值得一提的是,这似乎不适用于我不得不使用相对 URL 的标签。


到目前为止,我已经通过在我的 URL 前加上 ${pageContext.request.contextPath} 来解决其中的许多问题,但是我遇到了这样一种情况,即在访问特定页面后我的 URL 仍然变得混乱。


我选择使用 web.xml 文件(位于“webapp/WEB-INF”中)来映射我的 JSP 和 Servlet,下面分别提供了示例。请注意,Servlet 条目是由 Eclipse 生成的,但我使用相同的格式手动映射了我的 JSP 文件。我已经仔细检查了 XML 文件以确保我没有犯任何明显的错误,但我还没有找到任何错误。我在研究中发现的唯一一件事是映射的顺序可能很重要,但从来没有人真正提供过有关它的具体信息。


我也试过在 Eclipse 中清理我的项目,刷新项目(因为在这样做之前我遇到了视频文件无法被我的应用程序识别的问题),并清理了我的 Tomcat 的工作目录。这些似乎都没有任何效果。


    <servlet>

        <display-name>ExerciseListServlet</display-name>

        <servlet-name>ExerciseListServlet</servlet-name>

        <servlet-class>web.ExerciseListServlet</servlet-class>

    </servlet>

    <servlet-mapping>

        <servlet-name>ExerciseListServlet</servlet-name>

        <url-pattern>/ExerciseListServlet</url-pattern>

    </servlet-mapping>


    <servlet>

        <servlet-name>UserProfile</servlet-name>

        <jsp-file>/jsp/UserProfile.jsp</jsp-file>

    </servlet>

    <servlet-mapping>

        <servlet-name>UserProfile</servlet-name>

        <url-pattern>/UserProfile</url-pattern>

    </servlet-mapping>

有什么想法吗?我很清楚我没有以代码的方式发布太多内容,但是这个问题在某个时候几乎每个页面都发生过,事实上我上次使用时没有遇到这个问题这些系统告诉我,Tomcat、Hibernate 或 Eclipse 可能存在错误或错误配置。目前,我的系统出于完全不相关的原因抛出异常,但我相信我知道原因,所以我暂时不包括它。


RISEBY
浏览 107回答 1
1回答

忽然笑

您只需删除 web.xml 文件的所有内容。删除它的所有 servlet 和相应的映射。然后你可以通过添加 WebServlet Annotation 让你的 Servlet 监听特定的 url。在您的代码中使用以下注释。@WebServlet(urlPatterns&nbsp;=&nbsp;"/ExerciseListServlet",&nbsp;loadOnStartup&nbsp;=&nbsp;1,&nbsp;displayName&nbsp;=&nbsp;"ExerciseListServlet")@MultipartConfig因此,只要您的 servlet 使用相关路径和显示名称。
随时随地看视频慕课网APP

相关分类

Java
我要回答