Struts 2对Ajax的支持
•Struts 2对Ajax提供了很好的支持
–Struts 2.1提供了基于Dojo的Ajax标签,对Ajax操作进行了进步封装,可以更快捷容易的使用Ajax
 
•使用Struts 2.1的Ajax标签前必须进行如下操作
1)将struts2-dojo-plugin-2.1.x.x.jar复制到WEB-INF\lib目录
 
2)在JSP页面中导入Ajax标签
  1. <!-- 引入Ajax标签 -->
  2. <%@ taglib uri="/struts-dojo-tags" prefix="sx"%>
 
3)在JSP页面中加入head标签,负责在页面上导入Dojo所需要的CSS库和JavaScript库
  1. <head>
  2. <!-- 在JSP页面中加入head标签
  3. 负责在页面上导入Dojo所需要的CSS库和JavaScript库 -->
  4. <sx:head />
  5. </head>

Struts 2.1Ajax标签
方法名
说    明
<sx:div>
创建一个div区域,可以通过Ajax向其中加载内容,以实现局部刷新 
<sx:submit>
通过Ajax来更新某个元素的内容或提交表单
<sx:a>
通过Ajax来更新某个元素的内容或提交表单
<sx:tabbedPanel>
创建一个标签面板,由<s:div>来提供内容。
<sx:autocompleter>
根据用户输入提供输入建议,或者帮助用户自动完成输入
<sx:tree>
创建一个支持Ajax的树形组件(Widget)
 

div标签例子
•使用Ajax技术实现如下需求:
 
  –页面有三个div:div1、div2、div3
  –div1的内容每隔5秒时间自动更新一次,每隔30分钟提示用户休息一下(刷新多次)
  –开始访问时,在div2中显示欢迎信息(刷新一次)
  –整个访问过程中div3中内容保持不变(无刷新)
 
使用<sx:div>标签来实现

实现代码:

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <!-- 引入struts2的标签库 -->
  3. <%@ taglib uri="/struts-tags" prefix="s"%>
  4. <!-- 引入Ajax标签 -->
  5. <%@ taglib uri="/struts-dojo-tags" prefix="sx"%>
  6. <%
  7. String path = request.getContextPath();
  8. String basePath = request.getScheme() + "://"
  9. + request.getServerName() + ":" + request.getServerPort()
  10. + path + "/";
  11. %>
  12.  
  13. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  14. <html>
  15. <head>
  16. <base href="<%=basePath%>">
  17.  
  18. <title>My JSP 'ajaxTime.jsp' starting page</title>
  19.  
  20. <meta http-equiv="pragma" content="no-cache">
  21. <meta http-equiv="cache-control" content="no-cache">
  22. <meta http-equiv="expires" content="0">
  23. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  24. <meta http-equiv="description" content="This is my page">
  25. <!--
  26. <link rel="stylesheet" type="text/css" href="styles.css">
  27. -->
  28. <!-- 在JSP页面中加入head标签
  29. 负责在页面上导入Dojo所需要的CSS库和JavaScript库 -->
  30. <sx:head />
  31. </head>
  32.  
  33. <body>
  34. <s:url id="time" value="time.action" />
  35. <s:url id="welcome" value="welcome.action" />
  36.  
  37. <!-- 每隔1秒异步访问一次 -->
  38. <sx:div href="%{time}" updateFreq="1000" />
  39. <!-- 只异步访问一次 -->
  40. <sx:div href="%{welcome}" />
  41. <!-- 无异步访问-->
  42. <sx:div>
  43. 初始化的内容!
  44. </sx:div>
  45. </body>
  46. </html>

