zoukankan      html  css  js  c++  java
  • struts2+ajax

    web网页开发中需要用到struts2来处理action,通过struts2定义后端java类。

    <action name="loginAction" class="java类的路径" method="Java类中的方法">
        <!--注意如果java类中定义的方法是有返回值的,则<result>标签形式必须为<result>网页</result>,也就是result标签中必须有元素  -->

        <result name="success">homePage.jsp</result>
        <result name="login">Login.jsp</result>

          <!--注意如果java类中定义的方法没有返回值的,则<result>标签形式必须为<result></result>,也就是result标签中没有元素  -->
            <result name="success"></result>
    </action> 

    这里给出完整的struts.xml文件,以及homePage_initialAction方法。

    <?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">
    
    <!-- START SNIPPET: xworkSample -->
    <struts>
        <!-- <constant name="struts.devMode" value="true" />开启开发者模式 -->
        <!-- <package name="default" extends="struts-default"> <action name="login" 
            class="Login" method="execute"> <result name="success">/success.jsp</result> 
            <result name="fail">/fail.jsp</result> </action> </package> -->
            <!-- 
             result中的name属性有下:
    
              1、success : 表示请求处理成功,该值也是默认值。
    
              2、error :表示请求处理失败。
    
              3、none :表示请求处理完成后不跳转到任何页面。
    
              4、input :表示输入时如果验证失败应该跳转到什么地方。
    
              5、login :表示登录失败后跳转的目标。
         -->
        <package name="default" extends="struts-default">
    
            <action name="addUserAction" class="myPackage.managerAction" method="addUser">
                <result name="success">index.jsp</result>
            </action>
            <action name="getUserAction" class="myPackage.managerAction" method="getUser">
                <result name="success">index.jsp</result>
            </action>
            <action name="link" class="myPackage.managerAction" method="ajax">
                <result name="success"></result>
            </action> 
            <!-- 用户登录界面的Action -->
            <!--    登录Action          -->
            <action name="loginAction" class="myPackage.managerAction" method="loginUser">
                <result name="success">homePage.jsp</result>
                <result name="login">Login.jsp</result>
            </action> 
                    <!--    注册Action           -->
            <!--    主界面Action          -->
            <action name="homePage_initialAction" class="myPackage.homePageAction" method="homePage_initialAction">
                <result name="success"></result>
            </action> 
        </package>
    
    
    </struts>
    //homePage方法
    public void homePage_initialAction() throws Exception{ //Map<String, String> mapData = new HashMap<String, String>(); String[] names=new String[200]; String[] description=new String[200]; String outData=""; for(int i=0;i<200;++i){ names[i]="name"; description[i]="des"; } for(int i=0;i<200;++i){ outData+=" "+names[i]; } for(int i=0;i<200;++i){ outData+=" "+description[i]; } HttpServletResponse response = ServletActionContext.getResponse(); PrintWriter writer = response.getWriter(); Random rand = new Random(); // 死循环 查询有无数据变化 long responseTime = System.currentTimeMillis(); writer.print(outData); }

      前端用ajax主动连接后端,这里ajax的url是在struts2中定义过的(ajax参考http://www.cnblogs.com/hoojo/p/longPolling_comet_jquery_iframe_ajax.html)

    /**
     * 该函数用来轮询数据库并返回后台信息
     */
    //$(function(){}) 是 $(document).ready(function(){}) 的简写
      $(function () {         
                    (function longPolling() {            
                        $.ajax({
                            url: "homePage_initialAction",
                            data: {"timed": new Date().getTime()},
                            dataType: "text",
                            timeout: 5000,
                            error: function (XMLHttpRequest, textStatus, errorThrown) {
                                $("#debug").append("[state: " + textStatus + ", error: " + errorThrown + " ]<br/>");
                                if (textStatus == "timeout") { // 请求超时
                                        longPolling(); // 递归调用
                                    
                                    // 其他错误,如网络错误等
                                    } else { 
                                        longPolling();
                                    }
                                },
                            success: function (data, textStatus) {
                                /*$("#state").append("[state: " + textStatus + ", data: { " + data + "} ]<br/>");*/
                                document.getElementById("debug").innerHTML=data;
                                /*alert(data);*/
                                if (textStatus == "success") { // 请求成功
                                    longPolling();
                                }
                            }
                        });
                    })();
                    
                });

      定义完以上几个文件后,struts2就成功的和ajax结合到了一起,前端就能够持续的连接后端了。

  • 相关阅读:
    Tomcat多域名及二级域名的配置
    Java 分割字符串
    Java 判断字符串是否为数字(浮点类型也包括)
    MySQL 判断某字段是否包含中文或字母字符的方法
    Java List排序,分组等操作
    Java 遍历List或Map集合的4种方式
    spring quartz注解任务执行两次解决方案
    java 获取当前时间精确到毫秒 格式化
    Java 方法返回多种类型
    Tomcat 设置直接通过域名访问项目(不需要接 /项目名)
  • 原文地址:https://www.cnblogs.com/codeDog123/p/6063036.html
Copyright © 2011-2022 走看看