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下,所以不用担心某个框架无包可用。
MyEclipse下Struts2配置使用和Ajax、JSON的配合的更多相关文章
- MyEclipse下JDBC-MySQL配置总结
原创文章,转载请注明:MyEclipse下JDBC-MySQL配置总结 By Lucio.Yang 新手,初期配置未成功,后将网上的方法几乎全部尝试才弄好,下面的方法全而不简练,希望高手指正. 1. ...
- myEclipse下Maven配置操作
一.Maven 安装与配置 1.点击计算机属性里的高级系统设置,点开环境变量进行配置 2.检验配置是否成功 二.手动创建一个Maven项目,并编译运行成功 1.创建一个文件夹作为项目的根目录 2. 在 ...
- MyEclipse下怎么配置Maven
这个很简单. 前期博客,请移步: Eclipse下Maven新建项目.自动打依赖jar包(包含普通项目和Web项目) 截图示范:
- 【Struts2】SSH如何返回JSON数据
在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是json格式了.在这里以简单的Demo总结两种ssh返回Json格式的数据 项目目录如下 主要是看 上图选择的部分 WebRoot里面就 ...
- struts2 + ajax + json的结合使用,实例讲解
struts2用response怎么将json值返回到页面javascript解析,这里介绍一个struts2与json整合后包的用法. 1.准备工作 ①ajax使用Jquery:jquery-1.4 ...
- MyEclipse下创建的项目导入到Eclipse中详细的图文配置方法
一.情景再现. 有些人比较喜欢用Myeclipse开发,有些人却比较喜欢用eclipse开发.但是其中有一个问题,Myeclipse里面的项目导入的时候出现了一个小小的问题. 如下: 二.说明问题 导 ...
- struts2:使用JQuery、JSON和AJAX处理请求
目的 在struts2中使用JQuery.JSON.AJAX等技术处理用户请求,并返回结果.返回结果可以是以JSONObject的方式返回,也可以是以JSONArray方式返回结果. 实现 1. 创建 ...
- Eclipse和MyEclipse使用技巧--MyEclipse下创建的项目导入到Eclipse中详细的图文配置方法
一.情景再现. 有些人比较喜欢用Myeclipse开发,有些人却比较喜欢用eclipse开发.但是其中有一个问题,Myeclipse里面的项目导入的时候出现了一个小小的问题. 如下: 二.说明问题 导 ...
- 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 ...
随机推荐
- INPUT[type=file]的change事件不触发问题
在网页上要操作文件通常会使用INPUT[type=file]控件,但这个控件的设计很蛋疼.它不像其它编程语言中文件选择后会触发一个事件,只是让上面的文字改变,而这个改变可能会触发change事件而已. ...
- 在IOS开发中,属性名为id的处理方法
在.h 文件中定义属性名为id { int _id; } @property (nonatomic, assign) int id; 在.m 文件中用synthesize声明该属性,会自动生成get和 ...
- 浅谈C中的指针和数组(一)
本文转载地址:http://www.cnblogs.com/dolphin0520/archive/2011/11/09/2242138.html 在原文的基础上加入自己的想法作为修改. 指针是C/C ...
- 关于函数strtok和strtok_r的使用要点和实现原理(二)
http://www.cnblogs.com/stemon/p/4013264.html已经介绍了使用strtok函数的一些注意事项,本篇将介绍strtok的一个应用并引出strtok_r函数. 1. ...
- gui组件
//guI; graphics user interfaceimport javax.swing.*;import java.awt.*; public class Main { public sta ...
- background:url 的使用方法
#pingfen li{ width:27px; float:left; height:28px; cursor:pointer; background:url( ; list-style:none; ...
- vb 添加状态栏
1.新建一工程2.添加"部件" ms windows common controls 6.03.将StatusBar控件加至窗体中4.右键点击该控件,选"属性" ...
- Html 笔记1
标题(Heading)是通过 <h1> - <h6> 等标签进行定义的. <h1>这是标题</h1> 段落是通过 <p> 标签进行定义的. ...
- sshuttle基于VPN的透明代理,安全连接
sshuttle基于VPN的透明代理, 通过 ssh 创建一条从你电脑连接到任何远程服务器的 VPN 连 sudo sshuttle -r username@sshserver 0.0.0.0/0 - ...
- 《windows程序设计》学习_4:文本输出,加滚动条
//总行数 #define NUMLINES ((int) (sizeof sysmetrics / sizeof sysmetrics [0])) struct { int Index ; TCHA ...