Struts2和Struts相比,一个重大改进就是支持Ajax。 本文主要看一下Struts2中的Div是如何用来输出Ajax结果,其中主要使用了Dojo。
首先,我们先创建一个简单的用例,在这个用例中,将在屏幕上显示一个用户列表,点击列表中的userid时,列表的下方将显示用户的详细信息,显示用户详细信息的这个步骤我们将使用Ajax。
一、创建web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
二、创建struts.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="ajaxdemo" extends="struts-default">
<action name="UserListingAction" class="ajaxdemo.action.UserListingAction">
<result>/userlisting.jsp</result>
</action>
<action name="UserDetailAction" class="ajaxdemo.action.UserDetailAction">
<result>/userdetail.jsp</result>
</action>
</package>
</struts>
三、页面:userlisting.jsp
Displays list of users
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<s:head theme="ajax"/>
</head>
<script>
function show_user_details(id) {
document.frm_user.userid.value = id;
dojo.event.topic.publish("show_detail");
}
</script>
<body>
<s:form id="frm_user" name="frm_user">
<h1>User Listing</h1>
<s:if test="userList.size > 0">
<table border="1">
<s:iterator value="userList">
<tr>
<td>
<s:a href="#"
onclick="javascript:show_user_details('%{id}');return
false;"><s:property value="id" /></s:a>
</td>
<td>
<s:property value="name" />
</td>
</tr>
</s:iterator>
</table>
</s:if>
<s:hidden name="userid"/>
<s:url id="d_url" action="UserDetailAction" />
<s:div id="user_details" href="%{d_url}" theme="ajax" listenTopics="show_detail" formId="frm_user" >
</s:div>
</s:form>
</body>
</html>
四、页面:userdetail.jsp,用于显示用户详细信息,由userlisting.jsp加载
<%@ taglib prefix="s" uri="/struts-tags" %>
<h1>User Details</h1>
<s:if test="userDetails != null">
<table>
<tr><td>Id:</td><td><s:property value="userDetails.id" /></td></tr>
<tr><td>Name:</td><td><s:property value="userDetails.name" /></td></tr>
<tr><td>Email:</td><td><s:property value="userDetails.email" /></td></tr>
<tr><td>Address:</td><td><s:property value="userDetails.address" /></td></tr>
</table>
</s:if>
五、ajaxdemo.action.UserListingAction.java,生成用户列表数据,交由userlisting.jsp显示,在实际的应用中,这部分的数据一般是从数据库中取得的。
package ajaxdemo.action;
import ajaxdemo.dto.UserListDTO;
import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import java.util.List;
/** *//** Populates the user listing data */
public class UserListingAction extends ActionSupport {
private List<UserListDTO> userList; // this is available in view automatically!
public String execute() throws Exception {
// create 2 user objects and add to a list
setUserList((List<UserListDTO>) new ArrayList());
UserListDTO user = new UserListDTO();
user.setId("gjose");
user.setName("Grace Joseph");
getUserList().add(user);
user = new UserListDTO();
user.setId("peter");
user.setName("PeterSmith");
getUserList().add(user);
return SUCCESS;
}
public List<UserListDTO> getUserList() {
return userList;
}
public void setUserList(List<UserListDTO> userList) {
this.userList = userList;
}
}
六、ajaxdemo.action.UserDetailAction.java,当userid被选中时,取得用户详细数据,通过dojo来调用。
package ajaxdemo.action;
import ajaxdemo.dto.UserDetailDTO;
import com.opensymphony.xwork2.ActionSupport;
/**//* Populates user details for a user id selected */
public class UserDetailAction extends ActionSupport {
private String userid;
private UserDetailDTO userDetails;
public String execute() throws Exception {
// populate only when userid is selected
if(userid!=null && !userid.equals(""))
populateDetail(userid);
return SUCCESS;
}
private void populateDetail(String id) {
userDetails = new UserDetailDTO();
userDetails.setId(id);
userDetails.setName("The Complete Name");
userDetails.setEmail("admin@struts2.org");
userDetails.setAddress("rich street, lavish road, Struts Land");
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public UserDetailDTO getUserDetails() {
return userDetails;
}
public void setUserDetails(UserDetailDTO userDetails) {
this.userDetails = userDetails;
}
}
七、ajaxdemo.action.UserDetailDTO.java、POJO,用于封装用户信息
package ajaxdemo.dto;
public class UserDetailDTO {
private String id;
private String name;
private String email;
private String address;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
OK,部署完毕后,输入http://localhost:8080/ajaxdemo/UserListingAction.action来测试一下。
当列表中的userid被点中后,javaScript通知Div标签从URL中动态加载返回内容。这个例子中,UserDetailAction取得用户信息并传递给userdetail.jsp。userdetail.jsp生成最终的展示结果,显示在Div中。
分享到:
相关推荐
Struts2与Ajax 的实现原理,于Servlet+Ajax原理是一致的,都是通过后台的response.getWriter().print("");把数据传输给前台的。 前台Ajax格式如下(需要导入ajax库,比如:jquery-1.11.3.js) 格式: $(function()...
Struts2与AJAX
Struts 2与AJAX是Web开发领域中的两个关键技术,它们在构建动态、交互式的Web应用程序中发挥着重要作用。Struts 2是一个基于MVC(Model-View-Controller)设计模式的Java EE框架,它提供了丰富的特性来简化企业级...
第10章 Struts 2与Ajax.ppt
Struts2为了满足这种需求,实现了与AJAX的无缝集成,提供了一流的AJAX支持。 Struts2的AJAX支持并不是从零开始创建一个新的AJAX框架,而是选择了当时在Java EE平台上广泛使用的AJAX库,如Dojo和Direct Web Remoting...
### Struts2与Ajax知识点详解 #### 一、Struts2与AJAX的结合 在Web 2.0时代,用户界面的交互性和响应性变得至关重要。为了满足这一需求,Struts2框架提供了强大的AJAX支持,使得开发人员能够轻松地在应用程序中...
将Struts2与Ajax结合,可以实现动态、异步的数据验证,提高应用的响应速度和效率。 在Struts2中,输入验证是必不可少的一环,它确保用户提交的数据符合预设的规则,如非空检查、数据类型验证等。传统的验证方式通常...
6. Struts2与Ajax的集成,使用JQuery的$.ajax()或$.getJSON()方法 7. 请求与响应的处理,包括参数传递和数据封装 8. 实例演示:使用Struts2+Jquery+Ajax实现动态加载数据或表单验证 "struts2 jar"文件包含了Struts2...
综上所述,Struts2与AJAX的结合使得Web应用能够实现无刷新的用户体验,提高了交互性和效率。理解并熟练掌握这一技术,对于提升Web应用的质量和用户体验至关重要。在实际开发中,开发者还需要考虑错误处理、安全性...
4. **Struts 2与AJAX的集成**:介绍如何在Struts 2应用中使用AJAX,可能包括XMLHttpRequest对象、JSON数据格式、以及Struts2-AJAX插件的使用。 5. **实战示例**:提供了一些实际的开发案例,如创建一个简单的Struts ...
首先,我们需要了解Struts2与AJAX交互的基本原理。在AJAX中,JavaScript通常通过XMLHttpRequest对象与服务器进行异步通信,发送请求并接收响应。在Struts2框架下,我们可以利用Struts2的Action类和结果类型来处理...
2. **Struts2与Ajax集成**: Struts2框架支持多种方式来实现Ajax请求。其中一种是通过使用Struts2的插件,如`struts2-jquery-plugin`或`struts2-dojo-plugin`,这些插件为开发者提供了丰富的JavaScript库和动作支持...
这篇文档“struts与ajax.docx”可能包含了如何将Struts2和Ajax结合使用的详细步骤。通常,这个过程会涉及以下几个关键点: 1. **Struts2配置**:首先,需要在`struts.xml`配置文件中定义一个Action,这个Action将...
当Struts2与Ajax结合使用时,可以实现更高效的页面交互,提供更流畅的用户界面。 Struts2对Ajax的支持是通过一系列的AJAX标签实现的,这些标签允许开发者在不编写大量JavaScript代码的情况下,轻松地添加Ajax功能到...
2. **Struts2与Ajax整合**: Struts2框架通过Struts2-jQuery插件或Struts2-Conventions插件来支持Ajax功能。这两个插件提供了方便的标签库,使得在JSP页面中使用Ajax变得更加简单。 3. **Struts2-jQuery插件**: ...
Struts2是一个强大的MVC(模型-视图-控制器)框架,它在Java ...通过这个项目,你可以学习到Struts2的Action配置、Ajax请求的发送与接收、以及前端和后端的数据处理。这将对理解和提升你的Java Web开发技能大有裨益。
在Struts2与Ajax的交互中,后端返回的JSON数据需要在前端被`json2.js`解析成可操作的对象,这样才能在页面上动态更新内容。 接下来,我们讨论Struts2的`jsonplugin`。Struts2 JSON插件是官方提供的一个扩展,它使...
**Struts2与Ajax交互** 在Struts2中,可以通过配置Action来处理Ajax请求。Action类中的方法可以返回一个值,这个值可以映射到一个视图,也可以是JSON字符串。使用`@Result`注解或struts.xml配置文件,可以指定一个...
#### Ajax概述与Struts2的融合 在现代Web2.0技术蓬勃发展的背景下,Ajax技术因其能够实现网页的异步加载与交互性提升,成为了构建动态网页的重要组成部分。Struts2框架,作为Java Web开发中的明星框架之一,自然也...