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标签
<!-- 引入Ajax标签 -->
<%@ taglib uri="/struts-dojo-tags" prefix="sx"%>
 
3)在JSP页面中加入head标签,负责在页面上导入Dojo所需要的CSS库和JavaScript库
    <head>
<!-- 在JSP页面中加入head标签
负责在页面上导入Dojo所需要的CSS库和JavaScript库 -->
<sx:head />
</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>标签来实现

实现代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!-- 引入struts2的标签库 -->
<%@ taglib uri="/struts-tags" prefix="s"%>
<!-- 引入Ajax标签 -->
<%@ taglib uri="/struts-dojo-tags" prefix="sx"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'ajaxTime.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<!-- 在JSP页面中加入head标签
负责在页面上导入Dojo所需要的CSS库和JavaScript库 -->
<sx:head />
</head> <body>
<s:url id="time" value="time.action" />
<s:url id="welcome" value="welcome.action" /> <!-- 每隔1秒异步访问一次 -->
<sx:div href="%{time}" updateFreq="1000" />
<!-- 只异步访问一次 -->
<sx:div href="%{welcome}" />
<!-- 无异步访问-->
<sx:div>
初始化的内容!
</sx:div>
</body>
</html>

ajaxTime.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'time.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
<%
//获得当前时间
long currentTime = System.currentTimeMillis(); //取出session中存入的现在时间
Long stratTime = (Long) session.getAttribute("currentTime");
if (stratTime == null) {
//第一次访问
session.setAttribute("currentTime", currentTime);
} else {
//以秒计算计算已用时间
long used = (currentTime - stratTime) / 1000;
session.setAttribute("used", used);
//当用户浏览网页时间超过60秒则提示用户休息一下。
boolean flag = false;
if (used > 60) {
flag = true;
}
session.setAttribute("flag", flag);
}
%>
<s:if test="#session.flag==true">
你该稍微休息一下了。
</s:if>
<s:else>
你已经访问的时间:<s:property value="#session.used" default="0" />秒
</s:else>
</body>
</html>

time.jsp

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "struts-2.1.dtd" >
<struts>
<package name="struts2" extends="struts-default" namespace="/" >
<action name="time">
<!-- name属性不写默认success -->
<result>/time.jsp</result>
</action>
<action name="welcome">
<result>/welcome.jsp</result>
</action>
</package>
</struts>

struts.xml

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'welcome.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
欢迎你登录本系统!
</body>
</html>

welcome.jsp

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

实现代码:

package com.entity;
/**
* 用户类
* @author asus
*
*/
public class Users { /** 属性 */
private String name;
private String password; /** 构造方法 */
public Users() {
super();
}
public Users(String name, String password) {
super();
this.name = name;
this.password = password;
} /** javaBean */
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
} }

Users实体类

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!-- 引入Struts2标签库 -->
<%@ taglib uri="/struts-tags" prefix="s" %>
<!-- 引入Ajax标签库 -->
<%@ taglib uri="/struts-dojo-tags" prefix="sx" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'home.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<!-- 在JSP页面中加入head标签
负责在页面上导入Dojo所需要的CSS库和JavaScript库 -->
<sx:head/>
</head> <body>
<!-- url标签 用于生成一个URL地址 -->
<s:url id="login" value="tologin.action" />
<!-- 单击超链接异步访问指定Action -->
<sx:a href="%{login}" targets="div1" >登录</sx:a> <sx:div id="div1" cssStyle="border:1px solid red;" >
第一个sx:div显示登录
</sx:div><br>
<sx:div id="div2" cssStyle="border:1px solid green" >
第二个DIV,显示登录结果。
</sx:div>
</body>
</html>

