A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 大山哥哥 于 2017-3-30 19:59 编辑

本次案例演示的是,通过Ajax异步请求后台数据,配置struts,使用action直接向该ajax请求响应对象json数据的过程。
第一步,前台页面异步请求
[AppleScript] 纯文本查看 复制代码
var url = "${pageContext.request.contextPath}/userAction_calMethod.action";
                                            $.post(url,{'param':value},function(data){
                                                    if(data.resultCode == "200"){
                                                            $.messager.alert('提示信息','操作成功!','info');
                                                    }else{
                                                            $.messager.alert('提示信息','操作失败!','warning');
                                                    }
                                            });

第二步,后台struts配置。
[XML] 纯文本查看 复制代码
<!--action所在的package继承json-default或者其父继承json-default -->
<package name="basicstruts2" extends="json-default">
<action name="userAction_*" class="userAction" method="{1}">
<!--type为json-->
                        <result name="resultStatus" type="json">
                                <!-- 
                                指定将被Struts2序列化的属性,也就是UserAction方法中的resultMsg。
                                注意:
                                如果不写root param则返回的并不是我们想要的数据
                                --> 
                                <param name="root">resultMsg</param>
                        </result>
                </action>[/size][size=3][size=3]
<package >[/size]


第三步,准备要向前台返回的对象
[Java] 纯文本查看 复制代码
//创建状态类,用于向页面返回结果
public class ResultMessage {
        private String resultCode;
        private String message;
        private Object[] messages;
        
        public ResultMessage() {
        }
        
        public ResultMessage(String resultCode, String message) {
                this.resultCode = resultCode;
                this.message = message;
        }
        
        public String getResultCode() {
                return resultCode;
        }
        public void setResultCode(String resultCode) {
                this.resultCode = resultCode;
        }
        public String getMessage() {
                return message;
        }
        public void setMessage(String message) {
                this.message = message;
        }
        public Object[] getMessages() {
                return messages;
        }
        public void setMessages(Object[] messages) {
                this.messages = messages;
        }
}


第四步,在action中定义
ResultMessage变量并提供get方法
[Java] 纯文本查看 复制代码
protected ResultMessage resultMsg = null;
        public ResultMessage getResultMsg() {
                return resultMsg;
        }

第五步,直接使用
ResultMessage变量
[Java] 纯文本查看 复制代码
        public String calMethod() {
                try{
                        //处理业务逻辑
                        /**
                         *返回的对象在此处进行赋值
                         */
                        resultMsg = new ResultMessage("200", "处理成功");
                }catch (Exception e) {
                        resultMsg = new ResultMessage("301", "处理失败.");
                }
                return "resultStatus";
        }

处理完毕,前台的回调函数可以直接使用data来接收json数据。



10 个回复

倒序浏览
谢谢楼主分享,学习了
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
66666666666
回复 使用道具 举报
千千阙歌 来自手机 中级黑马 2017-4-1 23:12:42
板凳
看看看了
回复 使用道具 举报
还没学,基本看不懂。需要学的还很多,
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
厉害厉害!
回复 使用道具 举报
感谢分享啊
回复 使用道具 举报
6666666666
回复 使用道具 举报
千千阙歌 来自手机 中级黑马 2017-4-2 23:45:52
9#
看看看看
回复 使用道具 举报
这啥子哦,完全看不懂  我刚学 我已经眼花了
回复 使用道具 举报
千千阙歌 来自手机 中级黑马 2017-4-4 23:22:56
11#
看看看看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马