Struts1.x中利用Ajax动态更新
1.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">
<display-name />
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup><!-- 服务一启动时就进行实例化 -->
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
2.struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<!-- 让Struts知道Form,提供给Action使用 ,name为Form的引用名,type为所对应的Form类的全名-->
<form-bean name="messageForm" type="com.hollycrm.form.MessageForm">
</form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action path="/message" type="com.hollycrm.action.MessageAction" name="messgeForm">
<forward name="success" path="/index.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>
3.index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<% 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%>">
<script src="js/create.js" language="javascript">
</script>
</head>
<body>
<font size="2"></font>
姓名:<input type="text" id="name" onblur="sayHello()"><br/>
AJAX返回的值:<span id='hello'></span><br>
</body>
</html>
4.create.js
// 创建XMLHttpRequest对象 function createXMLHttpRequest() {
// 判断浏览器是否通过JavaScript本地方法支持XMLHttpRequest对象
if (window.XMLHttpRequest) { // Mozilla浏览器
// 除IE浏览器外其他浏览器中创建XMLHttpRequest对象的方法
XMLHttpReq = new XMLHttpRequest();
} else { // IE浏览器
// 判断浏览器是否支持ActiveX,在IE浏览器中是通过ActiveX组件支持XMLHttpRequest对象
if (window.ActiveXObject) { // 在不同版本的IE浏览器中,对XMLHttpRequest对象的支持方法有些不同
// 用以下代码来判断以适应不同版本的IE浏览器
try {
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) { } } } } }
// 处理服务器响应请求,对服务器返回的信息进行分析处理,并且把分析的结果展示在页面的指定位置
function handleResponse() {
// 判断对象状态,readyState这个属性描述了请求的状态,可以取下面的5个值:0(未初始化),1(正在加载),2(已加载),3(交互中),4(已完成)
if (XMLHttpReq.readyState == 4) { // 信息已经成功返回,开始处理信息
// status属性描述了服务器的状态码,可以是200,404等
if (XMLHttpReq.status == 200) {
var out = "";
// responseXML是服务器以XML格式返回的响应。
var res = XMLHttpReq.responseXML;
var response = res.getElementsByTagName("response")[0].firstChild.nodeValue;
document.getElementById("hello").innerHTML = response;
// document.getElementsByName("hello").innerHTML=response;
} } }
// 发送客户端的请求
function sendRequest(url) {
createXMLHttpRequest();
// open(string method,string url,boolean asynch,string name,string password)方法用于建立对服务器的调用
// 这个方法有5个参数,前两个参数是必须的,其中method可以是GET或者POST,url是指所要访问的服务器资源的位置,aysnch是指异步访问服务器还是同步访问,默认是异步访问,异步访问正是Ajax的优势所在。使用最后两个参数可以使用指定的用户名和密码访问服务器资源。
XMLHttpReq.open("GET", url, true); // 指定响应函数
// onreadystatechange属性,每个状态的改变都会调用这个事件处理器,使用这个属性可以监听状态的变化,并提供对应的处理方法
XMLHttpReq.onreadystatechange = handleResponse;
// 发送请求,send(content)方法向服务器发送请求,这个方法中的参数会作为请求中的内容发送到服务器
XMLHttpReq.send(null);
}
// 开始调用Ajax的功能
function sayHello() {
var name = document.getElementById("name").value;
// alert(name);
// 发送请求
sendRequest("message.do?name="+name);
}
5. MessageAction.java
public class MessageAction extends Action{
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
// MessageForm messageForm=(MessageForm) form;
//设置生成文件的类型和编码方式
response.setContentType("text/xml;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter returnValue=response.getWriter();
String output=""; //处理接收到的参数,生成响应的XML文档
// System.out.println(messageForm.getName());
// System.out.println(request.getParameter("name"));
// if(messageForm.getName().equals("15979089546")){
if(request.getParameter("name").equals("15979089546")){
output="<response>wensm</response>";
}else{
output="<response>该用户不存在</response>";
}
returnValue.print(output);
returnValue.close();
return mapping.findForward("sucess");
} }
6.MessageForm.java
public class MessageForm extends ActionForm{
private String name=null;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }