日期:2014-05-16  浏览次数:20672 次

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!

?

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

感激不尽!
???