设为首页收藏本站
开启辅助访问
切换到宽版

创星网络[分享知识 传递快乐]

 找回密码
 立即注册

QQ登录

只需一步,快速开始

用新浪微博登录

只需一步,快速搞定

搜索
查看: 3654|回复: 0
打印 上一主题 下一主题

简单的ajax与struts2实例

[复制链接]

我玩的应用:

跳转到指定楼层
楼主
发表于 2012-12-12 22:11:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前言
        对于从事技术的人员来说ajax是这好东西,都会使用,而且乐于使用。但对于新手,开发一个ajax实例,还有是难度的,必竟对于他们这是新东西。leo开发一个简单的ajax实例,用的是ajax与struts2结合而开发的实例。
       在学习实例前,leo觉得有必要看看,了解下下面这些资料,对ajax学习很重要也很必要.
       什么是Ajax
       读音:e:j^ks 。AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词,是指一种创建交互式网页应用的网页开发技术.
       什么是JavaScript
       Javascript是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。

       什么是XML
       XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
       leo说明
       有了这些资料,现在学习ajax就容易了,如果熟悉上面两种语言,那就更得心应手了;不会这两种语言的朋友可以先去大概的看看,学习下,特别是Javascript,这样在学习ajax时会很轻松.
       ajax实例
       下面来看看实例.
       准备工作:开发软件Myeclipse6.5,tomcat6.0 环境jdk1.6,struts2.0
       OK,一切准备好了,搭建工程,先创建一个test工程,添加。。。具体的步骤就省略了,相信大家这个都会。我们看代码。
       创建一个接受请求处理请求的java类 Java代码
  1. package action;   

  2. import java.io.PrintWriter;   
  3. import java.text.SimpleDateFormat;   
  4. import java.util.Date;   

  5. import javax.servlet.http.HttpServletRequest;   
  6. import javax.servlet.http.HttpServletResponse;   

  7. import org.apache.struts2.ServletActionContext;   

  8. import com.opensymphony.xwork2.ActionSupport;   
  9. /**Struts2中AJAX应用演示业务控制器**/   
  10. public class AjaxAction extends ActionSupport {   


  11.    /**处理原始的AJAX请求:读取服务端系统时间**/   
  12.    public String getServerTime(){   
  13.        try {   
  14.            SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");   
  15.            //获取原始的PrintWriter对象,以便输出响应结果,而不用跳转到某个试图   
  16.            HttpServletResponse response = ServletActionContext.getResponse();   
  17.            //设置字符集   
  18.            response.setCharacterEncoding("UTF-8");   
  19.            PrintWriter out = response.getWriter();   

  20.            //直接输入响应的内容   
  21.            out.println(sd.format(new Date()));   
  22.            /**格式化输出时间**/   
  23.            out.flush();   
  24.            out.close();   

  25.        } catch (Exception e) {   
  26.            // TODO: handle exception   
  27.            e.printStackTrace();   
  28.        }   
  29.        return null;//不需要跳转某个视图 因为上面已经有了直接输出的响应结果   

  30.    }   

  31.    /**处理原始的AJAX请求:异步登录**/   
  32.    public String ajaxLogin(){   
  33.        try {   
  34.            String responseText="";   
  35.            //读取请求的参数   
  36.            HttpServletRequest request = ServletActionContext.getRequest();   
  37.            String loginname=   request.getParameter("loginname");   
  38.            String loginpwd= request.getParameter("loginpwd");   
  39.            //进行登录验证   
  40.            if(loginname==null||loginname.trim().length()<1){   
  41.                responseText="对不起,账号不能为空";   
  42.            }else if(loginpwd==null||loginpwd.trim().length()<1){   
  43.                responseText="对不起,密码不能为空";   
  44.            }else{   
  45.                if(loginname.equalsIgnoreCase("www.dukai168.cn")&&loginpwd.equalsIgnoreCase("www.dukai168.cn")){   
  46.                    responseText="恭喜你,异步登录成功";   
  47.                }else{   
  48.                    responseText="对不起,异步登录失败";   
  49.                }   
  50.            }   

  51.            //获取原始的PrintWriter对象,以便输出响应结果,而不用跳转到某个试图   
  52.            HttpServletResponse response = ServletActionContext.getResponse();   
  53.            //设置字符集   
  54.            response.setContentType("text/plain");//设置输出为文字流   
  55.            response.setCharacterEncoding("UTF-8");   
  56.            PrintWriter out = response.getWriter();   

  57.            //直接输出响应的内容   
  58.            out.println(responseText);   
  59.            out.flush();   
  60.            out.close();   

  61.        } catch (Exception e) {   
  62.            // TODO: handle exception   
  63.            e.printStackTrace();   
  64.        }   
  65.        return null;//不需要跳转某个视图 因为上面已经有了直接输出的响应结果   

  66.    }   


  67. }      
