zoukankan      html  css  js  c++  java
  • 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.java
    package
    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 DAO DrugInfoOperate DrugInfoOp=new DrugInfoOperate(); System.out.println("2"); List<DrugInfo> list=DrugInfoOp.queryDrugInfoWithKey(this.queryText); System.out.println("3"); //遍历数据集 for( DrugInfo druginfo:list ){ //获取数据,hibernate POJO String name=druginfo.getName(); String func=druginfo.getFunc(); String drugUsage=druginfo.getDrugUsage(); Timestamp prodDate=druginfo.getProdDate(); String manu=druginfo.getManufacturer(); //打包json JSONObject 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下,所以不用担心某个框架无包可用。

  • 相关阅读:
    python排序
    python中常用的九种数据预处理方法分享
    8089汇编 源程序
    8086汇编 栈操作
    8089汇编 运算符指令
    8089汇编 标志寄存器
    8086汇编 段寄存器
    8086汇编 Debug 使用
    8086汇编 CPU 寄存结构
    8086汇编 内存交互
  • 原文地址:https://www.cnblogs.com/lucio_yz/p/4322760.html
Copyright © 2011-2022 走看看