最近做毕设发现Ajax提交到Struts后在Action里不需要out.write来构造html或xml了。因为可以就当没有Ajax存在一样去写Action,XMLHttpRequest就能获得Action所转发到的jsp生成的html。说起来很抽象,还是看代码:
login.jsp:
<%@ page language="java" pageEncoding="gbk"%>
<html>
<head>
<title>JSP for LoginForm form</title>
<script type="text/javascript">
function GE(a){return document.getElementById(a);}
function createXMLHttpRequest() {
var xmlhttp;
if (window.ActiveXObject) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function login(){
var xmlhttp = createXMLHttpRequest();
if(xmlhttp)
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
GE('msg').innerHTML=xmlhttp.responseText;
//alert(xmlhttp.responseText);
}else{
GE('msg').innerHTML=xmlhttp.statusText;
//alert(xmlhttp.statusText);
}
}else{GE('msg').innerHTML="正在提交数据...";}
};
xmlhttp.open('POST','login.do?name='+GE('name').value+'&password='+GE('password').value,true);
xmlhttp.send(null);
}
</script>
</head>
<body>
<h2 align="center">Ajax应用实例: 登录模块</h2>
<form action="login.do" method="post">
帐号 : <input type="text" id="name" name="name"/><br>
密码 : <input type="password" id="password" name="password"/>
<br><input type="button" onclick="login()" value="Ajax提交"><br><br>
<input type="submit" value="普通提交">
</form>
<div id="Layer1">
<div id="msg"></div>
</div>
</body>
</html>
struts-config.xml:
<action-mappings >
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="com.neusoft.struts.action.LoginAction">
<forward name="loginSuccess" path="/loginSuccess.jsp" />
</action>
LoginAction.java:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws IOException {
//LoginForm loginForm = (LoginForm) form;
String name = request.getParameter("name");
request.setAttribute("name", name);
System.out.println(name);
return mapping.findForward("loginSuccess");
}
loginSuccess.jsp
<body>
<h2 align="center" style="font-size: 20px;color: blue;">
登录成功!</h2><br>
getParameter:<%=request.getParameter("name") %>
getAttribute:<%=request.getAttribute("name") %>
</body>
就这样,login.jsp中的xmlhttp.responseText得到的字符串就是loginSuccess.jsp所生成的页面的源代码。
于是在Action里根本不需要构造html或xml或json了,只需把得到数据放到request里,然后转发到jsp(loginSuccess.jsp),在jsp里取出数据,显示;但这个jsp将自身源码以字符串形式传给Ajax页面(login.jsp)。多个jsp,但不需要手工构造 html或xml或json等了。
不知道这是不是个传递数据的捷径呢?
分享到:
- 2008-05-12 21:17
- 浏览 947
- 评论(4)
- 论坛回复 / 浏览 (4 / 3429)
- 查看更多
相关推荐
何为捷径?文章-需求.docx
精彩编程与编程技巧-如何将程序建立成“启动”文件夹的捷径? ...
ensp配置转发捷径将流量引入TE隧道示例
Qno侠诺透明桥接模式适合不想更动原有合法IP的PC设定与架构,想快速实现合法IP与虚拟IP均可通过侠诺安全路由访问Internet。企业可依据实际需求来选择适用的模式,让您的企业网络运行更加通畅便利!
android 超捷径 源码android 超捷径 源码
7.4 Ajax数据流的访问策略 7.4.1 设计安全的Web层 7.4.2 限制对Web数据的访问 7.5 小结 7.6 资源 第8章 性能 8.1 什么是性能? 8.2 JavaScript的执行速度 8.2.1 测定应用时间的艰难方式 8.2.2 使用Venkman性能分析器 ...
使用转发捷径把流量引入TE隧道的配置
一个非常有用的业务流程管理系统应该易于使用,并且在最开始就应该提供容易上手的学习方法。如何从一开始就选择好的工具来寻找业务流程管理的捷径?文中列举了五种方法供您参考。
走WORD字处理的捷径
struts2.0项目学习的捷径
JavaScript实例自学手册:通过486个例子掌握Web开发捷径 原书配的代码部分
NLP学习突破的捷径
C#4.0捷径教程
struts2.0项目,学习的捷径
JavaScript自学手册通过486个例子掌握WEB开发捷径,超低分分享
本书在简要介绍这两个库在宏观应用中的意义之后,再通过 QuickGallery图片浏览器示例探索突破传统 Web应用局限的捷径,研究 Prototype辅助类及其运行方式;随后介绍如何添加 scriptaculous特效和控件,如 资源...
英语万词突破捷径英语万词突破捷径英语万词突破捷径英语万词突破捷径英语万词突破捷径英语万词突破捷径英语万词突破捷径
学习struts2.0的新方式,捷径 学新技术的下载
JAVA 2 捷径教程(代码1) 第一章 亲自录入
iOS 12上的必备APP《捷径》了解一下 《捷径》是iOS 12上的一种必备APP,可以大大提升iPhone的使用...《捷径》就是一个更加智能和多样化的通知栏,如果你已经将iPhone的系统升级到了iOS 12,那么一定要试试《捷径》。