Strtus2处理ajax请求

regist.jsp
	 <script type="text/javascript">
		function checkUsername() {
			//1.获取文本框中的信息
			var usernameValue = $("#username").val();
			//2.向服务器发送请求(向checkUsername这个Action发送)
			$.post("/WebStruts2.1/checkUsername",{"username":usernameValue},function(data){
				//将data转化为js对象
				var jsonObject = eval(data);
				var html="";
				if(jsonObject.flag) {
					//可以使用
					html="<font color='green'>"+jsonObject.message+"</font>";
				} else {
				//不可以使用
					html="<font color='red'>"+jsonObject.message+"</font>";
				}
				$("#username_msg").html(html);
			},"json");
		}
	</script> 

  </head>
  
  <body>
    	UserName:<input type="text" name="username" id="username" onblur="checkUsername()"><span id="username_msg"></span>
    	<br>
    	PassWord:<input type="password" name="password">
  </body>
UserAction
	public void checkUsername() {
		//处理响应页面中文乱码
		ServletActionContext.getResponse().setCharacterEncoding("UTF-8");
		
		//获取请求参数
		String username = ServletActionContext.getRequest().getParameter("username");
		
		Result result = new Result();
		if("tom".equalsIgnoreCase(username)) {
			//不可以使用
			result.setFlag(false);
			result.setMessage("用户名不可用");
		} else {
			//可以使用
			result.setFlag(true);
			result.setMessage("用户名可用");
			
		}
		ObjectMapper mapper = new ObjectMapper();
		try {
			String json = mapper.writeValueAsString(result);
			//通过reponse响应数据到浏览器
			ServletActionContext.getResponse().getWriter().write(json);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

案例—查找商品信息

使用struts2提供的json插件?
1.将我们自己配置文件中的<package extends=”json-default”>.
2.Action的返回视图<result name=”” type=”json”>
3.因为我们配置了上面两步,那么struts2框架就会将valueStack中的栈顶元素转换成json响应到浏览器

product.jsp
	 <script type="text/javascript">
		$(function() {
			$("#a").toggle(function(){
				//第一次点击向服务器发送showProduct这个Action请求,获取商品信息
				$.post("WebStruts2.1/showProduct",function(data){
				//alert(1);
				//将响应回的json数据转换为HTML格式在div中展示
				var html = "<table border='1'><tr><td>名称</td><td>数量</td><td>价格</td></tr>";
				var jsonObject = eval(data);
				for(var i=0;i<jsonObject.length;i++) {
				
					html+="<tr><td>"
					+jsonObject[i].name
					+"</td><td>"
					+jsonObject[i].count
					+"</td><td>"
					+jsonObject[i].price
					+"</td></tr>"
				}
				html+="</table>";
				$("#productMsg").html(html);
				
				},"json");
				
			},function(){
				//第二次点击清空数据
				$("#productMsg").html("");
			});
			
		});
	
	</script>
 
  </head>
  
  <body>
    	<a href="javascript:void(0)" id="a">显示商品信息</a>
    	<div id="productMsg"></div>
  </body>
showProduct(action)
<package name="default" namespace="/" extends="json-default">
		<action name="showProduct" class="Action.NewProductAction" method="showProduct">
			<!-- 这边type要设置为json -->
			<result name="success" type="json">
				<param name="root">list</param>
				<!-- <param name="excludeProperties">\[\d+\]\.</param> -->
				<!-- <param name="includeProperties">list\[\d+\]\.name,list\[\d+\]\.count,list\[\d+\]\.price</param> -->
				
			
			</result>
		
		</action>
		
	</package>
ProdcutAction
public String showProduct() {
		Product p1 = new Product();
		p1.setName("手机");
		p1.setCount(2);
		p1.setPrice(5000);
		
		Product p2 = new Product();
		p2.setName("电脑");
		p2.setCount(1);
		p2.setPrice(10000);
		
		ArrayList<Product> list = new ArrayList<Product>();
		list.add(p1);
		list.add(p2);
		
		//将list压入valueStack栈顶
		ActionContext.getContext().getValueStack().set("list", list);
		
		return "success";
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值