ajaxTime.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%@ taglib uri="/struts-tags" prefix="s"%>
  3. <%
  4. String path = request.getContextPath();
  5. String basePath = request.getScheme() + "://"
  6. + request.getServerName() + ":" + request.getServerPort()
  7. + path + "/";
  8. %>
  9.  
  10. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  11. <html>
  12. <head>
  13. <base href="<%=basePath%>">
  14.  
  15. <title>My JSP 'time.jsp' starting page</title>
  16.  
  17. <meta http-equiv="pragma" content="no-cache">
  18. <meta http-equiv="cache-control" content="no-cache">
  19. <meta http-equiv="expires" content="0">
  20. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  21. <meta http-equiv="description" content="This is my page">
  22. <!--
  23. <link rel="stylesheet" type="text/css" href="styles.css">
  24. -->
  25.  
  26. </head>
  27.  
  28. <body>
  29. <%
  30. //获得当前时间
  31. long currentTime = System.currentTimeMillis();
  32.  
  33. //取出session中存入的现在时间
  34. Long stratTime = (Long) session.getAttribute("currentTime");
  35. if (stratTime == null) {
  36. //第一次访问
  37. session.setAttribute("currentTime", currentTime);
  38. } else {
  39. //以秒计算计算已用时间
  40. long used = (currentTime - stratTime) / 1000;
  41. session.setAttribute("used", used);
  42. //当用户浏览网页时间超过60秒则提示用户休息一下。
  43. boolean flag = false;
  44. if (used > 60) {
  45. flag = true;
  46. }
  47. session.setAttribute("flag", flag);
  48. }
  49. %>
  50. <s:if test="#session.flag==true">
  51. 你该稍微休息一下了。
  52. </s:if>
  53. <s:else>
  54. 你已经访问的时间:<s:property value="#session.used" default="0" />
  55. </s:else>
  56. </body>
  57. </html>

time.jsp

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "struts-2.1.dtd" >
  3. <struts>
  4. <package name="struts2" extends="struts-default" namespace="/" >
  5. <action name="time">
  6. <!-- name属性不写默认success -->
  7. <result>/time.jsp</result>
  8. </action>
  9. <action name="welcome">
  10. <result>/welcome.jsp</result>
  11. </action>
  12. </package>
  13. </struts>

struts.xml

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'welcome.jsp' starting page</title>
  13.  
  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. <!--
  20. <link rel="stylesheet" type="text/css" href="styles.css">
  21. -->
  22.  
  23. </head>
  24.  
  25. <body>
  26. 欢迎你登录本系统!
  27. </body>
  28. </html>

welcome.jsp

 
submit和a标签例子
•使用Ajax技术实现如下需求:
 
  –页面有两个div,还有一个超链接
  –单击超链接后在div1中出现登录表单
  –如果登录成功,在div2中显示登录成功;登录失败在div2中显示登录失败
 
使用<sx:div>标签来定义div,使用<sx:a>和<sx:submit>定义超链接和提交按钮实现

实现代码:

  1. package com.entity;
  2. /**
  3. * 用户类
  4. * @author asus
  5. *
  6. */
  7. public class Users {
  8.  
  9. /** 属性 */
  10. private String name;
  11. private String password;
  12.  
  13. /** 构造方法 */
  14. public Users() {
  15. super();
  16. }
  17. public Users(String name, String password) {
  18. super();
  19. this.name = name;
  20. this.password = password;
  21. }
  22.  
  23. /** javaBean */
  24. public String getName() {
  25. return name;
  26. }
  27. public void setName(String name) {
  28. this.name = name;
  29. }
  30. public String getPassword() {
  31. return password;
  32. }
  33. public void setPassword(String password) {
  34. this.password = password;
  35. }
  36.  
  37. }

Users实体类

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <!-- 引入Struts2标签库 -->
  3. <%@ taglib uri="/struts-tags" prefix="s" %>
  4. <!-- 引入Ajax标签库 -->
  5. <%@ taglib uri="/struts-dojo-tags" prefix="sx" %>
  6. <%
  7. String path = request.getContextPath();
  8. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  9. %>
  10.  
  11. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  12. <html>
  13. <head>
  14. <base href="<%=basePath%>">
  15.  
  16. <title>My JSP 'home.jsp' starting page</title>
  17.  
  18. <meta http-equiv="pragma" content="no-cache">
  19. <meta http-equiv="cache-control" content="no-cache">
  20. <meta http-equiv="expires" content="0">
  21. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  22. <meta http-equiv="description" content="This is my page">
  23. <!--
  24. <link rel="stylesheet" type="text/css" href="styles.css">
  25. -->
  26. <!-- 在JSP页面中加入head标签
  27. 负责在页面上导入Dojo所需要的CSS库和JavaScript库 -->
  28. <sx:head/>
  29. </head>
  30.  
  31. <body>
  32. <!-- url标签 用于生成一个URL地址 -->
  33. <s:url id="login" value="tologin.action" />
  34. <!-- 单击超链接异步访问指定Action -->
  35. <sx:a href="%{login}" targets="div1" >登录</sx:a>
  36.  
  37. <sx:div id="div1" cssStyle="border:1px solid red;" >
  38. 第一个sx:div显示登录
  39. </sx:div><br>
  40. <sx:div id="div2" cssStyle="border:1px solid green" >
  41. 第二个DIV,显示登录结果。
  42. </sx:div>
  43. </body>
  44. </html>

