初试SSH2中使用ajax和json进行交互

来源:互联网 发布:linux用dd制作启动盘 编辑:程序博客网 时间:2024/06/11 02:04

带队伍就是啥都得懂点。搞过solr,nutch,ssh2,搭建svn+邮件提醒+code review开源工具reviewboard等等,现在又要搞一下ajax+json。

之前一直在微软的C#.NET和ASP.NET下干活,使用ajax也是一些开源的控件,拖过了配一配就完,虽然简单但是也把自己残了。

现在不行了,都得用免费的开源的东西。

闲话少说,下面记录一下SSH2和ajax+json的使用:

时间紧迫,我没有研究原理上的东西,都是照葫芦画瓢。

1. 我使用的是stuct2对json的扩展,需要下载两个包:xwork-core-2.1.6.jar和struts2-json-plugin-2.1.8.jar

2. 使用jquery,需要引入jquery-1.11.2.min.js:

<script type="text/javascript" src="{your path}/jquery-1.11.2.min.js"></script>

这里要注意:SSH2框架中的路径是基于网站根路径的,而不是当前路径,因此上面的{your path}需要是相对于网站根路径的。

3. 编写Action类:

import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.opensymphony.xwork2.ActionSupport;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class JsonAction extends ActionSupport { private static final long serialVersionUID = 7443363719737618408L;  private List<User> map; public List<User> getMap() {return map;}public void setMap(List<User> map) {this.map = map;}/**  * ajax返回结果,也可是其他类型的,这里以String类型为例  */ private String result; @Override public String execute() throws Exception { map = new ArrayList<User>(); map.add(new User("aaa", "p1")); map.add(new User("bbb", "p2")); map.add(new User("ccc", "p3")); System.out.println("======"); System.out.println(name); if("张三".equals(name)) {   result = "'{\"result\":\"su\"}'"; } else    result = "'{\"result\":\"ff\"}'";  return SUCCESS; }  public String getName() {  return name; } public void setName(String name) {  this.name = name; } public String getInch() {  return inch; } public void setInch(String inch) {  this.inch = inch; } /**  *  * @Title: getResult  * @Description:json调取结果   * @param @return     * @return String * @throws  */ public String getResult() {  return result; }}

result用于返回一段json字符串。

map用于返回一个集合。

4. 配置stuct2文件:

<span style="white-space:pre"></span><package name="ajax" extends="json-default"><action name="JsonAction" class="org.ass.finicallab.util.JsonAction"><result type="json">
<span style="white-space:pre"></span><param name="root">map</param>
<span style="white-space:pre"></span><pre name="code" class="html"><span style="white-space:pre"></span><!-- <param name="root">result</param> -->

<span style="white-space:pre"></span></result></action>    <span style="white-space:pre"></span></package>

map是上面action类的map对象。

5. 编写jsp页面:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><base href="<%=basePath%>"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>测试</title><script type="text/javascript" src="/jquery-1.11.2.min.js"></script><script type="text/javascript">     function clickFunctino() {      //alert($("#xm").val());      var params = {      name : $("#xm").val(),      inch : $("#sg").val()      } ;            $.ajax({    type: "post",    url: "JsonAction.action",    data: params,    dataType:"json",    success: function(json){    alert(json);  //var obj = $.parseJSON(json);  //使用这个方法解析字符串json result  for(var i =0; i<json.length ; i++)//遍历访问map  {  alert(json[i].username);  }                //alert("json=" + obj.Username);                //var state_value = obj.result;                //alert(state_value);    },    error: function(json){     alert("json=" + json);     return false;    }    });         }</script></head><body>  <span>姓名:</span><input id="xm" type="text"/>  <br/>  <span>身高:</span><input id="sg" type="text"/>  <br/>  <input type="button" value="提交" id="tj" onclick ="clickFunctino()"/></body></html> 

亲测可以用。

另外据说在线访问jquery-1.11.2.min.js然后另存为的文件不好用,如果遇到jquery不生效的情况,可以直接去http://jquery.com/download/上面下载最新的jquery文件。

0 0
原创粉丝点击