javascript
MyEclipse下Struts2配置使用和Ajax、JSON的配合
原創文章,轉載請注明:MyEclipse下Struts2配置使用和Ajax、JSON的配合??By Lucio.Yang
新手,初學Struts2的配置,同時嘗試與Ajax通過JSON交互。首先介紹MyEclipse下Struts2的配置。
1.Struts2的配置
右鍵項目,MyEclips->project facets->install apache struts(2.x)facets
URL pattern我選擇了*.action,libraries只選擇了core
1.1撰寫action
新建package,名為action。在action中新建hd_query_action.java,調用hibernate方法,實現數據獲取,并返回。
//hd_query_action.javapackage action; import com.opensymphony.xwork2.ActionSupport;import java.sql.Timestamp; import java.util.List; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.test.JSONAssert;import com.cc.hibernate.*; public class hd_query_action extends ActionSupport{private String queryText;//http請求參數,命名和http參數名必須相同。private JSONArray result;//返回的json//請求參數需要set方法,名稱一定要是這種格式public void setQueryText( String queryText ){this.queryText = queryText;}//返回結果需要get方法public JSONArray getResult(){return result;}//程序入口public String execute() throws Exception {//定義druginfo數組System.out.println(this.queryText);JSONArray jsonArray=new JSONArray();//hibernate DAODrugInfoOperate DrugInfoOp=new DrugInfoOperate();System.out.println("2");List<DrugInfo> list=DrugInfoOp.queryDrugInfoWithKey(this.queryText);System.out.println("3");//遍歷數據集for( DrugInfo druginfo:list ){//獲取數據,hibernate POJOString name=druginfo.getName();String func=druginfo.getFunc();String drugUsage=druginfo.getDrugUsage();Timestamp prodDate=druginfo.getProdDate();String manu=druginfo.getManufacturer();//打包jsonJSONObject json=new JSONObject();json.put("name",name);json.put("func",func);json.put("drugUsage", drugUsage);json.put("prodDate", prodDate);json.put("manufacturer", manu);//加入json數組 jsonArray.add(json);}this.result=new JSONArray();//返回結果初始化result=jsonArray;return SUCCESS;} }
1.2配置struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts><package name="action" extends="json-default"><action name="hdQueryAction" class="action.hd_query_action"><result type="json"></result></package> </struts>1.3action打包json
用到了net.sf.json中的jar來解析json,所需jar包下載 百度云,下載后導入工程的lib。
2.JavaScript方法解析
<script>var json,json_str;//數據提交function submit_query(){var query_text=document.getElementById("u13").value;var reg=new RegExp(" ","g"); //創建正則RegExp對象 //將空格替換為-query_text=query_text.replace(reg,"-");if( query_text.length>0 ){//調用jquery的ajax方法 $.ajax({type:"post",url:"hdQueryAction.action",data:{queryText:query_text},dataType:"text",success:function(msg){json_str=eval("("+msg+")");//alert(json_str.result);json=json_str.result;//第二種方法 //var obj=$.parseJSON(msg);//var state_value=obj.result;//alert(state_value);//json=state_value;//alert(json[0]);var i=0;var far=document.getElementById("u15");far.innerHTML="";for( i=0;i<json.length;i++ ){var divC=document.createElement("div");divC.setAttribute("class","query_results");var divB=document.createElement("div");divB.setAttribute("class","query_results_border");var divN=document.createElement("div");divN.setAttribute("class","query_results_name");divN.innerHTML=json[i].name;var divF=document.createElement("div");divF.setAttribute("class","query_results_func");divF.innerHTML=json[i].func;var divU=document.createElement("div");divU.setAttribute("class","query_results_usage");divU.innerHTML=json[i].drugUsage;var divM=document.createElement("div");divM.setAttribute("class","query_results_manu");divM.innerHTML=json[i].manufacturer;divC.appendChild(divB);divC.appendChild(divN);divC.appendChild(divF);divC.appendChild(divU);divC.appendChild(divM);far.appendChild(divC);}var divAuto=document.createElement("div");divAuto.setAttribute("class","clearfloat");far.appendChild(divAuto);}});}else{alert("please input something");}}</script>?
3.Hibernate與Struts2沖突
在Struts2的action里使用網頁傳參并使用hibernate的查詢方法或者更新方法可能失效,原因參見關于Struts2與hibernate結合出錯的問題!------java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I問題解決及總結。原因為MyEclipse導入的struts2和Hibernate的jar包沖突,刪除沖突的包的依賴即可。親測可用,最后的jar包在一個lib下,所以不用擔心某個框架無包可用。
?
轉載于:https://www.cnblogs.com/lucio_yz/p/4322760.html
總結
以上是生活随笔為你收集整理的MyEclipse下Struts2配置使用和Ajax、JSON的配合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 泰拉瑞亚雪人军团怎么召唤
- 下一篇: 腾达 NH316 无线路由器网速控制设置