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";
}