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 ...
随机推荐
- C#格式化成小数
datagridview某列格式化成两位小数 ............................................................................. ...
- 动画原理——线性来回运动&&波动
书籍名称:HTML5-Animation-with-JavaScript 书籍源码:https://github.com/lamberta/html5-animation 1.在正选函数中,随角度的增 ...
- 关于nvarchar与varchar的区别
varchar(x), nvarchar(x)这里面的x指的是最大的列宽 如果存储的字符串没达到最大列宽 那么他也只获得对应的列宽的存储空间 并不意味着系统就会给它分配x的空间给它 varch ...
- iphone--有关日历中NSDateFormatter中英文
在使用日历使用中,获取星期的时候 NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFo ...
- 学习dijk最短路径中
#include<iostream> #include<math.h> #include<stdio.h> #include<algorithm> #i ...
- JavaWeb核心编程之(三.3)Servlet Init 配置
Servlet初始化 可以传入一些参数 通过 <init-param>来配置 新建 servletinit项目 新建包 com.xiaoan.test->new Class(Test ...
- 常用Python第三方库 简介
如果说强大的标准库奠定了python发展的基石,丰富的第三方库则是python不断发展的保证,随着python的发展一些稳定的第三库被加入到了标准库里面,这里有6000多个第三方库的介绍:点这里或者访 ...
- Application Loader下载安装和上传IOS app程序
如果您安装了最新版的XCode开发环境.对于在4.2及以上版本,Developer/Applications/Utilities目录中已经有ApplicationLoader程序,无需执行以下单独安装 ...
- Android 如何让 app 自行处理 power key M
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- flush privileges是什么意思?
flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里.MySQL用户数据和权限有修改后 ...