Web2.0的随波逐流,Ajax那是大放异彩,Struts2框架自己整合了对Ajax的原生支持(struts 2.1.7+,之前的版本可以通过插件实现),框架的整合只是使得JSON的创建变得异常简单,并且可以简单的融入到Struts2框架中,当然这只是在我们需要JSON的时候才会显得流光溢彩。
看到这篇文章,相信你已经对struts2和ajax有所了解
ajax的原理在这里就不用说了 struts的原理也不说了,直接上例子了,例子和网上的差不多,只是自己总结了一下知识点
要导入的包
struts的包 还有外加一个包 可以到网上去下载struts2-json-plugin-2.2.3.1.jar
先运行例子 自己琢磨琢磨,后面我会把 我的理解写上去
第一个例子:
index.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="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="./js/jquery-1.8.2.js"></script>
<script type="text/javascript">
function testJSON() {
alert(1);
var parsms={
name:$("#name").val(),
inch:$("#inch").val()
};
$.ajax({
type:'post',
url:'getUserName.action',
dataType:'json',
data:parsms,
dataType:"text",
success:function(json){
var obj = $.parseJSON(json);
var state_value = obj.result;
alert(state_value);
},
error:function(json){
alert("json="+json);
return false;
}
});
}
</script>
</head>
<body>
<body>
身高:<input type="text" id="inch"/>
姓名:<input type="text" id="name"/>
<input type="button" value="测试JSON" onClick="JavaScript:testJSON()"/>
</body>
</html>
action:
package com.test.action;
import com.opensymphony.xwork2.ActionSupport;
import com.test.bean.User;
public class JsonAction extends ActionSupport {
private String name;
private String inch;
private String result;
public String execute(){
if("234" == name.intern()){
result ="身份验证通过,身高为"+inch;
}else{
result="不是234";
}
return SUCCESS;
}
public String Info(){
return SUCCESS;
}
public String getResult() {
return result;
}
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;
}
}
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="TestJson" extends="json-default,struts-default" namespace="/">
<action name="getUserName" class="com.test.action.JsonAction" >
<result type="json"> //唯一的和普通配置不同的地方
</result>
</action>
<action name="infoaction" class="com.test.action.JsonAction" method="Info" >
<result name="success">/MyJsp1.jsp</result>
</action>
</package>
</struts>
第二个例子
action
package com.test.action;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts2.json.annotations.JSON;
import com.opensymphony.xwork2.ActionSupport;
import com.test.bean.Conmment;
public class JsonAction extends ActionSupport {
private List<Conmment> listConmment = new ArrayList<Conmment>();
public List<Conmment> getListConmment() {
return listConmment;
}
@SuppressWarnings("unused")
private String title;
private transient String content;
@JSON(serialize=false)
public String getContent() {
return content;
}
public String execute(){
title="123木头人";
content="哈哈,你是木头人";
loadContext();
return SUCCESS;
}
public void loadContext(){
Conmment c = new Conmment();
c.setContent("很不错么");
c.setId(1);
c.setNickName("哈哈");
Conmment c1 = new Conmment();
c1.setContent("嗯嗯 是不错的额么");
c1.setId(2);
c1.setNickName("呵呵");
listConmment.add(c);
listConmment.add(c1);
}
}
index.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 'MyJsp.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="./js/jquery-1.8.2.js"></script>
<script type="text/javascript">
$(function(){
$.getJSON("getUserName",function(data){
$.each(data.listConmment,function(i,item){
$(".top").append(
"<div>"+item.id+"</div>"+
"<div>"+item.nickName+"</div>"+
"<div>"+item.content+"</div><hr/>"
);
});
});
});
</script>
</head>
<body>
<input type="button" value="点击"/>
<div class="top"></div>
</body>
</html>
配置和上一个例子差不多
下面总结一下: 我也是很浅的总结 要是有的兄弟了解比较深的 请给我留言,谢谢
struts2会将action里的所有变量串行化为json 前提是 变量要有get方法
如果你不想要某个变量串行化为json 可以 在get方法 写上@JSON(serialize=false)
然后再在jsp页面上解析你要的数据,解析的方法就要用js或者是其他的框架