在我的JSP页面中,我希望链接转发到另一个JSP页面。当用户在home.jsp上时,我希望他们转到login.jsp等。我遇到的问题是,除非我将页面放在项目文件夹中(在WEB-INF之上),否则无法找到JSP文件夹)。
我试过这些代码行,但都没有用:
<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 /
答案 0 :(得分:4)
我已经解决了,我为每个JSP页面创建了4个Servlet。每个servlet都将消息转发到相应的JSP,如下所示:
request.getRequestDispatcher("/WEB-INF/pages/enquette.jsp").forward(request, response);
在JSP页面之间的一个href:
<a href="/enq/enquette">
网络XML:
<servlet-mapping>
<servlet-name>Enquette</servlet-name>
<url-pattern>/enquette</url-pattern>
答案 1 :(得分:2)
<a href="/pages/login.jsp">
它必须正常工作。在这种情况下,您获得了什么HTTP状态?
答案 2 :(得分: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模式之后返回URL的一部分(/ pages /) 这应该工作。
您还可以在/ WEB-INF / pages /目录下添加更多jsp文件,并通过此servlet将用户转发到欲望页面。