struts中使用json的路程为前台发出请求后台从数据库中查询出数据然后转化为json字符串,前台页面中解析json字符串从而完成一个请求。下边就按照这个逻辑来示例json的基础使用。
1、前台jsp界面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<script src="js/jquery-1.8.3.min.js">
</script>
<script>
$.post("homePagePictureAction" ,
{
"page" : "001",
"position" : "00101"
},
// 指定回调函数
function(data)
{
var array = data.picture;
<span style="color:#ff0000;">var json1=eval("("+array+")");</span>
$("<img class='para' />").attr("src", json1[0].path).appendTo("#show");
$("#show").append("--------as121312df-----------"+typeof(json1[0].alt) + "----"+ json1[0].alt);
},
// 指定服务器响应为JSON数据
"json");
</script>
</head>
<body>
<button>向页面发送 HTTP POST 请求,并获得返回的结果</button>
<div id="show">
</div>
</body>
</html>
2、后台action
/**
*
*/
package com.artpri.action;
import java.util.List;
import org.apache.struts2.json.annotations.JSON;
import com.opensymphony.xwork2.Action;
/**
* 从数据库中取到首页图片相关信息
* @author 王校兵
* @version 1.0, 2016-2-28
*/
public class HomePagePictureAction extends BaseAction{
private String page;
private String position;
/**
* 经查询返回数据库中指定页面指定位置的的图片的信息
* */
private String picture;
/**
* 处理从数据库中取到图片相关信息的逻辑跳转
* @return 跳转页面所对应的代码
*/
public String execute(){
picture = getHomePagePictureService().getHomePagePicture(page, position);
return Action.SUCCESS;
}
public List getHomePagepicture() {
return homePagepicture;
}
public String getPicture() {
return picture;
}
public void setHomePagepicture(List homePagepicture) {
this.homePagepicture = homePagepicture;
}
public void setPage(String page) {
this.page = page;
}
public void setPicture(String picture) {
this.picture = picture;
}
public void setPosition(String position) {
this.position = position;
}
}
2、Service层
<pre name="code" class="java">/**
*
*/
package com.artpri.service.impl;
import java.util.List;
<span style="color:#ff0000;">import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;</span>
import com.artpri.service.HomePagePictureService;
import com.artpri.util.JsonTools;
/**
* 继承自HomePagePictureService并且实现其中的方法
* @author 王校兵
*
*/
public class HomePagePictureServiceImpl extends BaseService implements HomePagePictureService {
@Override
public String getHomePagePicture(String page, String position) {
// TODO Auto-generated method stub
position = position + "%";
List li = getHomePagePictureDao().getHomePagePicture(page, position);
JSONArray array = new JSONArray();
for (int i = 0; i < li.size(); i++) {
Object[] obj = (Object[]) li.get(i);
<span style="color:#ff0000;"> JSONObject jsonObject = new JSONObject(); </span>
jsonObject.put("path", obj[0]);
jsonObject.put("alt", obj[1]);
jsonObject.put("url", obj[2]);
<span style="color:#ff0000;">array.put(jsonObject);</span>
}
System.out.println("array-------" + array);
return array.toString();
}
}
3、配置struts.xml
<pre name="code" class="html"><?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>
<!--下述语句是将struts2交给spring管理 -->
<constant name="struts.objectFactory" value="spring" />
<!-- 当struts配置文件发生改变时系统是否重新加载该文件 -->
<constant name="struts.configuration.xml.reload" value="false" />
<!-- 开发模式下使用,这样可以打印出更详细的错误信息 -->
<constant name="struts.devMode" value="true" />
<span style="color:#ff0000;"><constant name="struts.i18n.encoding" value="UTF-8"/></span>
<package name="welcome" extends="<span style="color:#ff0000;">json-default</span>" namespace="/">
<action name="homePagePictureAction" class="homePagePictureAction">
<result type="json">
<param name="noCache">true</param>
<param name="contentType">text/html</param>
</result>
</action>
</package>
</struts>
经过以上配置这样就可以使用json了
<strong><u><span style="font-size:32px;color:#ff0000;">注意:文中红色部分一定要注意</span></u></strong>