home.jsp 主页面

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <!-- 引入struts2的标签库 -->
  3. <%@ taglib uri="/struts-tags" prefix="s"%>
  4. <!-- 引入Ajax标签 -->
  5. <%@ taglib uri="/struts-dojo-tags" prefix="sx"%>
  6. <%
  7. String path = request.getContextPath();
  8. String basePath = request.getScheme() + "://"
  9. + request.getServerName() + ":" + request.getServerPort()
  10. + path + "/";
  11. %>
  12.  
  13. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  14. <html>
  15. <head>
  16. <base href="<%=basePath%>">
  17.  
  18. <title>My JSP 'ajaxTime.jsp' starting page</title>
  19.  
  20. <meta http-equiv="pragma" content="no-cache">
  21. <meta http-equiv="cache-control" content="no-cache">
  22. <meta http-equiv="expires" content="0">
  23. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  24. <meta http-equiv="description" content="This is my page">
  25. <!--
  26. <link rel="stylesheet" type="text/css" href="styles.css">
  27. -->
  28. <!-- 在JSP页面中加入head标签
  29. 负责在页面上导入Dojo所需要的CSS库和JavaScript库 -->
  30. <sx:head />
  31. </head>
  32. <body>
  33. <h2>用户登录</h2>
  34. <!-- Struts2 表单标签 -->
  35. <s:form id="s_form" action="login.action" method="post" theme="simple">
  36. <br>
  37. 用户名: <s:textfield label="用户名" name="user.name" />
  38. <br>
  39. 密码: <s:textfield label="密码" name="user.password" />
  40. <br>
  41. <!-- 表单内异步提交表单 -->
  42. <sx:submit type="button" value="表单内异步提交按钮" targets="div2" />
  43. </s:form>
  44. <!-- 表单外异步提交 -->
  45. <sx:submit type="button" value="表单外异步提交按钮" formId="s_form" targets="div2"/>
  46. <sx:a formId="s_form" targets="div2" >我也可以提交表单</sx:a>
  47. </body>
  48. </html>

login.jsp 嵌入登陆页面

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "struts-2.1.dtd" >
  3. <struts>
  4. <package name="struts2" extends="struts-default" namespace="/" >
  5.  
  6. <!-- 单击“用户登录”超链接显示登录菜单 -->
  7. <action name="tologin" >
  8. <result >/login.jsp</result>
  9. </action>
  10.  
  11. <!-- 单击表单提交按钮显示登录结果 -->
  12. <action name="login" class="com.struts.LoginAction" method="login" >
  13. <result>/success.jsp</result>
  14. <result name="error">/error.jsp</result>
  15. </action>
  16. </package>
  17. </struts>

struts.xml 配置

  1. package com.struts;
  2.  
  3. import com.entity.Users;
  4. import com.opensymphony.xwork2.ActionSupport;
  5. /**
  6. * 控制器类
  7. * 作用:处理登录的请求
  8. * @author asus
  9. *
  10. */
  11. public class LoginAction extends ActionSupport {
  12.  
  13. /** 属性 */
  14. private Users user;
  15.  
  16. /** 重写execute方法 :此方法作用,为指定处理请求的方法时,默认走此方法*/
  17. public String execute(){
  18.  
  19. return "";
  20. }
  21.  
  22. /** 登录验证的方法 */
  23. public String login(){
  24.  
  25. if(user!=null){
  26. if(user.getName().equals("admin") && user.getPassword().equals("admin")){
  27. return SUCCESS;
  28. }
  29. }
  30.  
  31. return ERROR;
  32. }
  33.  
  34. /** JavaBean */
  35. public Users getUser() {
  36. return user;
  37. }
  38.  
  39. public void setUser(Users user) {
  40. this.user = user;
  41. }
  42.  
  43. }

LoginAction 控制器

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'success.jsp' starting page</title>
  13.  
  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. <!--
  20. <link rel="stylesheet" type="text/css" href="styles.css">
  21. -->
  22.  
  23. </head>
  24.  
  25. <body>
  26. 登录成功!
  27. </body>
  28. </html>

success.jsp 登录成功页面

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'file.jsp' starting page</title>
  13.  
  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. <!--
  20. <link rel="stylesheet" type="text/css" href="styles.css">
  21. -->
  22.  
  23. </head>
  24.  
  25. <body>
  26. 登陆失败!
  27. </body>
  28. </html>

