`
z_xiaofei168
  • 浏览: 200970 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

浅谈struts2、jquery与json的集成

阅读更多

浅谈struts2、jquery与json的集成

    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包

 

package cn.z_xiaofei168.domain;

import java.io.Serializable;
import java.util.Date;

public class User implements Serializable {

	/**
	 * @author z_xiaofei168
	 */
	private static final long serialVersionUID = 1L;

	/** 用户的编号 */
	private Integer id;
	/** 用户的名称 */
	private String name;
	/** 用户的密码 */
	private String pass;
	/** 用户的邮箱 */
	private String email;
	/** 用户的注册日期 */
	private Date rdate;

	public User() {
		super();
	}
	
	//以下省略所以的set和get方法
}

 

   cn.z_xiaofei168.action包

  

package cn.z_xiaofei168.action;

import java.util.List;

import cn.z_xiaofei168.dao.Pagination;
import cn.z_xiaofei168.domain.User;
import cn.z_xiaofei168.service.UserServiceImpl;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {

	/**
	 * @author z_xiaofei168
	 */
	private static final long serialVersionUID = 1L;

	/** 业务层对象 */
	private UserServiceImpl userServiceImpl;
	private List<User> list;

	public UserServiceImpl getUserServiceImpl() {
		return userServiceImpl;
	}

	/** set方法注入 */
	public void setUserServiceImpl(UserServiceImpl userServiceImpl) {
		this.userServiceImpl = userServiceImpl;
	}

	public List<User> getList() {
		return list;
	}

	public void setList(List<User> list) {
		this.list = list;
	}
	
	/** 模糊查新的方法 */
	public String findByDarkName() throws Exception{
		list = userServiceImpl.findByDarkName(user.getName());
		return "findByDarkName";
	}
}

 

  cn.z_xiaofei168.dao包

 

package cn.z_xiaofei168.dao;

import java.util.List;

import cn.z_xiaofei168.domain.User;

public interface UserDao {
	
	public List<User> findByDarkName(String name) throws Exception;
}

 

 

package cn.z_xiaofei168.dao;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import cn.z_xiaofei168.domain.User;

public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

	@SuppressWarnings("unchecked")
	public List<User> findByDarkName(String name) throws Exception {
	
		List list = this.getHibernateTemplate().find("from User where name like ?","%"+name+"%");
		System.out.println("findByDarkName模糊:"+list.size());
		return list;
	}
	
}

 

  cn.z_xiaofei168.service包

 

package cn.z_xiaofei168.service;

import cn.z_xiaofei168.dao.UserDao;

public interface UserService extends UserDao {

}

 

 

package cn.z_xiaofei168.service;

import java.util.List;

import cn.z_xiaofei168.dao.UserDaoImpl;
import cn.z_xiaofei168.domain.User;

public class UserServiceImpl implements UserService {

	private UserDaoImpl userDaoImpl;

	public UserDaoImpl getUserDaoImpl() {
		return userDaoImpl;
	}

	/** set方法进行注入 */
	public void setUserDaoImpl(UserDaoImpl userDaoImpl) {
		this.userDaoImpl = userDaoImpl;
	}
	
	public List<User> findByDarkName(String name) throws Exception {
		return userDaoImpl.findByDarkName(name);
	}

}

 

   struts.xml

 

<?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
	"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
	<package name="z_xiaofei" extends="json-default" namespace="/csdn">
		<global-results>
			<result name="input">/index.jsp</result>
		</global-results>
		
		<action name="user_*" class="cn.z_xiaofei168.action.UserAction" method="{1}">
			
			<!-- 返回的是一个user对象 user对象(id,name,pass) -->
			<result name="findByDarkName" type="json">
				<!-- param参数的配置,includeProperties -->
				<param name="includeProperties">
					list\[\d+\]\.id, list\[\d+\]\.name, list\[\d+\]\.pass
			 </param>
			</result>
		</action>
	</package>
</struts>

 

   jsp页面

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>用户信息输入</title>

		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
		<script type="text/javascript"
			src="${pageContext.request.contextPath}/js/jquery-1.6.js">
</script>
		<script type="text/javascript">

function findByDarkName() {
	var name = $("#darkName").val();
	$.ajax({
		type:"post",
		url:"csdn/user_findByDarkName",
		data:"user.name="+name,
		dataType:"json",
		success:function(data){
			$.each(data.list,function(i,entity){
				$("#darklist").append("<tr style='border:1px'></tr>")
				.append("<td>"+entity.id+"</td>")
				.append("<td>"+entity.name+"</td>")
				.append("<td>"+entity.pass+"</td>");
			});
		}
	});
}
</script>
	</head>

	<body>
		<br />
		<div>
			<h2>
				<font color="red">模糊查询</font>
			</h2>
			<br />
			<h3>
				模糊性:在给出的信息中,与之有相同的元素即可
			</h3>
			<br />
			<input type="text" id="darkName" name="user.name" />
			<span id="msg"></span>
			<input type="button" value="模糊查询" onclick="findByDarkName()" />
		</div>

		<table>
			<thead>
				<tr>
					<th>序号</th>
					<th>名称</th>
					<th>密码</th>
					<th>注册日期</th>
					<th>操作</th>
				</tr>
			</thead>
			<tbody id="darklist">
			</tbody>
		</table>
	</body>
</html>

 

 

22
7
分享到:
评论
11 楼 z_xiaofei168 2011-06-02  
data.status
ppboyhai 写道
你好,我初次使用struts2、jquery与json的集成,然后就做了一些练习,但是我在action中定义的属性,并且设置set和get方法了...然后在struts.xml中设置让他通过了,但是当我用jQuery脚本请求action的时候为什么在返回值data中用 data.status点取不出来呢...(data数据可以alert出来)

" data.status"这是什么??不太懂
10 楼 ppboyhai 2011-06-02  
你好,我初次使用struts2、jquery与json的集成,然后就做了一些练习,但是我在action中定义的属性,并且设置set和get方法了...然后在struts.xml中设置让他通过了,但是当我用jQuery脚本请求action的时候为什么在返回值data中用 data.status点取不出来呢...(data数据可以alert出来)
9 楼 z_xiaofei168 2011-05-23  
yuankai 写道
z_xiaofei168 写道
yuankai 写道
<result name="findByDarkName" type="json">  
                <!-- param参数的配置,includeProperties -->  
                <param name="includeProperties">  
                    list\[\d+\]\.id, list\[\d+\]\.name, list\[\d+\]\.pass  
             </param>  


这样写你就没觉得不妥?

那你给我点意见,该怎么写?

我不知道你这个有没有在实际项目中用,我以前在项目里面就这样做得,后来全部重做了。
这个includeProperties有个致命的问题,那就是会引起json的死循环嵌套。
例如:
public User{
    private User user;
}


你的那个例如我是不明白你到底是什么意思。这个项目是我自己写的,还真没有在真实的项目中做过。
8 楼 yuankai 2011-05-23  
z_xiaofei168 写道
yuankai 写道
<result name="findByDarkName" type="json">  
                <!-- param参数的配置,includeProperties -->  
                <param name="includeProperties">  
                    list\[\d+\]\.id, list\[\d+\]\.name, list\[\d+\]\.pass  
             </param>  


这样写你就没觉得不妥?

那你给我点意见,该怎么写?

我不知道你这个有没有在实际项目中用,我以前在项目里面就这样做得,后来全部重做了。
这个includeProperties有个致命的问题,那就是会引起json的死循环嵌套。
例如:
public User{
    private User user;
}

7 楼 z_xiaofei168 2011-05-22  
yuankai 写道
<result name="findByDarkName" type="json">  
                <!-- param参数的配置,includeProperties -->  
                <param name="includeProperties">  
                    list\[\d+\]\.id, list\[\d+\]\.name, list\[\d+\]\.pass  
             </param>  


这样写你就没觉得不妥?

那你给我点意见,该怎么写?
6 楼 yuankai 2011-05-22  
<result name="findByDarkName" type="json">  
                <!-- param参数的配置,includeProperties -->  
                <param name="includeProperties">  
                    list\[\d+\]\.id, list\[\d+\]\.name, list\[\d+\]\.pass  
             </param>  


这样写你就没觉得不妥?
5 楼 z_xiaofei168 2011-05-18  
白糖_ 写道
是否考虑过异常处理

异常处理都在web.xml里已经处理过了。
4 楼 白糖_ 2011-05-18  
是否考虑过异常处理
3 楼 z_xiaofei168 2011-05-17  
21jhf 写道
能否解释一下,哪里用到Json了?

2楼的哥们已经替我给了你回答了,呵,那在就不多说了。
2 楼 ljl_ss 2011-05-17  
21jhf 写道
能否解释一下,哪里用到Json了?

struts配置文件里有个type=json 并且文件继承了json-default,该文件在struts2-jon-plugin.jar里面定义了.里边定义了一个拦截器,会将action中提供了get set方法的属性封装成json格式数据response给客户端,
1 楼 21jhf 2011-05-17  
能否解释一下,哪里用到Json了?

相关推荐

    Struts2+Jquery+JSON 应用例子

    Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON

    Struts2 + jQuery+JSON 实现ajax

    本篇文章介绍如何利用Struts2框架结合jQuery与JSON来构建一个简单的Ajax功能。 #### 一、环境搭建 1. **引入Struts2的JSON插件** 描述中提到的第一步是将Struts2的JSON插件加入到Web项目的lib目录下。这一步非常...

    Struts2JQueryJson

    Struts2JQueryJson是一个基于Struts2框架与jQuery库,结合JSON(JavaScript Object Notation)数据格式,实现Ajax异步加载对象数据的技术方案。在Web应用开发中,这种技术可以提升用户体验,因为它允许页面部分内容...

    ajax_struts_jquery_json级联菜单

    在"ajax_struts_jquery_json级联菜单"的场景中,我们将看到如何利用这四种技术协同工作来创建这样的功能。 首先,Struts框架在后台处理业务逻辑。当用户在前端选择了一个父级菜单项后,Struts Action会接收到这个...

    struts2 整合jQuery 和 json 的全部jar包

    在Struts2环境中,jQuery可以发起异步请求到Struts2 Action,接收并处理返回的JSON数据。 3. **JSON数据交换**:在Struts2 Action中,你可以创建一个返回JSON的对象,例如: ```java public class MyAction { ...

    Struts2 JQueryJson例子 .rar

    这个"Struts2 JQueryJson例子 .rar"压缩包很可能是包含了一个实际的项目实例,演示了如何在Struts2框架中利用JQuery和JSON进行数据交互。下面将详细讲解Struts2、JQuery和JSON的相关知识点: 1. **Struts2框架**: ...

    Struts2_jquery_json1.0.zip_Struts2 heloword_struts2_struts2 jque

    在Struts2中集成jQuery和JSON,可以极大地提升用户界面的响应速度和用户体验。 本实例"Struts2_jquery_json1.0.zip"显然演示了如何在Struts2框架中利用jQuery和JSON进行数据交换。Struts2的JSON插件允许我们轻松地...

    struts2+json

    在Struts2中集成JSON支持,首先需要添加相应的依赖,比如struts2-json-plugin,这个插件提供了JSON结果类型。当Action执行完毕后,可以返回一个JSON结果类型,Struts2会自动将Action的属性转换为JSON格式并返回给...

    struts2与json整合

    在探讨“Struts2与JSON整合”的主题时,我们深入分析了如何在Struts2框架中集成JSON技术,实现前后端数据的高效交互。Struts2作为一款流行的Java Web开发框架,提供了丰富的功能来简化Web应用程序的开发过程。而JSON...

    jquery ajax json struts2最简单例子测试成功

    2. **JSON与Struts2的结合**:Struts2 Action执行后返回一个JSON字符串,这个字符串被jQuery AJAX请求接收。通过Struts2的插件,如struts2-json-plugin,可以在Action类中直接返回一个包含JSON数据的对象,Struts2会...

    Struts2 与Jquery Ajax的json数据交换的典型范例

    在Struts2与jQuery的Ajax交互中,JSON扮演着数据载体的角色,可以高效地传输数据。 **2. Struts2 JSON插件** 为了支持JSON数据交换,Struts2提供了一个JSON插件。首先,需要在项目中添加该插件的依赖,并在struts....

    Struts2整合jquery利用json与后台交互

    整合Struts2和jQuery可以实现高效的前端与后端数据交互,尤其是通过JSON(JavaScript Object Notation)这种轻量级的数据交换格式,能够提升Web应用的性能和用户体验。 在Struts2中,我们可以创建一个Action类来...

    json2+jsonplugin struts2整合ajax时,使用json时需要的jar包

    在Struts2与Ajax的交互中,后端返回的JSON数据需要在前端被`json2.js`解析成可操作的对象,这样才能在页面上动态更新内容。 接下来,我们讨论Struts2的`jsonplugin`。Struts2 JSON插件是官方提供的一个扩展,它使...

    一个简单的struts2+json+jquery 交互的例子

    总结来说,这个例子展示了如何利用Struts2处理后端业务逻辑,使用JSON作为数据交换格式,以及通过jQuery在前端实现动态更新和与服务器的异步通信。了解和掌握这三个工具的整合使用,对于提升Web开发效率和用户体验...

    Jquery struts2 json 实现ajax

    标题 "Jquery struts2 json 实现ajax" 涉及到的是在Web开发中使用jQuery库与Struts2框架结合处理JSON数据的Ajax技术。这个主题主要关注如何通过前端的jQuery实现异步请求,与后端的Struts2框架进行交互,从而更新...

    Struts2+jQuery(不用JSON)实现局部刷新

    4. **Struts2与jQuery的集成**: - **Struts2的JSON插件**:虽然题目要求不使用JSON,但通常情况下,Struts2通过JSON插件返回数据给jQuery是最方便的方式。不过,我们可以通过设置Content-Type为"text/plain"或...

    struts2+jquery+json+ajax例子

    Struts2、jQuery、JSON和Ajax是Web开发中常见的技术栈,它们共同为构建动态、交互式的用户界面提供了强大的支持。下面将详细解释这些技术及其在登录示例中的应用。 Struts2是一个基于MVC(Model-View-Controller)...

    struts2+jquery+json 小例子

    - **前端交互**:jQuery通过AJAX与后台Struts2 Action通信,发送JSON请求并接收JSON响应。 - **数据展示**:Struts2 Action处理完业务逻辑后,返回JSON结果,jQuery解析后动态更新DOM展示数据。 博客链接中提到的...

    struts2+jquery+json

    Struts2、jQuery和JSON是Web开发中的三个关键技术,它们在构建动态、交互式的Web应用程序时发挥着重要作用。下面将分别对这三个技术进行详细解释,并探讨它们如何协同工作。 Struts2是一个基于MVC(Model-View-...

Global site tag (gtag.js) - Google Analytics