json+struts+jquery的登录验证
### JSON + Struts + jQuery 的登录验证 #### 一、技术背景介绍 在现代Web开发中,前后端分离已经成为一种趋势。在这个过程中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛应用于前后端之间的数据交互。Struts作为Java Web应用的一个重要框架,提供了丰富的功能支持,而jQuery则是前端JavaScript库中的佼佼者,能够简化HTML文档遍历、事件处理等操作。因此,结合这三种技术实现登录验证,不仅可以提高用户体验,还能增强系统的响应速度。 #### 二、技术原理详解 **1. JSON** JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但独立于语言和平台。JSON支持以下数据结构: - 数组:有序的值集合。 - 对象:无序的键值对集合。 - 字符串:双引号包裹的Unicode字符序列。 - 数字:整数或浮点数。 - 布尔值:true 或 false。 - null:特殊值,表示没有值。 **2. Struts** Struts是一款开源的MVC框架,用于构建动态的Web应用程序。Struts2框架是Struts框架的第二代版本,其主要特点包括: - 支持拦截器。 - 支持声明式结果视图。 - 集成了许多第三方库和技术。 - 提供了强大的插件机制。 在本例中,Struts2被用来处理用户的登录请求,同时利用其内置的JSON插件来返回JSON格式的数据。 **3. jQuery** jQuery是一个快速、简洁的JavaScript库,使用户能更方便地处理HTML文档、选择DOM元素、制作动画效果以及处理事件等功能。通过jQuery,可以轻松实现AJAX调用,从而实现无刷新页面的登录验证。 #### 三、实现细节 **1. 登录Action处理** 在Struts2中,可以通过创建Action类来处理登录请求。例如,`loginAction`类中包含了`login`方法,该方法负责验证用户名和密码,并返回相应的结果。在这个例子中,`login`方法首先检查用户名是否存在于数据库中,如果存在,则进一步验证密码是否正确。如果验证成功,则根据用户类型返回不同的角色标识。 ```java public String login() throws Exception { Map<String, String> map = new HashMap<>(); if (userService.findByUserName(userName).isEmpty()) { map.put("name", "error1"); } else { User user = (User) userService.findByUserName(userName).get(0); if (user.getUserStatus().equals(false)) { map.put("name", "error2"); } else if (!user.getPassword().equals(password)) { map.put("name", "error3"); } else { if (user.getType() == 0) { map.put("name", "clerk"); } else if (user.getType() == 1) { map.put("name", "manager"); } else { map.put("name", "admin"); } } } JSONObject jo = JSONObject.fromObject(map); this.result = jo.toString(); return SUCCESS; } ``` **2. Struts配置** 为了使得Struts能够返回JSON格式的数据,需要在`struts.xml`文件中配置对应的Action以及结果类型。这里使用的是`json-default`包,并且指定了结果类型为`json`,这样就能够自动将Action返回的对象转化为JSON字符串。 ```xml <package name="default" namespace="" extends="json-default"> <action name="login" class="loginAction" method="login"> <result type="json"> <param name="root">result</param> </result> </action> </package> ``` **3. jQuery AJAX验证** 在前端,使用jQuery的`$.post`方法来发送异步请求,该请求携带用户名和密码,并接收服务器返回的JSON数据。根据服务器返回的不同状态码,向用户显示相应的提示信息。 ```javascript $("#btn_login").click(function() { var url = 'login.action'; var params = { userName: $("#userName").val(), password: $("#password").val() }; $.post(url, params, function(json) { var member = eval("(" + json + ")"); switch (member.name) { case "error1": $('#span1').html("用户" + params.userName + "不存在!"); break; case "error2": $('#span1').html("用户" + params.userName + "已注销!"); break; case "error3": // ... } }); }); ``` #### 四、总结 通过上述步骤,我们成功实现了使用JSON + Struts + jQuery的登录验证功能。这种组合不仅提高了系统的响应速度,还增强了用户体验。对于开发者而言,了解这些技术的具体应用方式是非常有价值的,有助于在实际项目中更好地运用这些技术。
- 竹子912012-11-18感觉还行,不过我自己参照写的时候没有成功,我不知道是什么原因,我是初学者,还是希望自己努力,好好看看原因吧,不过仍然很感谢楼主的亲情奉献...
- 再来一碗白米饭2011-10-07不错 很好 很有用哦
- 粉丝: 8
- 资源: 230
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- js-leetcode题解之173-binary-search-tree-iterator.js
- js-leetcode题解之172-factorial-trailing-zeroes.js
- js-leetcode题解之171-excel-sheet-column-number.js
- 安卓开发从入门到精通基础教程
- js-leetcode题解之170-two-sum-iii-data-structure-design.js
- (源码)基于Java和Python的垃圾图像分类系统.zip
- (源码)基于Spring Boot和Beetl的代码生成管理系统.zip
- (源码)基于低功耗设计的无线互呼通信系统.zip
- (源码)基于Arduino的盲人碰撞预警系统.zip
- 自己学习java安全的一些总结,主要是安全审计相关.zip