浅谈struts2、jquery与json的集成

本文介绍如何在Struts2框架中集成JSON插件实现异步交互,包括搭建环境所需的主要jar包、关键代码示例及配置,演示了通过模糊查询实现数据的异步加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



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;
002
003 importjava.io.Serializable;
004 importjava.util.Date;
005
006 publicclassUserimplementsSerializable {
007
008 /**
009 * @author z_xiaofei168
010 */
011 privatestaticfinallongserialVersionUID = 1L;
012
013 /** 用户的编号 */
014 privateInteger id;
015 /** 用户的名称 */
016 privateString name;
017 /** 用户的密码 */
018 privateString pass;
019 /** 用户的邮箱 */
020 privateString email;
021 /** 用户的注册日期 */
022 privateDate rdate;
023
024 publicUser() {
025 super();
026 }
027
028 //以下省略所以的set和get方法
029 }
030
031
032
033 cn.z_xiaofei168.action包
034
035
036 Java代码
037 packagecn.z_xiaofei168.action;
038
039 importjava.util.List;
040
041 importcn.z_xiaofei168.dao.Pagination;
042 importcn.z_xiaofei168.domain.User;
043 importcn.z_xiaofei168.service.UserServiceImpl;
044
045 importcom.opensymphony.xwork2.ActionSupport;
046
047 publicclassUserActionextendsActionSupport {
048
049 /**
050 * @author z_xiaofei168
051 */
052 privatestaticfinallongserialVersionUID = 1L;
053
054 /** 业务层对象 */
055 privateUserServiceImpl userServiceImpl;
056 privateList<User> list;
057
058 publicUserServiceImpl getUserServiceImpl() {
059 returnuserServiceImpl;
060 }
061
062 /** set方法注入 */
063 publicvoidsetUserServiceImpl(UserServiceImpl userServiceImpl) {
064 this.userServiceImpl = userServiceImpl;
065 }
066
067 publicList<User> getList() {
068 returnlist;
069 }
070
071 publicvoidsetList(List<User> list) {
072 this.list = list;
073 }
074
075 /** 模糊查新的方法 */
076 publicString findByDarkName()throwsException{
077 list = userServiceImpl.findByDarkName(user.getName());
078 return"findByDarkName";
079 }
080 }
081
082
083
084 cn.z_xiaofei168.dao包
085
086
087
088 Java代码
089 packagecn.z_xiaofei168.dao;
090
091 importjava.util.List;
092
093 importcn.z_xiaofei168.domain.User;
094
095 publicinterfaceUserDao {
096
097 publicList<User> findByDarkName(String name)throwsException;
098 }
099
100
101
102
103 Java代码
104 packagecn.z_xiaofei168.dao;
105
106 importjava.util.List;
107
108 importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
109
110 importcn.z_xiaofei168.domain.User;
111
112 publicclassUserDaoImplextendsHibernateDaoSupportimplementsUserDao {
113
114 @SuppressWarnings("unchecked")
115 publicList<User> findByDarkName(String name)throwsException {
116
117 List list =this.getHibernateTemplate().find("from User where name like ?","%"+name+"%");
118 System.out.println("findByDarkName模糊:"+list.size());
119 returnlist;
120 }
121
122 }
123
124
125 cn.z_xiaofei168.service包
126
127
128
129 Java代码
130 packagecn.z_xiaofei168.service;
131
132 importcn.z_xiaofei168.dao.UserDao;
133
134 publicinterfaceUserServiceextendsUserDao {
135
136 }
137
138
139
140 Java代码
141 packagecn.z_xiaofei168.service;
142
143 importjava.util.List;
144
145 importcn.z_xiaofei168.dao.UserDaoImpl;
146 importcn.z_xiaofei168.domain.User;
147
148 publicclassUserServiceImplimplementsUserService {
149
150 privateUserDaoImpl userDaoImpl;
151
152 publicUserDaoImpl getUserDaoImpl() {
153 returnuserDaoImpl;
154 }
155
156 /** set方法进行注入 */
157 publicvoidsetUserDaoImpl(UserDaoImpl userDaoImpl) {
158 this.userDaoImpl = userDaoImpl;
159 }
160
161 publicList<User> findByDarkName(String name)throwsException {
162 returnuserDaoImpl.findByDarkName(name);
163 }
164
165 }



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">
05 <struts>
06 <packagename="z_xiaofei"extends="json-default"namespace="/csdn">
07 <global-results>
08 <resultname="input">/index.jsp</result>
09 </global-results>
10
11 <actionname="user_*"class="cn.z_xiaofei168.action.UserAction"method="{1}">
12
13 <!-- 返回的是一个user对象 user对象(id,name,pass) -->
14 <resultname="findByDarkName"type="json">
15 <!-- param参数的配置,includeProperties -->
16 <paramname="includeProperties">
17 list\[\d+\]\.id, list\[\d+\]\.name, list\[\d+\]\.pass
18 </param>
19 </result>
20 </action>
21 </package>
22 </struts>


jsp页面

01 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
02 <%
03 String path = request.getContextPath();
04 String basePath = request.getScheme() + "://"
05 + request.getServerName() + ":" + request.getServerPort()
06 + path + "/";
07 %>
08
09 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
10 <html>
11 <head>
12 <basehref="<%=basePath%>">
13
14 <title>用户信息输入</title>
15
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">
21 <!--
22 <link rel="stylesheet" type="text/css" href="styles.css">
23 -->
24 <scripttype="text/javascript"
25 src="${pageContext.request.contextPath}/js/jquery-1.6.js">
26 </script>
27 <scripttype="text/javascript">
28
29 function findByDarkName() {
30 var name = $("#darkName").val();
31 $.ajax({
32 type:"post",
33 url:"csdn/user_findByDarkName",
34 data:"user.name="+name,
35 dataType:"json",
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>");
42 });
43 }
44 });
45 }
46 </script>
47 </head>
48
49 <body>
50 <br/>
51 <div>
52 <h2>
53 <fontcolor="red">模糊查询</font>
54 </h2>
55 <br/>
56 <h3>

模糊性:在给出的信息中,与之有相同的元素即可
01 </h3>
02 <br/>
03 <inputtype="text"id="darkName"name="user.name"/>
04 <spanid="msg"></span>
05 <inputtype="button"value="模糊查询"onclick="findByDarkName()"/>
06 </div>
07
08 <table>
09 <thead>
10 <tr>
11 <th>序号</th>
12 <th>名称</th>
13 <th>密码</th>
14 <th>注册日期</th>
15 <th>操作</th>
16 </tr>
17 </thead>
18 <tbodyid="darklist">
19 </tbody>
20 </table>
21 </body>
22 </html>

struts配置文件里有个type=json 并且文件继承了json-default,该文件在struts2-jon-plugin.jar里面定义了.里边定义了一个interceptor,会将action中提供了get set方法的属性封装成json格式数据response给客户端,








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值