Struts2中使用jquery的ajax

      之前一直害怕SSH~感觉条条框框的东西很难学习似的,最多用那么一下子的hibernate来做数据库操作,前几天才接触的Struts2,突然又感觉这家伙真的很强大,尝试着用一下子,发现比jsp+servlet真的快速简便得多,于是赶紧上贴分享一下学到的东西。

      实现的 功能:异步提交注销登录

      用到的技术:struts2   json   jquery

      过程:

LogOutActio代码:

import java.util.HashMap;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LogOutAction extends ActionSupport   {
 private Integer uid;
 private Map<String, Object> msg = new HashMap<String, Object>();

 public Map<String, Object> getMsg() {
  return msg;
 }

 public void setMsg(Map<String, Object> msg) {
  this.msg = msg;
 }

 public Integer getUid() {
  return uid;
 }

 public void setUid(Integer uid) {
  this.uid = uid;
 }
 @Override
 public String execute() throws Exception {

  Map<String, Object> sessionMap = ActionContext.getContext()
    .getSession();
  Integer id=(Integer) sessionMap.get("id");
  if (id == uid && uid!=null) {
   sessionMap.remove("id");
   sessionMap.clear();
   msg.put("s", 1);
  }
   return SUCCESS;
 }

}

 

struts.xml代码:

<package name="default" extends="json-default" namespace="/">

  <action name="LogOut" class="com.blog.user.Action.LogOutAction">
   <result type="json">
    <param   name="root">msg</param>
   </result>
  </action>
jquery代码:

$(function() {
 $("#logOut").click(function() {
  var uid = $("#uid").val();
  $.ajax({
   type : "POST",
   url : "LogOut.action",
   data : {
    uid : uid
   },
   dataType : 'json',
   success : function(data) {
    //alert(JSON.stringify(data.s));
    if (data.s == 1) {
     alert("注销成功,返回登陆页面");
     location.href = "/BlogSystem01/login.jsp";
    } else {
     alert("操作失败,请重新登陆!");
     location.href = "/BlogSystem01/login.jsp";
    }
   }

  });
 }

 );
});

 jsp代码:

<a href="#"  id="logOut>注销</a>

 <input type="hidden" id="uid" value="<s:property  value='#session.id'  />">

关键点:

1)Action里需要添加一个msg的属性。通过这个属性把信息回传给struts,msg.put("s", 1);就是保存一个map类型的信息。

2)struts的配置:

--首先需要导入struts2-json-plugin-2.2.3.jar。

--然后package的属性:extends="json-default" 。

--action里没写name=“success”时,默认就是success。<result type="json">
--result里 <param   name="root">msg</param>中name=“root”是json的根,msg是action里回传数据的那个  属性。

--在js里的DataType=“json”。function里的data就是struts.xml里的msg的数据。所以要访问msg里的“s”,则要data.s!

 

至此!有不当之处,万求提出更改意见~~

感激不尽!
   

你可能感兴趣的:(struts2)