从servlet和JSP重定向JSP

时间:2014-04-29 09:40:56

标签: jquery jsp servlets

我有2个查询

1)我有一个login.jsp页面和索引页面。一旦我验证了用户(在servlet即check.java中),用户被重定向到index.jsp页面。我使用这一行重定向它来自servlet

getServletContext().getRequestDispatcher("/WEB-INF/admin/index.jsp").forward(request, response);

此过程运行正常。但当我刷新页面时,我会被重定向回登录页面。 另外我注意到在index.jsp页面上我得到名称check而不是index.jsp,即我的 servlet 名称被显示出来。例如像这样 显示localhost:8080/abc/check而不是localhost:8080/abc/index.jsp

2)在索引页面上我有4个不同的div,当我使用jquery点击div时,我被重定向到一个页面(一种标签)但它不工作 这是我的代码<%

  ServletContext sc=getServletContext();
  URL resourceUrl = sc.getResource("/WEB-INF/admin/logindetails.jsp");
  String path = resourceUrl.toString();
%>
$(document).ready(function(){
    $('#wid7').click(function(){
        var path = <%=path%>;
        document.location.href=path;
    });
});

我无法访问logindetails.jsp

这是我的结构

-Webcontent
--resources
---js
---css
--Web-Inf
---admin
----index.jsp
----logindetails.jsp
--login.jsp

1 个答案:

答案 0 :(得分:1)

首先,请在不同的问题中询问不同的主题。所以:

1)getServletContext().getRequestDispatcher("/WEB-INF/admin/index.jsp").forward(request, response);

你的结构是这样的

login.jsp--(request)-->check.java--(forward(same request))-->index.jsp

表示你的index.jsp取决于来自login.jsp的请求,它不是一个单独的请求,这就是为什么它在URL中显示检查的原因当你在做刷新时,它会生成新的请求(不是来自login.jsp),这就是显示 login.jsp 的原因。

如果您想更改此行为,请使用 sendRedirect 而不是转发,然后在 check.java 之后创建新请求

修改:试试这个:

  ServletContext sc=getServletContext();
  URL resourceUrl = sc.getResource("/WEB-INF/admin/login.jsp");
  String path = resourceUrl.toString();
  response.sendRedirect(path);