【问题标题】:Redirect to jsp file in WEB-INF using Ajax使用 Ajax 重定向到 WEB-INF 中的 jsp 文件
【发布时间】:2014-06-22 08:00:20
【问题描述】:

我正在使用 ajax 在我的网络应用程序中提交登录表单详细信息。如果用户名和密码正确,我需要将用户重定向到web-inf 文件夹中的home.jsp 页面。

我尝试过 requestdispatcher,但没有成功。

还在我的 servlet 中尝试使用 json.put("url", "/WEB-INF/home.jsp");,在 javascript 中尝试使用 window.location = json.url;,但也没有成功。

我的脚本

jQuery(document).ready(function() {
    $('#user-login-form').submit(function() {

        var postdata = $('#user-login-form').serialize();

        $.ajax({
            type: 'POST',
            url: 'login',
            data: postdata,
            dataType: 'json',
            success: function(json) {

              if(json.errorMessage != '') {
                      alert(json.errorMessage);
              }else{
                  // redirect to jsp file in web-inf
              }                 
            }
        });
        return false;
    });
});

我的部分 Servlet 代码

if (username.equals("admin") && password.equals("pass")) {

    // in here, i need to redirect user to home.jsp page in web-inf folder

} else {
    json.put("errorMessage", "Invalid username or password");
}

我该怎么做?

【问题讨论】:

  • 你可以在JSP中尝试<jsp:include page="/WEB-INF/home.jsp"/><jsp:forward page="/WEB-INF/home.jsp"/>但是不会改变URL并且home.jsp的响应包含在当前JSP中。

标签: java javascript ajax jsp servlets


【解决方案1】:

您只能将用户重定向到公开可用的资源,

WEB-INF 中的任何内容都不能公开访问,您可能希望将用户重定向到一个 servlet,您可以从该 servlet 将请求转发到 WEB-INF 中的 home.jsp

【讨论】:

  • 正要将此添加到我的评论中。从服务器端处理重定向可能是最好的。唯一不能选择的情况是当您尝试使您的页面完全基于 AJAX 时,很明显 OP 不是。 +1
  • 谢谢。现在我的问题解决了。但有一个小问题。我已将用户重定向到一个 servlet,并从那里使用 RequestDispatcher 将用户重定向到 /WEB-INF/home.jsp。现在 url 显示为http://localhost:8181/TCD/redirect。有没有办法在 url 中显示 home.jsp 而不是 redirect
  • 使用response.sendRedirect()RequestDispatcher 用于转发并包含在同一请求中附加 HTML 内容的。
猜你喜欢
  • 2014-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2015-01-23
  • 2014-01-02
  • 1970-01-01
相关资源
最近更新 更多