复制代码
配置struts.xml Java代码
  1. <?xml version="1.0" encoding="UTF-8" ?>   

  2. <!DOCTYPE struts PUBLIC   
  3.    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   
  4.    http://struts. apache.org/dtds/struts-2.0.dtd>   

  5. <struts>   
  6.    <package name="test1" extends="struts-default">   
  7.        <action name="ajax_*" class="action.AjaxAction" method="{1}">   
  8.            <result>/show.jsp</result>   
  9.        </action>   
  10.    </package>   
  11. </struts>   
复制代码
创建前台前请求页面 XML/HTML代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>   
  2. www.xinlin.info
  3. <script language="javascript">   
  4.    //定义一个变量用于存放XMLHttpRequest对象   
  5.    var xmlHttp;   


  6.    //改函数用于创建一个XMLHttpRequest对象   
  7.    function createXMLHttpRequest(){   
  8.        if(window.ActiveXObject){   
  9.            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");   
  10.        }else if(window.XMLHttpRequest){   
  11.            xmlHttp = new XMLHttpRequest();   
  12.        }   
  13.    }   


  14.    //这是一个启动AJAX异步通信的方法   
  15.    function getServerTime(){   
  16.        alert("我走过了时间方法");   
  17.        var now = new Date();//获取系统当前的时间   

  18.        //创建一个XMLHttpRequest对象   
  19.        createXMLHttpRequest();   
  20.        //将状态触发器绑定到一个函数   
  21.        xmlHttp.onreadystatechange= processServerTime;   
  22.        //通过GET方法向指定的URL建立服务器的调用,加个临时的参数,以便表示一个全新的请求   
  23.        var url="ajax_getServerTime.action?tmp="+now.getTime();//等写完回来看这一句话   
  24.        xmlHttp.open("GET",url,true);   
  25.        //发送请求   
  26.        xmlHttp.send(null);   
  27.    }   

  28.    //这是一个用来处理状态改变的函数   
  29.    function processServerTime(){   
  30.        //定义一个变量用于存放从服务器返回的响应结果   
  31.        var responseContext;   
  32.        if(xmlHttp.readyState==4){   
  33.            //如果响应成功   
  34.            if(xmlHttp.status==200){   
  35.                //取出服务器的响应内容   
  36.                responseContext=xmlHttp.responseText;   
  37.                document.getElementById("servertime").innerHTML=responseContext;   
  38.            }   
  39.        }   
  40.    }   
  41.    /**以上是获取当前时间的**/   

  42.    //这是一个启动AJAX异步通信的方法   
  43.    function ajaxLogin(){   
  44.        var ln = document.getElementById("loginname").value;   
  45.        var lp = document.getElementById("loginpwd").value;   
  46.        //创建一个XMLHttpRequest对象   
  47.        createXMLHttpRequest();   

  48.        //将状态绑定到一个函数   
  49.        xmlHttp.onreadystatechange=processAjaxLogin;   
  50.        //通过GET方法向指定的URL建立服务器的调用   
  51.        var url="ajax_ajaxLogin.action?loginname="+ln+"loginpwd="+lp;   
  52.        xmlHttp.open("GET",url,true);   

  53.        //发送请求   
  54.        xmlHttp.send(null);   
  55.    }   
  56.    //这是一个用来处理状态改变的函数   
  57.    function processAjaxLogin(){   
  58.        //定义一个变量用于存放 从服务器返回的响应结果   
  59.        var responseContext="";   
  60.        if(xmlHttp.readyState==4){   
  61.            if(xmlHttp.status==200){   
  62.                responseContext = xmlHttp.responseText;   
  63.                alert(responseContext);   
  64.            }   
  65.        }   
  66.    }   
  67. </script>   
  68. <!--"www.dukai168.cn"-->
  69. 1.服务器端的系统时间:   
  70. <span id="servertime"></span>   
  71. <input type="button" value="获取服务器端时间">   
  72. 2.登陆账号:   
  73. <input type="text" id="loginname">   
  74. 登陆密码:   
  75. <input type="password" id="loginpwd">   
  76. <input type="button" value="异步登陆">
复制代码
leo总结

       此ajax实例是用的最原始的ajax语言来实现了,现在一般都不这样用,因为这们对浏览器间的兼容性不强,目前使用的都是ajax框架,比如说Jquery,prototype,dwr,Dojo等,更多浏览ajax框架.


from:http://go.cxweb.com.cn/q8akt

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|创星网络 ( 苏ICP备11027519号|网站地图  

GMT+8, 2024-9-22 07:38 , Processed in 0.089992 second(s), 27 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表