博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现JSP页面
阅读量:6880 次
发布时间:2019-06-27

本文共 1932 字,大约阅读时间需要 6 分钟。

 

为了更简单地实现Ajax交互,本页面使用了另一个JavaScript框架:Prototype.js。通过使用该框架,可以更加简单地访问页面中的DOM节点,包括更好地实现Ajax交互。这样避免去做创建XMLHttpRequest对象、发送异步请求这些烦琐的步骤。

下面是该JSP页面的代码。

程序清单:codes\04\4.6\struts2json\first.jsp

 
  1. <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>  
  2. <%@ taglib prefix="s" uri="/struts-tags" %>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  4.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  5. <html xmlns="http://www.w3.org/1999/xhtml">  
  6. <head>  
  7.     <title>使用JSON插件</title>  
  8.     <script src="${pageContext.request.contextPath}/prototype-1.6.1.js"   
  9.     type="text/javascript">  
  10.     </script>  
  11.     <script type="text/javascript">  
  12.         function gotClick()  
  13.         {  
  14.             //请求的地址  
  15.             var url = 'JSONExample.action';  
  16.             //将favorite表单域的值转换为请求参数  
  17.             var params = Form.serialize('form1');  
  18.             //创建Ajax.Request对象,对应于发送请求  
  19.             var myAjax = new Ajax.Request(  
  20.             url,  
  21.             {  
  22.                 //请求方式:POST  
  23.                 method:'post',  
  24.                 //请求参数  
  25.                 parameters:params,  
  26.                 //指定回调函数  
  27.                 onComplete: proce***esponse,  
  28.                 //是否异步发送请求  
  29.                 asynchronous:true 
  30.             });  
  31.         }  
  32.         function proce***esponse(request)  
  33.         {  
  34.             //使用JSON对象将服务器响应解析成JSON对象  
  35.             var res = request.responseText.evalJSON();  
  36.             //遍历JSON对象的每个属性  
  37.             for(var propName in res)  
  38.             {  
  39.                 $("show").innerHTML += propName + " --> "   
  40.                     + res[propName] + "<br/>";  
  41.             }         
  42.         }     
  43.     </script>  
  44. </head>  
  45. <body>  
  46. <s:form id="form1">  
  47.     <s:textfield name="field1" label="Field 1"/>  
  48.     <s:textfield name="field2" label="Field 2"/>  
  49.     <s:textfield name="field3" label="Field 3"/>  
  50.     <tr><td colspan="2">  
  51.     <input type="button" value="提交" οnclick="gotClick();"/>  
  52.     </td></tr>  
  53. </s:form>  
  54. <div id="show">  
  55. </div>  
  56. </body>  
  57. </html>  

在上面的页面中使用了Prototype.jsAjax.Request来完成Ajax交互。为了使用Prototype.js,当然需要在该页面中导入Prototype.js的代码库。

上面的页面代码中直接调用了字符串的evalJSON(),该方法用于将符合JSON格式的字符串解析为一个JSON对象——上面的程序将服务器响应的字符串解析成JSON对象,这个JSON对象完整地保存了Action实例的状态信息。

在浏览器中浏览该页面,如果在上面三个表单域中完成输入,然后单击“提交”按钮,将看到如图4.38所示的页面。

 

 

正如图4.38中所看到的,页面可以取得整个Action实例的状态信息,包括Action实例里的每个属性名,以及对应的属性值。既然我们获得了整个Action的状态信息,就完全获得了Struts 2对该请求的处理结果,最后剩下的事情就是:通过DOM操作把这些处理结果显示出来。关于如何利用DOM动态改变HTML页面内容,请参考疯狂Java体系的《疯狂Ajax讲义》一书。

 

转载地址:http://uhubl.baihongyu.com/

你可能感兴趣的文章
jsoup抓取网页+详细讲解
查看>>
Python实现修改Windows CMD命令行输出颜色(完全解析)
查看>>
HQL语句讲解
查看>>
服务器安全狗linux版 V2.4 发布 增加网页木马扫描
查看>>
安全狗服云web端V3.4(企业服务)版上线
查看>>
在Android Library的Module中按渠道依赖
查看>>
对javascript匿名函数的理解(透彻版)
查看>>
使用virtualbox安装centos6的内置无线网卡桥接设置
查看>>
java调用http接口(HttpURLConnection的使用)
查看>>
java代码内,获得jsp产生的html
查看>>
jquery.validate remote 和 自定义验证方法
查看>>
hibernate使用sql查询
查看>>
二叉树(2)——遍历的非递归实现
查看>>
OS X 键盘快捷键
查看>>
linux下vi命令大全
查看>>
设计模式之四:访问者模式
查看>>
加密和解密
查看>>
python使用.proto文件生成service接口失败
查看>>
判断矩形是否在矩形中
查看>>
关于composer.json中require-dev和require-dev、autoload-dev和autoload的区别
查看>>