浅谈 struts2+ajax

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或者是其他的框架

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值