Ajax之在s2sh中的json用法

本文介绍了在Struts2+Spring+Hibernate(S2SH)框架中使用Ajax和JSON的方法。首先,需要下载json.jar包来处理集合数据的JSON转换。接着通过案例展示前端Ajax请求和后端返回JSON数据的实现过程。

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

问题?Ajax之在s2sh中的json用法

1.json.jar包的下载

在用Ajax的时候很多情况下我们需要将大量在集合中的数据传输到前端,这个时候就需要转化成json数据,但是三大框架没有自动转化成json数据的功能(基本类型除外)。就需要用到jar包

下载:点击打开链接


2.案例:

(1)前端Ajax:

<%@ 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>My JSP 'findManagers.jsp' starting page</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">
	<meta http-equiv="Content-Type" content="text/jsp;charset=utf-8">
	<script type="text/javascript" src="${pageContext.request.contextPath }/script/jquery/jquery-1.11.0.js"></script>
	<script type="text/javascript">
		$(function(){
			alert("sdssd");
		/*离开下拉列表焦点处理*/
			
			var province1="";
			var city1="";
			var county1="";
			
			$("#provice_id").change(function(){
			var proviceName = document.getElementById("provice_id").value;
			province1 = proviceName;
				if(proviceName==""){
					alert("没选中值!无法查询!"+proviceName);
				}else{
					$.ajax({
						type:"POST",
						url:"manage_findAllManager!findAllManager",
						dataType:"json",
						data:{province:proviceName},
						success:function(data){/*成功后走的方法*/
							$.each(data, function(i,item){
								/*alert("用户名为:"+item.uid);*/
								var statemnet = "<a href='${pageContext.request.contextPath}/manager/permission_update2?uid="+item.uid+"' style='text-decoration: none;color:red;' target='_blank'>"+item.username+"</a><br/>";	
								$("#item1").append(statemnet);
							}); },
						error:function(){
							alert("方法执行不成功!");
						}
					});		
				}
			});

			/*city Ajax*/
			 $('#city_id').change(function(){
				var cityName = document.getElementById("city_id").value;
				city1 = cityName;
				var url = "manage_findAllManager!findAllManager";
				var data = {city:cityName,province:province1};
				if(cityName==""||province1==""){
					alert("您没有选中城市!");
				}else{
						$.ajax({
							type:"POST",
							url:url,
							dataType:"json",
							data:data,
							success:function(data1){
								$("#item1").html("");
								$.each(data1,function(i, item) {
									var statemnet = "<a href='${pageContext.request.contextPath}/manager/permission_update2?uid="+item.uid+"' style='text-decoration: none;color:red;' target='_blank'>"+item.username+"</a><br/>";	
									$("#item1").append(statemnet);
								});
							},
							error:function(){
								alert("无法发送数据,请稍等.....");
							}
						});
					}
				});

			/*count Ajax*/
				$('#county_id').change(function(){
				var countyName = document.getElementById("county_id").value;
				county1 = countyName;
				var url = "manage_findAllManager!findAllManager";
				var data = {county:countyName,city:city1,province:province1};
				if(countyName==""||province1==""||city1==""){
					alert("您没有选中城市!");
				}else{
					$.ajax({
						type:"POST",
						url:url,
						dataType:"json",
						data:data,
						success:function(data1){
							$("#item1").html("");
							$.each(data1,function(i, item) {
									var statemnet = "<a class='a' href='${pageContext.request.contextPath}/manager/permission_update2?uid="+item.uid+"' style='text-decoration: none;color:red;' target='_blank'>"+item.username+"</a><br/>";	
									$("#item1").append(statemnet);
								});
							},
						error:function(){
							alert("无法发送数据,请稍等");
						}
					});

				}
			});
			/*towns Ajax*/
			$('#towns_id').change(function(){
				var townsName = document.getElementById("towns_id").value;
				var url = "manage_findAllManager!findAllManager";
				var data = {towns:townsName,county:county1,city:city1,province:province1};
				if(townsName==""||province1==""||city1==""||county1==""){
					alert("您没有选中城市!");
				}else{
						$.ajax({
							type:"POST",
							url:url,
							dataType:"json",
							data:data,
							success:function(data1){
								$("#item1").html("");
								$.each(data1,function(i, item) {
									var statemnet = "<a class='a' href='${pageContext.request.contextPath}/manager/permission_update2?uid="+item.uid+"' style='text-decoration: none;color:red;' target='_blank'>"+item.username+"</a><br/>";	
									$("#item1").append(statemnet);
								});
							},
							error:function(){
								alert("无法发送数据,请稍等");
							}
						});
					}
			}); 
		});
	</script>
	
  </head>
  <body>
  <div style="margin-top: 10px;margin-left: 400px;">
  	<div>
  		<select id="provice_id">
    	<option value="">--省--</option>
    	<option value="湖北省">湖北省</option>
    </select>
    <select id="city_id">
    	<option value="">--市--</option>
    	<option value="襄阳市">襄阳市</option>
    </select>
    <select id="county_id">
    	<option value="">--县--</option>
    	<option value="谷城县">谷城县</option>
    </select>
    <select id="towns_id" name="addManager.towns">
		    <option value="">--乡镇--</option>
		    <option value="城关镇">城关镇</option>
			<option value="石花镇">石花镇</option>
			<option value="冷集镇">冷集镇</option>
			<option value="紫金镇">紫金镇</option>
			<option value="盛康镇">盛康镇</option>
			<option value="南河风景区">南河风景区</option>
			<option value="庙滩镇">庙滩镇</option>
			<option value="茨河镇">茨河镇</option>
			<option value="赵湾乡">赵湾乡</option>  				
	</select>
  	</div>
	<div id="item1"></div>
	</div>
  </body>
