用到json,需要的全部jar包
commons-fileupload-1.2.1.jar
freemarker-2.3.15.jar
jstl.jar
ognl-2.7.3.jar
ojdbc6.jar
standard.jar
struts2-core-2.1.8.jar
struts2-json-plugin-2.1.8.jar
xwork-core-2.1.6.jar
代码编写顺序
--DAO
--Action
--struts.xml
--JSP:$.post, 回调函数
个人犯过的错:
在写Action时,直接只写private HashMap<String,Object> info;导致空指针异常
应写成private HashMap<String,Object> info = new HashMap<String,Object>();
个人认为原因是对象没有初始化。而java中String是默认初始化的,所以可以写成
private String name;
Action:
struts.xml:
Jsp:
commons-fileupload-1.2.1.jar
freemarker-2.3.15.jar
jstl.jar
ognl-2.7.3.jar
ojdbc6.jar
standard.jar
struts2-core-2.1.8.jar
struts2-json-plugin-2.1.8.jar
xwork-core-2.1.6.jar
代码编写顺序
--DAO
--Action
--struts.xml
--JSP:$.post, 回调函数
个人犯过的错:
在写Action时,直接只写private HashMap<String,Object> info;导致空指针异常
应写成private HashMap<String,Object> info = new HashMap<String,Object>();
个人认为原因是对象没有初始化。而java中String是默认初始化的,所以可以写成
private String name;
DAO:
public Cost findByName(String name) throws DAOException {
if(name == null || name.length()==0){
return null;
}
String sql = "select * from cost where name=?";
Connection con = DBUtil.getConnection();
try {
PreparedStatement ps = con.prepareStatement(sql);
ps.setObject(1, name);
ResultSet rs = ps.executeQuery();
if(rs.next()){
Cost cost = createCost(rs);
return cost;
}
} catch (SQLException e) {
e.printStackTrace();
throw new DAOException("查询资费名称失败",e);
}finally{
DBUtil.close(con);
}
return null;
}
Action:
public class CheckCostNameAction {
public String execute(){
ICostDAO dao = DAOFactory.getCostDAO();
try {
Cost cost =dao.findByName(name);
//没有找到,说资费名不存在
if(cost==null){
info.put("pass", true);
info.put("message", "资费名称可用");
}else{
info.put("pass", false);
info.put("message", "资费名称不可用");
}
} catch (DAOException e) {
e.printStackTrace();
//发生异常,给予错误提示
info.put("pass", "false");
info.put("message", "发生系统异常");
}
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Map<String, Object> getInfo() {
return info;
}
public void setInfo(Map<String, Object> info) {
this.info = info;
}
//input
private String name;
//output
private Map<String, Object> info = new HashMap<String, Object>();
}
struts.xml:
<!--用到json在包里要修改继承-->
<package name="cost" namespace="/cost" extends="json-default">
<!-- 校验资费名 -->
<action class="netctoss.action.CheckCostNameAction" name="checkCostName">
<result type="json" name="success">
<param name="root">info</param>
</result>
</action>
Jsp:
<!--用到jquery异步验证-->
<script language="javacript" type="text/javascript" src="../js/jquery-1.4.3.js"></script>
<input type="text" class="width300" name="cost.name" onblur="checkName();" id="costname"/>
<script language="javascript" type="text/javascript">
//校验资费名称
function checkName(){
var costName = $("#costname").val();
//校验资费名称是否为空
if(costName == ""){
$("#nameMsg").text("资费名称不能为空").addClass("error_msg");
return;
}
//校验资费名称是否重复
$.post(
"checkCostName",
{"name":costName},
function(data){
var info = data;//回调函数的参数接收请求返回的数据
$("#nameMsg").text(info.message);
if(info.pass){
//验证通过移除错误样式
$("#nameMsg").removeClass("error_msg");
}else{
//验证不通过添加错误样式
$("#nameMsg").addClass("error_msg");
}
}
);
}
</script>