error.jsp 登录失败页面

Struts 2常用的Ajax标签的更多相关文章

  1. struts2视频学习笔记 29-30(Struts 2常用标签,防止表单重复提交)

    课时28 Struts 2常用标签解说 property标签 property标签用于输出指定值: <s:set name="name" value="'kk'&q ...

  2. Struts 2 常用技术

    目录  Struts 2 常用技术  1. 常用类和接口  1.1 getter 和 setter 方法  1.2 Action 接口  1.3 ActionSupport 类  1.4 通过 Act ...

  3. JSF中使用f:ajax标签无刷新页面改变数据

    ajax本是用在前端的一种异步请求数据的操作,广泛用于js中,一般的js框架如jq都有被封装好的方法,用于发起异步请求操作.异步操作可以增强用户体验和操作,越来越多的程序都在使用ajax.JSF的fa ...

  4. struts2与常用表格ajax操作的json传值问题

    struts与常用的dataTables和jqueryGrid等表格进行ajax传值时,经常会传值不适配的问题,这是因为struts在进行ajax操作时已经对你要操作的json数据进行了处理,所以不需 ...

  5. HTML之:fieldset——一个不常用的HTML标签

    2016年4月14日17:10:02记录 一个不常用的HTML标签fieldset,不过我觉得比较有意思,其语法如下: <fieldset><legend>fieldset名称 ...

  6. JSP 标准标签库(JSTL)之最常用的JSTL标签总结

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. Apache Tomcat安装JSTL 库步骤如下: 从Apache的标准标签库中下载的二进包(jakarta-t ...

  7. 常用HTML meta 标签属性(网站兼容与优化需要),meta标签

    常用HTML meta 标签属性(网站兼容与优化需要),meta标签 标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的.它可用于浏览器(如何显示内容或重新加载页面),搜索 ...

  8. Struts 有哪些经常使用标签库

    Struts 有哪些经常使用标签库 1.html标签库 2.bean标签库 3.logic标签库

  9. Django常用的模板标签

    django 目前了解的各个文件的作用: manage.py:  运行服务 urls: 路由 views: 处理数据 传递给 html模板 html文件:  通过 {{变量名}}接收变量 通过 模板标 ...

随机推荐

  1. mysql慢日志设置

    mysql的慢日志查询对于sql的优化还是很有意义的,具体说下如何开启这个mysql慢查询日志(默认是开启的). 关于设置在mysql的官方手册或网上都有很多,但是要注意的是,mysql5.6与之前的 ...

  2. 修改ulimit

    ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小.进程数据块的大小.Shell 进程创建文件的大小.内存锁住的大小.常驻内存集的大小.打开文件描 ...

  3. 将json转换成struts参数

    加入对象为{name:'tom','class':{className:'class1'},classMates:[{name:'lily'}]}struts2期待的格式是 name=tom& ...

  4. 最近读的javascript,一些文章

    本帖子是记录一些javascript的一些文章: 1. 理解node.js 2.异步编程 http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF% ...

  5. 使用Microsoft.Office.Interop.Excel.Application xlApp 生成Excel

    object filePath = @"C:\" + DateTime.Now.ToShortDateString().Replace("-", "& ...

  6. Apple individual program 加入之后的玩法 官方资源

    Apple individual program 加入之后的玩法  官方资源   0. 开发资源文档 0.1 开发文档: https://developer.apple.com/support/res ...

  7. 解决 The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path

    到 http://tomcat.heanet.ie/native/ 下载最新的tcnative-1.dll放到相应目录即可,我目前下载的是 http://tomcat.heanet.ie/native ...

  8. 我常用的Mac快捷键

    1. 最小化当前窗口 command m 2. 在不同应用间切换 command tab 3. 在同一应用的不同窗口间切换 command ` 4. 在浏览器同一窗口的不同标签间切换 ctrl tab ...

  9. C# 读取JSON

    引用 Newtonsoft.Json.dll //C# 读取JSON Newtonsoft.Json.Linq.JObject jsonStr = Newtonsoft.Json.Linq.JObje ...

  10. Eclipse中集成Tomcat

    问题: 很多时候在Eclipse中启动Tmocat后,不能访问本机的localhost:8080主页,并且其他项目也不能访问. 原因: 打开Tomcat下的webapp后也找补到项目目录,这是因为Ec ...