struts2框架整合json需要在项目中lib文件夹中引入struts2-core-2.1.8.jar、struts2-json-plugin-2.1.8.jar、xwork-core-2.1.6.jar、json-lib-2.2.3-jdk15.jar这几个核心jar包
Action层
public class TestJsonAction {
public boolean flag;
public String name;
public String execute(){
if("tom".equals(name)){
this.flag=false;
}else{
this.flag=true;
}
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}
struts.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="inhance" namespace="/test/json" extends="json-default">
<action name="checkName" class="com.test.TestJsonAction" method="execute">
<result name="success" type="json">
<!-- <param name="root">flag</param> -->
/user.jsp
</result>
</action>
</package>
</struts>
user.jsp 注意jquery.js的引用路径按照自己项目jquery框架所在的路径引
<%@page pageEncoding="utf-8"
contentType="text/html;charset=utf-8" %>
<html>
<head>
<title>userInterface</title>
<script type="text/javascript" src="resource/js/jquery.js"></script>
<script type="text/javascript">
$(function(){
$("#name").blur(function(){
var name = $("#name").val();
$.ajax({
url:"test/json/checkName.action",
data:"name="+name,
dataType:"json",
success:function(data){
<!--注意如果struts.xml配置文件用的是 <param name="root">flag</param>这种形式
那么取回调的数据时,就用if(data)就行啦data就是你要从服务端取出来的判断条件true或者false
当你struts.xml配置文件用的是用的是
<result name="success" type="json">
/user.jsp
</result>
这种形式的时候就必须用下面这种方式才能去除从服务器端的数据 -->
if(data.flag){
$("#checkname").html("此名字可用");
}else{
$("#checkname").html("此名字不可用");
}
}
});
});
});
</script>
</head>
<form action="" method="post">
姓名:<input type="text" id="name" name="user.name" /><span id="checkname" style="color:red;"></span>
</form>
</html>