struts2-json-plugin

本文介绍如何在Struts2框架中整合AJAX,实现JSON数据交互。通过具体示例展示了配置文件、Action类及前端页面的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.如果你的web框架中运用到ajax,而你又需要用户从前台发出强求,struts响应的结果是json数据格式。在此我神奇的告诉你,你在引入jar时,有两种选择,同样你的写法同样有两种。

    第一种:struts2-json-plugin-2.3.15.2.jar

    第二种:json-lib-2.3-jdk15.jar

                  ezmorph-1.0.6.jar

                  commons-lang-2.4.jar

                                    ---这里我只介绍第一种,因为第一种代码少。。第二种显得有点繁琐。(相对而言)

代码显示:Action

package com.ltx.shtoone.action;

import java.util.ArrayList;
import java.util.List;

import com.ltx.shtoone.domain.BookInfo;
import com.ltx.shtoone.domain.UserInfo;
import com.opensymphony.xwork2.ActionSupport;

public class Test2Action extends ActionSupport {
	private static final long serialVersionUID = 1L;
	private UserInfo user;
	private String message;
	private List<BookInfo> list_book;
	private List<String> list_str;
	public List<String> getList_str() {
		return list_str;
	}
	public void setList_str(List<String> listStr) {
		list_str = listStr;
	}
	public List<BookInfo> getList_book() {
		return list_book;
	}
	public void setList_book(List<BookInfo> listBook) {
		list_book = listBook;
	}
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
	public UserInfo getUser() {
		return user;
	}
	public void setUser(UserInfo user) {
		this.user = user;
	}
	public String test2(){
		if(this.getUser().getUsername().equals("admin") && this.getUser().getPassword().equals("admin")){
			this.setMessage("ltx");
			list_book=new ArrayList<BookInfo>();
			BookInfo book1=new BookInfo();
			book1.setBookId("shtoone");
			book1.setBookName("天下第一");
			book1.setBookPrice(21.5F);
			BookInfo book2=new BookInfo();
			book2.setBookId("SB101");
			book2.setBookName("天下第一");
			book2.setBookPrice(21.5F);
			BookInfo book3=new BookInfo();
			book3.setBookId("SB101");
			book3.setBookName("天下第一");
			book3.setBookPrice(21.5F);
			list_book.add(book1);
			list_book.add(book2);
			list_book.add(book3);
			this.setList_book(list_book);
			
			list_str=new ArrayList<String>();
			list_str.add("1");
			list_str.add("2");
			list_str.add("3");
			this.setList_str(list_str);
			return SUCCESS;
		}else{
			this.setMessage("error");
			return ERROR;
		}		
	}
}
这里我的action,值栈中存在的数据有一定的代表性;一个简单的数据变量(message),一个对象(User),一个对象封装成的list集合(list_book),还有一个是普通数据类型的list集合(list_str)。

而struts.xml呢?

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<package name="default" namespace="/" extends="json-default">
		<action name="login" class="com.ltx.shtoone.action.LoginAction" method="login">
			<result name="list" type="json"></result>
		</action>
		
		<action name="test" class="com.ltx.shtoone.action.TestAction" method="test">
			<result name="success" type="json">
			</result>
		</action>
		
		<action name="test1" class="com.ltx.shtoone.action.Test1Action" method="test1">
			<result name="success" type="json">
				<param name="root">message</param>
			</result>
			<result name="error" type="json">
				<param name="root">message</param>
			</result>
		</action>
		
		<action name="test2" class="com.ltx.shtoone.action.Test2Action" method="test2">
			<result name="success" type="json">
				<param name="includeProperties">message,list_book.*,ltx,list_str.*</param>
			</result>
			<result name="error" type="json">
				<param name="excludeProperties">list_book.*,user</param>
			</result>
		</action>
		
		<action name="test3" class="com.ltx.shtoone.action.Test3Action" method="test3">
			<result name="success" type="json">
				<param name="includeProperties">message,list_book.*,ltx,list_str.*</param>
			</result>
			<result name="error" type="json">
					<param name="wrapPrefix"><![CDATA[<html><body><h1>]]></param>
					<param name="root">message</param>
	  				<param name="wrapSuffix"><![CDATA[</h1></body></html>]]></param>
			</result>
		</action>
	</package>
</struts>
我的xml中灰常具有代表性,将值栈中内容转变成json格式时,我的param很有特点:rootincludeProperties,excludeProperties,wrapSuffix,wrapSuffix。json中的param很有意思,有很多,自己百度吧。

前台jsp:

<%@ page language="java" import="java.util.*" 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">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
	<script type="text/javascript" src="scripts/jquery-1.6.2.min.js" charset="UTF-8"></script>
	<script type="text/javascript">
		$(document).ready(function(){
			$("#btn").live("click",function(){
				var context="";
				$.ajax({
	                url: "test3",
	                type: "post",
	                dataType:"json",
	                data: $("#form").serialize(),
	                success: function (data) {
	                	if(data.message=="ltx"){
	                		context+="<table border='1'>";
							context+="<tr>";
							context+="<th>编号</th>";
							context+="<th>书名</th>";
							context+="<th>单价</th>";
							context+="</tr>";
	                		$.each(data.list_book,function(index,book){
	                			context+="<tr>";
								context+="<td>"+book.bookId+"</td>";
								context+="<td>"+book.bookName+"</td>";
								context+="<td>"+book.bookPrice+"</td>";
								context+="</tr>";
	                		});
	                		context+="</table>";	
	                		
	                		$.each(data.list_str,function(index,str){
	                			alert(str);
	                		});                		
	                	}else{
	                		alert(data);
	                		context+="没有数据哦!!";
	                	}
	                	$("#content").html(context);
	                }
                });
			});
		});
	</script>
  </head>
  
  <body>
    <form id="form">
    	用户名:<input type="text" name="user.username"/>
    	密码:<input type="password" name="user.password"/>
    	<input type="button" value="aa" id="btn"/>
    </form>
    <div id="content"></div>
  </body>
</html>







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值