home.jsp 主页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!-- 引入struts2的标签库 -->
<%@ taglib uri="/struts-tags" prefix="s"%>
<!-- 引入Ajax标签 -->
<%@ taglib uri="/struts-dojo-tags" prefix="sx"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'ajaxTime.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<!-- 在JSP页面中加入head标签
负责在页面上导入Dojo所需要的CSS库和JavaScript库 -->
<sx:head />
</head>
<body>
<h2>用户登录</h2>
<!-- Struts2 表单标签 -->
<s:form id="s_form" action="login.action" method="post" theme="simple">
<br>
用户名: <s:textfield label="用户名" name="user.name" />
<br>
密码: <s:textfield label="密码" name="user.password" />
<br>
<!-- 表单内异步提交表单 -->
<sx:submit type="button" value="表单内异步提交按钮" targets="div2" />
</s:form>
<!-- 表单外异步提交 -->
<sx:submit type="button" value="表单外异步提交按钮" formId="s_form" targets="div2"/>
<sx:a formId="s_form" targets="div2" >我也可以提交表单</sx:a>
</body>
</html>

login.jsp 嵌入登陆页面

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

struts.xml 配置

package com.struts;

import com.entity.Users;
import com.opensymphony.xwork2.ActionSupport;
/**
* 控制器类
* 作用:处理登录的请求
* @author asus
*
*/
public class LoginAction extends ActionSupport { /** 属性 */
private Users user; /** 重写execute方法 :此方法作用,为指定处理请求的方法时,默认走此方法*/
public String execute(){ return "";
} /** 登录验证的方法 */
public String login(){ if(user!=null){
if(user.getName().equals("admin") && user.getPassword().equals("admin")){
return SUCCESS;
}
} return ERROR;
} /** JavaBean */
public Users getUser() {
return user;
} public void setUser(Users user) {
this.user = user;
} }

LoginAction 控制器

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'success.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
登录成功!
</body>
</html>

success.jsp 登录成功页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'file.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
登陆失败!
</body>
</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. arcgis打开图层后右下角坐标小数点位数调整

    打开arcmap,加载图层后,在其右下方会显示鼠标移动的点坐标,但是默认显示的小数点只有三位,如果是经纬度坐标,只有三位的话不够精确,因此想着能否改变其显示的精度,搜了半天,算是搜到了,但是过了一段时 ...

  2. (ETW) Event Trace for Windows 提高 (含pdf下载)

    内容提纲 • 托管代码与非托管代码介绍 • 不安全代码介绍 • 用户模式与内核模式 • ETW执行流程分析 • 日志分析工具介绍:PerfView.exe   ETW与非托管代码 • ETW依赖的So ...

  3. 用ASP.NET Core 1.0中实现邮件发送功能

    准备将一些项目迁移到 asp.net core 先从封装类库入手,在遇到邮件发送类时发现在 asp.net core 1.0中并示提供SMTP相关类库,于是网上一搜发现了MailKit 好东西一定要试 ...

  4. iis7下iis安全狗不能用怎么办(安装iis6兼容性)

    is7下iis安全狗不能用怎么办 | 浏览:126 | 更新:2015-05-14 17:11 1 2 3 4 5 6 分步阅读 windows系统iis安全狗是常用的一款软件,针对网站使用很方便.在 ...

  5. tooltip提示插件

    tooltip提示信息插件 原理:定位元素在页面中的位置即坐标信息,将显示节点元素插入到body中绝对应为到相应位置,显示内容从指定元素的属性(dataMess)中获取或者通过设置获取. 使用方法: ...

  6. apk签名

    参考:http://stackoverflow.com/questions/13578134/how-to-automate-keystore-generation-using-the-java-ke ...

  7. LInux : du命令

    Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能 ...

  8. SQL数据类型解释

    SQL数据类型解释 1.char.varchar.text.ntext.bigint.int.smallint.tinyint和bit的区别及数据库的数据类型电脑秘籍 2009-05-15 21:47 ...

  9. 【转载】S2SH

    说说最多人用的SSH或SSI吧,现在用的比较多的应该就是struts2.x+spring3.X+hibernate4.X或hibernate3.X了吧,mybatis用的人也有,方便有DBA的公司. ...

  10. symfony安装使用

    symfony是一个强大的具有DI特性的框架,目前比较流行的php开发框架Drupal,Laravel底层都是使用了symfony. 想了解symfony更多内容,传送门 安装symfony很简单,一 ...