重定向到新页面

toiithl6  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(390)

我的“login.html”中有一个表单,单击“login”按钮后,该表单将提交到我的java后端代码。但是,我不知道如何将我的登录页面重定向到新页面。
在以下代码中:

<script>
        $(function() {
           $('#ff').form({
               url: "LoginServlet",
               success:function(data){
                   $.messager.alert(data);
               }
           });
        });
    </script>

在成功部分,我的重定向页面将显示在此消息窗口中。但我希望它跳转到servlet返回的页面。

这是我的login.html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <script>
        $(function() {
           $('#ff').form({
               url: "LoginServlet",
               success:function(data){
                   $.messager.alert(data);
               }
           });
        });
    </script>
</head>
<body>
    <form id="ff" role="form" method="post">
        <div>
            <h1>User Login</h1>
        </div>
        <div>
            <input id="username" name="username" class="easyui-textbox" data-options="iconCls:'icon-man',iconWidth:30,iconAlign:'left',prompt:'Username'" style="width:100%;height:35px;" />
        </div>
        <div>
            <input id="password" name="password" class="easyui-passwordbox" data-options="iconWidth:30,iconAlign:'left',prompt:'Password'" style="width:100%;height:35px;" />
        </div>
        <div>
            <a href="javascript:void(0)" class="easyui-linkbutton" onclick="$('#ff').submit()" style="width:100%;height:35px;">Submit</a>
        </div>
        <div>
            <div style="display:inline;">
                <a href="javascript:void(0)">Register</a>
            </div>
        </div>
    </form>
</body>
</html>

这是我的java servlet代码:

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        IUserService userService = new UserServiceImpl();
        User user = userService.login(username, password).get(0);

        if (user != null) {
            response.sendRedirect(request.getContextPath() + "/index.jsp");
        } else {
        }
    }
}
dffbzjpn

dffbzjpn1#

您可以尝试删除javascript函数并使用form操作直接调用jsp。
所以我要去掉下面的部分

<script>
        $(function() {
           $('#ff').form({
               url: "LoginServlet",
               success:function(data){
                   $.messager.alert(data);
               }
           });
        });
    </script>

这部分需要删除,因为你的结构。大多数使用jsp的项目都有这样的结构。
您希望在第一步中获取所有表单参数并访问url…/loginservlet。
然后,当您构建好servlet时,它会进行身份验证,如果成功,它会向您的浏览器发送一条消息,并说:请浏览器在http消息中保留这些头,但请访问另一个url(index.jsp)以查看您在等待什么。
正如你所看到的,它是由客户端(又名浏览器)在不同的网址之间移动,以便得到服务。
这就是为什么简单的javascript函数不能像预期的那样工作。
所以一个简单的解决方案是直接以action的形式进行调用

<body>
    <form id="ff" role="form" method="post" action="/LoginServlet">
    ....

如果身份验证不成功,那么我将从servlet提供一个错误页。

if (user != null) {
            response.sendRedirect(request.getContextPath() + "/index.jsp");
        } else {
            response.sendRedirect(request.getContextPath() + "/error.html");
}

相关问题