struts2、jquery与json的集成是怎样实现异步交互的,下面我们来做个综合的小案例。
做案例的前提是:先要引入必要的jar包。
比如:
1、struts2-core-2.x.x.x.jar :Struts 2框架的核心类库
2、xwork-2.x.x.jar :XWork类库,Struts 2在其上构建
3、ognl-2.x.x.jar :对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性
4、freemarker-2.3.x.jar :Struts 2的UI标签的模板使用FreeMarker编写
5、commons-logging-1.1.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
6、commons-fileupload-1.2.1.jar 文件上传组件,2.1.6版本后必须加入此文件
7、struts2-json-plugin.jar struts2与json的插件
cn.z_xiaofei168.domain包
Java代码
001
|
packagecn.z_xiaofei168.domain;
|
003
|
importjava.io.Serializable;
|
004
|
importjava.util.Date;
|
006
|
publicclassUserimplementsSerializable
{
|
009
|
*
@author z_xiaofei168
|
011
|
privatestaticfinallongserialVersionUID
= 1L;
|
033
|
cn.z_xiaofei168.action包
|
037
|
packagecn.z_xiaofei168.action;
|
039
|
importjava.util.List;
|
041
|
importcn.z_xiaofei168.dao.Pagination;
|
042
|
importcn.z_xiaofei168.domain.User;
|
043
|
importcn.z_xiaofei168.service.UserServiceImpl;
|
045
|
importcom.opensymphony.xwork2.ActionSupport;
|
047
|
publicclassUserActionextendsActionSupport
{
|
050
|
*
@author z_xiaofei168
|
052
|
privatestaticfinallongserialVersionUID
= 1L;
|
055
|
privateUserServiceImpl
userServiceImpl;
|
056
|
privateList<User>
list;
|
058
|
publicUserServiceImpl
getUserServiceImpl() {
|
059
|
returnuserServiceImpl;
|
063
|
publicvoidsetUserServiceImpl(UserServiceImpl
userServiceImpl) {
|
064
|
this.userServiceImpl
= userServiceImpl;
|
067
|
publicList<User>
getList() {
|
071
|
publicvoidsetList(List<User>
list) {
|
076
|
publicString
findByDarkName()throwsException{
|
077
|
list
= userServiceImpl.findByDarkName(user.getName());
|
078
|
return"findByDarkName";
|
089
|
packagecn.z_xiaofei168.dao;
|
091
|
importjava.util.List;
|
093
|
importcn.z_xiaofei168.domain.User;
|
095
|
publicinterfaceUserDao
{
|
097
|
publicList<User>
findByDarkName(String name)throwsException;
|
104
|
packagecn.z_xiaofei168.dao;
|
106
|
importjava.util.List;
|
108
|
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
|
110
|
importcn.z_xiaofei168.domain.User;
|
112
|
publicclassUserDaoImplextendsHibernateDaoSupportimplementsUserDao
{
|
114
|
@SuppressWarnings("unchecked")
|
115
|
publicList<User>
findByDarkName(String name)throwsException
{
|
117
|
List
list =this.getHibernateTemplate().find("from
User where name like ?","%"+name+"%");
|
118
|
System.out.println("findByDarkName模糊:"+list.size());
|
125
|
cn.z_xiaofei168.service包
|
130
|
packagecn.z_xiaofei168.service;
|
132
|
importcn.z_xiaofei168.dao.UserDao;
|
134
|
publicinterfaceUserServiceextendsUserDao
{
|
141
|
packagecn.z_xiaofei168.service;
|
143
|
importjava.util.List;
|
145
|
importcn.z_xiaofei168.dao.UserDaoImpl;
|
146
|
importcn.z_xiaofei168.domain.User;
|
148
|
publicclassUserServiceImplimplementsUserService
{
|
150
|
privateUserDaoImpl
userDaoImpl;
|
152
|
publicUserDaoImpl
getUserDaoImpl() {
|
157
|
publicvoidsetUserDaoImpl(UserDaoImpl
userDaoImpl) {
|
158
|
this.userDaoImpl
= userDaoImpl;
|
161
|
publicList<User>
findByDarkName(String name)throwsException
{
|
162
|
returnuserDaoImpl.findByDarkName(name);
|
struts.xml
01
|
<?xmlversion="1.0"encoding="UTF-8"?>
|
02
|
<!DOCTYPE
struts PUBLIC
|
03
|
"-//Apache
Software Foundation//DTD Struts Configuration 2.1.7//EN"
|
04
|
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
|
06
|
<packagename="z_xiaofei"extends="json-default"namespace="/csdn">
|
08
|
<resultname="input">/index.jsp</result>
|
11
|
<actionname="user_*"class="cn.z_xiaofei168.action.UserAction"method="{1}">
|
14
|
<resultname="findByDarkName"type="json">
|
16
|
<paramname="includeProperties">
|
17
|
list\[\d+\]\.id,
list\[\d+\]\.name, list\[\d+\]\.pass
|
jsp页面
01
|
<%@
page language="java" import="java.util.*" pageEncoding="UTF-8"%>
|
03
|
String
path = request.getContextPath();
|
04
|
String
basePath = request.getScheme() + "://"
|
05
|
+
request.getServerName() + ":" + request.getServerPort()
|
09
|
<!DOCTYPE
HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
12
|
<basehref="<%=basePath%>">
|
16
|
<metahttp-equiv="pragma"content="no-cache">
|
17
|
<metahttp-equiv="cache-control"content="no-cache">
|
18
|
<metahttp-equiv="expires"content="0">
|
19
|
<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
|
20
|
<metahttp-equiv="description"content="This
is my page">
|
24
|
<scripttype="text/javascript"
|
25
|
src="${pageContext.request.contextPath}/js/jquery-1.6.js">
|
27
|
<scripttype="text/javascript">
|
29
|
function
findByDarkName() {
|
30
|
var
name = $("#darkName").val();
|
33
|
url:"csdn/user_findByDarkName",
|
34
|
data:"user.name="+name,
|
36
|
success:function(data){
|
37
|
$.each(data.list,function(i,entity){
|
38
|
$("#darklist").append("<trstyle='border:1px'></tr>")
|
39
|
.append("<td>"+entity.id+"</td>")
|
40
|
.append("<td>"+entity.name+"</td>")
|
41
|
.append("<td>"+entity.pass+"</td>");
|
53
|
<fontcolor="red">模糊查询</font>
|
模糊性:在给出的信息中,与之有相同的元素即可
03
|
<inputtype="text"id="darkName"name="user.name"/>
|
05
|
<inputtype="button"value="模糊查询"onclick="findByDarkName()"/>
|
struts配置文件里有个type=json 并且文件继承了json-default,该文件在struts2-jon-plugin.jar里面定义了.里边定义了一个interceptor,会将action中提供了get set方法的属性封装成json格式数据response给客户端,