</html>

(2)后端S2SH的action方法:

	public String findAllManager(){
		/*1.get value of select*/
		String Province = request.getParameter("province");
		String city = request.getParameter("city");
		String county = request.getParameter("county");
		String towns = request.getParameter("towns");
		
		/*2.stitch character string*/
		StringBuffer address = new StringBuffer();
		if(Province!=null){
			address.append(Province);
			if(city!=null){
				address.append("-"+city);
				if(county!=null){
					address.append("-"+county);
					if(towns!=null){
						address.append("-"+towns);
					}
				}
			}
		}
		
		String address1 = address.toString();
		System.out.println(address1);
		
		/*3.insert character string into find method*/
		/*4.response result list*/
//		JSONObject jsonObject = new JSONObject();
		
		List<TbManager> managers = managerService.findAllManager(address1);
		System.out.println(managers.size());
		JsonConfig config = new JsonConfig(); //建立配置文件
		config.setIgnoreDefaultExcludes(false);//设置默认忽略
		config.setExcludes(new String[]{"tbManagerRoles"});
		//此处是亮点,只要将所需忽略字段加到数组中即可,在上述案例中,
		//所要忽略的是“libs”,那么将其添到数组中即可,在实际测试中,
		//我发现在所返回数组中,存在大量无用属性,
		//如“multipartRequestHandler”,“servletWrapper”,
		//那么也可以将这两个加到忽略数组中.
		try {
			JSONArray array = JSONArray.fromObject(managers, config);//加载配置文件
			System.out.println(array.toString());
			HttpServletResponse response = ServletActionContext.getResponse();
			response.setContentType("text/html;charset=UTF-8");
			PrintWriter out = response.getWriter();
//			PrintWriter out = ServletActionContext.getResponse().getWriter();
			
			out.print(array);
			out.flush();
			out.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

注意:在将集合类型转化为json对象的时候,注意集合中的对象成员变量是否存在与其他表或者实体类有依赖关系,若有需要设置忽略掉,如何忽略上面例子已给出。小弟不才,是我做项目的时候给的经验,这个问题曾困扰了我 两个星期!! 大哭




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值