【问题标题】:Can't redirect from jsp to html无法从jsp重定向到html
【发布时间】:2016-09-24 10:51:19
【问题描述】:

我的项目结构如下

gk1
  |_src
      |_main
           |_java
                |_resources
                |_webapp
                      |_WEB-INF
                      |_index.jsp
                      |_mcq.jsp

我的 web.xml 文件看起来像

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0">

  <display-name>gk1</display-name>
  <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
        <async-supported>true</async-supported>

    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
  <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>

    </welcome-file-list>
</web-app>

我的 index.jsp 如下

<html>
<head>
    <title>Spring 3.0 MVC Series</title>
</head>
<body>
    <a href="mcq.jsp">Get on new adventure.</a>
</body>
</html>

当我开始项目时,点击“开始新的冒险”。它不会将我重定向到 mcq.html 文件。它说资源不可用。但是当我将 mcq.html 更改为 mcq.jsp 时,它运行良好。我应该怎么做才能解决这个问题。我只需要显示一个 html 页面。

【问题讨论】:

    标签: java html spring jsp spring-mvc


    【解决方案1】:

    我认为您必须指定 /WEB-INF/mcq.jsp 而不是 mcq.jsp

    <html>
    <head>
        <title>Spring 3.0 MVC Series</title>
    </head>
    <body>
        <a href="/WEB-INF/mcq.jsp">Get on new adventure.</a>
    </body>
    </html>

    【讨论】:

      【解决方案2】:

      见:

      https://docs.oracle.com/cd/E21764_01/web.1111/e13712/configurewebapp.htm#WBAPP158

      在 WEB-INF 中访问信息

      WEB-INF 目录不是公共文档树的一部分 应用。 WEB-INF目录中没有文件可以提供 通过容器直接发送给客户但是,内容 WEB-INF 目录对使用 getResource 的 servlet 代码可见 和 ServletContext 上的 getResourceAsStream() 方法调用或 使用 RequestDispatcher 包含/转发。

      基本上,您不能直接链接到 WEB-INF 下的资源。您需要将 JSP 文件移动到 webapp 根目录下的某个位置,例如/webapp/pages/ 或者,链接到转发到您的 JSP 资源的 Servlet 或 Spring 控制器。

      最佳实践是永远不要直接链接到 JSP 文件。您使用的 Spring 应该映射到一个 Controller URL。

      【讨论】:

        【解决方案3】:

        无论如何,JSP 文件都会呈现为 HTML,因此您的服务器中不需要有纯 HTML 文件。你可以给一个普通的 HTML 文件添加 JSP 扩展名,它会很好地呈现。

        或者,您可以在您的 servlet 中设置一个 HTML 渲染器,该渲染器将渲染 HTML。视图在这里解释http://docs.spring.io/spring-webflow/docs/current/reference/html/views.html

        此外,您不需要通过扩展名引用文件,在您的链接中您只需要“mcq”而不是“mcq.html”。

        另一种解决方案是将你的HTML文件放在静态资源目录中,静态资源中的项目不会通过渲染器传递(但是我不推荐这种方法,因为它会导致你的项目变得无法管理)。

        【讨论】:

        • 没什么问题,就是乱七八糟,没必要。
        • @steves165 我已经稍微编辑了这个问题。该文件是 mcq.jsp 而不是 mcq.html。你现在能帮帮我吗?我需要 jsp 只是因为我想利用它们。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-11
        • 1970-01-01
        • 2015-02-17
        • 1970-01-01
        相关资源
        最近更新 更多