原创文章,转载请注明: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下,所以不用担心某个框架无包可用。

MyEclipse下Struts2配置使用和Ajax、JSON的配合的更多相关文章

  1. MyEclipse下JDBC-MySQL配置总结

    原创文章,转载请注明:MyEclipse下JDBC-MySQL配置总结  By Lucio.Yang 新手,初期配置未成功,后将网上的方法几乎全部尝试才弄好,下面的方法全而不简练,希望高手指正. 1. ...

  2. myEclipse下Maven配置操作

    一.Maven 安装与配置 1.点击计算机属性里的高级系统设置,点开环境变量进行配置 2.检验配置是否成功 二.手动创建一个Maven项目,并编译运行成功 1.创建一个文件夹作为项目的根目录 2. 在 ...

  3. MyEclipse下怎么配置Maven

    这个很简单. 前期博客,请移步: Eclipse下Maven新建项目.自动打依赖jar包(包含普通项目和Web项目) 截图示范:

  4. 【Struts2】SSH如何返回JSON数据

      在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是json格式了.在这里以简单的Demo总结两种ssh返回Json格式的数据 项目目录如下 主要是看 上图选择的部分 WebRoot里面就 ...

  5. struts2 + ajax + json的结合使用,实例讲解

    struts2用response怎么将json值返回到页面javascript解析,这里介绍一个struts2与json整合后包的用法. 1.准备工作 ①ajax使用Jquery:jquery-1.4 ...

  6. MyEclipse下创建的项目导入到Eclipse中详细的图文配置方法

    一.情景再现. 有些人比较喜欢用Myeclipse开发,有些人却比较喜欢用eclipse开发.但是其中有一个问题,Myeclipse里面的项目导入的时候出现了一个小小的问题. 如下: 二.说明问题 导 ...

  7. struts2:使用JQuery、JSON和AJAX处理请求

    目的 在struts2中使用JQuery.JSON.AJAX等技术处理用户请求,并返回结果.返回结果可以是以JSONObject的方式返回,也可以是以JSONArray方式返回结果. 实现 1. 创建 ...

  8. Eclipse和MyEclipse使用技巧--MyEclipse下创建的项目导入到Eclipse中详细的图文配置方法

    一.情景再现. 有些人比较喜欢用Myeclipse开发,有些人却比较喜欢用eclipse开发.但是其中有一个问题,Myeclipse里面的项目导入的时候出现了一个小小的问题. 如下: 二.说明问题 导 ...

  9. Myeclipse下配置SVN报错问题 svn: E175002: java.lang.RuntimeException: Could not generate DH keypair(转)

    转:http://blog.csdn.net/yulong_1988/article/details/51459936 在myeclipse下安装svn插件,出现了Could not generate ...

随机推荐

  1. .net通用权限框架B/S (三)--MODEL层(2)

    接上篇 实体数据模型保存后生成上下文和实体 上下文和实体实际是由根据.tt模版生成的 当实体数据模型.edmx更新保存后,上下文和实体就会根据.tt模版自动更新 生成的上下文继承 DbContext ...

  2. SQL Server数据库---》基础

    SQL Server:只是操作数据库的一个工具(这种工具,只是提供一个界面化的方式让用户方便操作数据库) 开启服务:点击:我的电脑(计算机)--管理--服务和应用程序--服务--开启SQL Serve ...

  3. 第六章SignalR的服务器广播

    第六章SignalR的服务器广播 1.概述: VS可以通过 Microsoft.AspNet.SignalR.Sample NuGet包来安装一个简单的模拟股票行情应用.在本教程的第一部分,您将从头开 ...

  4. 一个证书多次使用-导出p12文件

    在苹果开发者网站申请的证书,是授权mac设备的开发或者发布的证书,这意味着一个设备对应一个证书,但是99美元账号只允许生成3个发布证书,两个开发证书,这满足不了多mac设备的使用,使用p12文件可以解 ...

  5. C# 弹出窗口查看图片以及上传图片

    private void ShowSelectedPicture(string path) { FileStream fs = File.OpenRead(path); //OpenRead ; fi ...

  6. 关于ql createNativeQuery生成json数据

    当用createNativeQuery执行原生sql语句时,返回的数据json格式是只有值,没有键名的,在这种情况下要用Map.class对sql语句中的字段进行Map映射,这样返回的数据的json格 ...

  7. puts fputs printf的区别

    puts()显示字符串时自动在其后添加一个换行符,函数里的参数是一个地址,从该地址向后面输出,直到遇到空字符,所以要确保输出的字符串里要有空字符.与gets()函数一起使用. fputs()需要第二个 ...

  8. [poco] HttpRequest之post方法

    转自 http://www.cnblogs.com/yuanxiaoping_21cn_com/archive/2012/06/10/2544032.html #import <iostream ...

  9. style-11bak

    <resources> <style name="FullscreenTheme" parent="android:Theme.Holo"&g ...

  10. 纯css3实现tab选项卡

    <!doctype html> <html> <head> <title>Welcome</title> <meta http-equ ...