2

在我的 JSP 页面中,我希望将链接转发到另一个 JSP 页面。当用户在 home.jsp 上时,我希望他们去 login.jsp 等。我遇到的问题是找不到 JSP,除非我将页面放在项目文件夹中(在 WEB-INF 上方文件夹)。

我尝试了这些代码行,但没有一个起作用:

<a href="/enq/WEB-INF/pages/login.jsp">
<a href="/WEB-INF/pages/login.jsp">
<a href="/pages/login.jsp">

它仅适用于项目文件夹中的 JSP 页面,然后我使用下一行:

<a href="login.jsp">

但我希望 JSP 页面位于:WEB-INF/pages/

4

3 回答 3

4

我已经解决了,我为每个 JSP 页面创建了 4 个 Servlet。每个 servlet 都将消息转发到相应的 JSP,如下所示:

request.getRequestDispatcher("/WEB-INF/pages/enquette.jsp").forward(request, response);

并且在 JSP 页面中的 a href 之间:

<a href="/enq/enquette">

网络 XML:

<servlet-mapping>
<servlet-name>Enquette</servlet-name>
<url-pattern>/enquette</url-pattern>
于 2013-05-21T17:45:35.023 回答
2
<a href="/pages/login.jsp">

它必须正常工作。在这种情况下,您会得到什么 HTTP 状态?

于 2013-01-12T20:37:55.783 回答
1

如果您希望用户可以访问以下文件:/WEB-INF/pages/login.jsp

您应该创建一个 servlet,并且应该更改 html 或 jsp 文件中的链接:

<a href="/pages/login.jsp"> login page </a>

创建一个 servlet:将此行添加到您的 web.xml 文件中:

<servlet-mapping>
<servlet-name>accessFiles</servlet-name>
<url-pattern>/pages/*</url-pattern>  
</servlet-mapping>


<servlet>
<servlet-name>accessFiles</servlet-name>
<servlet-class>yourclass</servlet-class>
</servlet>

然后创建扩展 servlet 的 yourclass.java:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class yourclass extends javax.servlet.http.HttpServlet {

 private String message;

  public void init() throws ServletException
  {

  }

  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      String pathInfo = request.getPathInfo();
      request.getRequestDispatcher("/WEB-INF/pages/" + pathInfo).forward(request, response);

  }

  public void destroy()
  {
      // do nothing.
  }

}

getPathInfo() 将返回应该工作的 servlet 模式 (/pages/) 之后的 URL 部分。

您还可以在 /WEB-INF/pages/ 目录下添加更多 jsp 文件,并通过此 servlet 将用户转发到所需页面。

于 2015-08-28T17:14:21.247 回答