Java,Struts2,jQuery:验证登录字段而不重定向到另一个页面

时间:2013-07-12 21:58:31

标签: jquery struts2 struts2-jquery

我有一个使用Java构建的Web应用程序,用于数据库访问的JDBC,用于将数据传递给视图的Struts2,以及用于帮助进行视图操作的jQuery。

当应用程序启动时,它会执行Home.action并显示Home.jsp页面,其中包含顶部的“SIGN IN”链接。还有其他视图也包括顶部的“登录”链接。

当用户点击“SIGN IN”时,jQuery会显示一个隐藏窗格,提供用户名和密码的文本字段以及“登录”按钮。

这是我的困境......目前,单击“登录”按钮执行Login.action,然后重定向回Home.action。但是,我真正喜欢的是Login.action执行登录,但保留在同一页面上。事实上,我不希望视图改变或刷新;我只想让登录发生,其他所有都保持不变。

我有两个主要原因:1)如果用户输入无效的现场数据或登录失败,我不想去任何地方;我只想向用户显示错误。 2)由于多个页面提供了登录顶部的能力,我不想随意重定向回Home.action;我希望用户留在原地。

所以,我向社区提出的问题是:我可以用我已经使用过的技术(以及如何使用)来做到这一点,或者我是否需要考虑添加其他技术(以及哪些技术?)?< / p>

非常感谢!

1 个答案:

答案 0 :(得分:2)

我会尽力总结一下。

选项1 :使用SPA(单页应用程序)。您可以在jQuery之上添加另一个JavaScript框架,以使您的生活更轻松。有关以下内容的更多信息:http://en.wikipedia.org/wiki/Single-page_application

选项2:您可以使用jQuery(或市场上的任何产品)创建自己的JavaScript MVC框架。

请注意,在决定选项1和选项2之后,您将有两个层:表示层+业务层。

最后,您可以对Web服务进行Ajax调用,并控制表示层中的任何重定向或显示行为。总之,您的演示文稿完全独立于您的业务层。

让我们看看我是否可以举例说明:

这将是我们的login.html

的一部分
<script type="text/javascript">
$(document).ready(function(){
    $("#singInButton").click(function{
    var parameters = {SignIn:{username:"userNameFromField", password:"passwordFromField"}};
    $.post("signin", parameters, function(data, status){
            if(data.message === "SUCCESS") {
                alert("Welcome back.");
            }else{
                alert("Invalid credentials. Please, try again.");
            }
        });
    });
});
</script>

我们假设这会生成一个请求,如: {SignIn:{username:“userNameFromField”,密码:“passwordFromField”}}

在服务器端验证这些是有效凭据。所以,你会回复一些东西(对不起,我对Struts不熟悉,但我相信你能搞清楚):

response.setContentType("application/json");
response.setResponseBody("SUCCESS");

最后,用户界面会提醒“欢迎回来”。您无需发送响应,只需以正确的格式返回所需内容即可。当然,有数百个框架可以使生活更轻松,并将json或xml对象转换为JavaObject,因此您不必手动解析字符串。

我希望这个例子可以澄清我想说的话。

干杯,