• struts2-ajax-jQuery


    1.所需jar包如下所示。其中选中的四个包是struts2实现ajax所必需的,所有的jar包都可以从下载的完整的struts2 包中的lib文件夹中找到。

    2.Demo

    struts2ajax.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <%@taglib uri="/struts-tags" prefix="s"%>
     4 <%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
     5 
     6 
     7 
     8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     9 <html>
    10     <head>
    11 
    12 
    13         <title>My JSP 'index.jsp' starting page</title>
    14         <meta http-equiv="pragma" content="no-cache">
    15         <meta http-equiv="cache-control" content="no-cache">
    16         <meta http-equiv="expires" content="0">
    17         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    18         <meta http-equiv="description" content="This is my page">
    19         <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery.min.js"></script> 
    20         <script type="text/javascript" src="<%=request.getContextPath() %>/js/index.js"></script>
    21        
    22         <!--     <s:head theme="ajax" />这句话好像没影响哦    -->
    23         <!-- <s:head theme="ajax" />-->
    24         <!--在jsp页面上加入<s:head theme="ajax" />会报如下异常:java.io.FileNotFoundException: 
    25             Template /template/ajax/head.ftl not found.     
    26               解决办法:在struts2-core-2.1.8.jar/template目录下加入ajax文件夹,ajax文件夹所在目录为
    27             struts2-core-2.1.8.jar/template/archive。
    28               注意:ajax文件夹下要包含head.ftl,否则还是会抛异常。head.ftl请在template目录搜索然后放到ajax文件夹里
    29          -->
    30          <sx:head debug="true" parseContent="false"/>
    31     </head>
    32 
    33     <body>
    34         <!-- 显示User实体对象 -->
    35         <div id="result"></div>
    36         <s:form name="userForm" action="/jsonAction.do" method="post">
    37             <s:hidden name="articleId"></s:hidden>
    38                     编号:<input name="user.id"/><br/>
    39                     用户名:<input name="user.username"/><br/>
    40                     密码:<input name="user.pwd"/><br/><br/>
    41                 <input id="btn" type="button" value=" 提 交 "/>
    42         </s:form>
    43 
    44 
    45 </body>
    46 </html>

    index.js

    $(document).ready(function(){
        //点击提交按钮时,从服务端获取数据,然后在客户端显示
        $("#btn").click(function(){
            // 序列化表单的值
            var params=$("input").serialize();
            $.ajax({
                url: "jsonAction.do",
                // 数据发送方式
                type: "post",
                // 接受数据格式
                dataType : "json",
                // 要传递的数据
                data : params,
                // 回调函数,接受服务器端返回给客户端的值,即result值
                success : show   
            });
        });
    });
    
    function show(result){
        //测试result是否从服务器端返回给客户端
        //alert(result);
        //解析json对象
        var json = eval("("+result+")");
        var obj = "编号: "+json.id+"  用户名: "+json.username+"  密码: "+json.pwd+"   articleId:  "+json.articleId;
        $("#result").html(obj);
        //alert(json.articleId);
    }

    User.java

    package com.blgs.bean;
    
    import java.io.Serializable;
    
    public class User implements Serializable {
    
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        private int id;
        private String username;
        private String pwd;
        private String articleId;
        public void setArticleId(String articleId) {
            this.articleId = articleId;
        }
        public String getArticleId() {
            return articleId;
        }
    
        public User() {
        }
    
        public User(int id, String username, String pwd) {
            super();
            this.id = id;
            this.username = username;
            this.pwd = pwd;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPwd() {
            return pwd;
        }
    
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    
    }

    GotoStruts2ajax .java

    package com.blgs.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class GotoStruts2ajax extends ActionSupport {
        private static final long serialVersionUID = 1L;
        private String articleId;
        public void setArticleId(String articleId) {
            this.articleId = articleId;
        }
        public String getArticleId() {
            return articleId;
        }
        @Override
        public String execute() throws Exception {
            // TODO Auto-generated method stub
            this.articleId="201609001";
            return SUCCESS;
        }
    }
    JsonAction.java
    package com.blgs.action;
    import com.blgs.bean.User;
    import com.opensymphony.xwork2.ActionSupport;
    
    import net.sf.json.JSONObject;
    @SuppressWarnings("serial")
    public class JsonAction extends ActionSupport {
        private User user;
        // 返回结果给客户端
        private String result;
        private String articleId;
        public void setArticleId(String articleId) {
            this.articleId = articleId;
        }
        public String getArticleId() {
            return articleId;
        }
        public String execute() throws Exception {
            user.setArticleId(articleId);
            //将要返回的实体对象进行json处理
            JSONObject json=JSONObject.fromObject(user);
            //输出格式如:{"id":1, "username":"zhangsan", "pwd":"123"}
            System.out.println(json);
            result=json.toString();
            return SUCCESS;
        }
        public User getUser() {
            return user;
        }
        public void setUser(User user) {
            this.user = user;
        }
        public String getResult() {
            return result;
        }
        public void setResult(String result) {
            this.result = result;
        }
    }

    struts.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
    <!-- 该属性指定需要Struts2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。
            如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。 -->
        <constant name="struts.action.extension" value="do" />
        <!-- 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 -->
        <constant name="struts.serve.static.browserCache" value="false" />
        <!-- 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开 -->
        <constant name="struts.configuration.xml.reload" value="true" />
        <!-- 开发模式下使用,这样可以打印出更详细的错误信息 -->
        <constant name="struts.devMode" value="true" />
        <!-- 默认的视图主题 -->
        <!-- <constant name="struts.ui.theme" value="simple" /> -->
        <!-- <constant name="struts.objectFactory" value="spring" />  -->
        <package name="test" extends="json-default">
            <action name="jsonAction" class="com.blgs.action.JsonAction">
                <result type="json">
                    <!-- 此处将reslut的值返回给客户端,root的值对应要返回的值的属性result
                          注意:root为固定写法,否则不会把result的值返回给客户端 -->
                    <param name="root">result</param>
                </result>
            </action>
        </package>
        <package name="index" extends="struts-default">
            <action name="indextoajax" class="com.blgs.action.GotoStruts2ajax">
                <result>struts2ajax.jsp</result>
            </action>
        </package>    
    </struts> 
  • 相关阅读:
    自定义打包工具对应的解析代码
    自定义的打包工具源码
    一种C语言实现面向对象特性的继承,多态
    buffers和cached的区别
    初识rt-thread杂记
    一种多叉树的实现,提供树形结构打印,树转表输出等功能
    关于rtsp的时间戳问题
    一种基于状态机(表)的小组件
    一种基于消息发布-订阅的观察者模式实现
    命令解析类代码重构
  • 原文地址:https://www.cnblogs.com/gpdm/p/5855672.html
Copyright © 2020-2023  润新知