xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
3.1.4 当数据传回前台后
//该函数的名称不要改变,因为我在js文件中决定了用该函数来处理传回的数据
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
//根据操作类型,选择不同的Javascript方法处理。
if(operateType == "select1")
{
selMaker();
}
else if(operateType == "select2")
{
getMessage();
}
}
}
}
3.1.5 具体处理传回的数据:
function selMaker() {
//获取从后台传来的文本。
var responseText = xmlHttp.responseText;
//解析文本
var rows = responseText.split(";");
var option = null;
var _t=[];
var _tx = [];
var cols;
var pos = "\’" ’test1’ ’,’ ’test2’ "\’";
for(var i = 0; i < rows.length; i ) { 字串1
cols = rows[i].split(",");
values = "\’" cols[0] ’,’ cols[1] "\’";
//处理每行显示数据
_t[i]=’ ’ cols[0] ’ ’ cols[1] ’
’;
}
//找出要显示数据的Div
_termFrame=getElement(’selMake’);
//把所有数据行显示到Div中
_termFrame.innerHTML=’ ’ _t.join(’’) ’ ’;
// 显示结果
_termFrame.style.display=’block’;
//隐藏父页面中Div遮挡的Select元素,避免下面的Select元素优先显示
getElement(’models’).style.visibility="hidden";
_termFrame.style.visibility="visible";
}
3.2 Servlet后台
选择Servlet作为后台,是因为如果采用Struts Action为后台处理程序,则必须指定要返回的页面。而使用Servlet则没有这个要求。默认返回到请求页面。而这个放大镜Servlet接受所有的放大镜请求,根据前台传来的放大镜实现类名称参数,由Spring创建放大镜实现类对象,该对象实现了放大镜接口(MaginfierInterface),从而获取返回值文本。返回到前台。
3.2.1 具体代码如下: 字串8
3.2.1.1 放大镜Servlet
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//获取从前台传来的放大镜具体实现类名称
String maginfierClassName = request.getParameter("maginfierClassName");
//调用Web.xml文件中初始化的Spring上下文容器
ApplicationContext appContext = WebApplicationContextUtils
.getWebApplicationContext(this.getServletContext());
//使用Spring容器创建放大镜具体实现类
MaginfierInterface maginfier = (MaginfierInterface) appContext
.getBean(maginfierClassName);
//设置Response编码为中文
response.setContentType("text/xml;charset=GBK");
PrintWriter out = response.getWriter();
//获取放大镜的返回值
String retValue = maginfier.getReturnValue(request);
//把返回值文本写回到前台 字串6
out.write(retValue);
System.out.println("ret = " retValue);
out.close();
}
3.2.1.2 Web.xml配置
3.2.1.2.1 在Web.xml中配置放大镜
AjaxMaginfier
com.iss.fs.web.module.example.AjaxMaginfier
在系统初次启动时,初始化1次-->
1
AjaxMaginfier
/AjaxMaginfier
3.2.1.2.2 在Web.xml中配置Spring Bean管理容器
context
org.springframework.web.context.ContextLoaderServlet
在系统初次启动时,初始化1次-->
1
contextConfigLocation
/WEB-INF/beans.xml
3.2.1.3 在bean.xml中配置放大镜具体实现类
。。。。。。
3.2.1.4 放大镜具体实现类
3.2.1.4.1 实现放大镜接口方法
public String getReturnValue(HttpServletRequest request)
{
String retStr = ""; 字串1
//因为每个前台页面可能有多个放大镜,不同的放大镜的操作也各不相同
//所以设置操作类型可以区分不同的放大镜。
String operation = request.getParameter("operation");
if(operation.equals("select1"))
{
retStr = getSelectValue(request);
}
if(operation.equals("select2"))
{
retStr = getSelectText(request);
}
return retStr;
}
3.2.1.4.2 具体的放大镜操作的私有方法
private String getSelectValue(HttpServletRequest request)
{
/*
下面仅仅是Demo,实际上是根据request获取前台参数,根据参数
查询数据库表,把查询结果循环生成如下规则的字符串文本,前台则
按照此规则解析查询结果并显示。Ajax给人以误解,认为必须传递xml文本,
需后台组织xml字符串,前台解析xml字符串。实际情况是只要是文本都可以

