1、 这些时间,瞎子也看得见,AJAX正大踏步朝咱们走来。不管咱们是拥护也好,反对也罢,还是视而不见,AJAX像一阵时尚,席转了咱们所有人。 有关AJAX定义也好,大话也好,早有人在网上刊登了汗牛充栋文字,在这里我也不想照本宣科。 只想说说我感觉到某些长处,对于不对,人们也可以和我讨论: 首先是异步交互,顾客感觉不到页面提交,当然也不等待页面返回。这是使用了AJAX技术页面给顾客第一感觉。 另首先是响应速度快,这也是顾客强烈体验。 然后是与咱们开发者有关,复杂UI成功处理,一直以来,咱们对B/S模式UI不如C/S模式UI丰富而苦恼。目前由于AJAX大量
2、使用JS,使得复杂UI设计变得愈加成功。 最终,AJAX祈求返回对象为XML文献,这也是一种时尚,就是WEB SERVICE时尚同样。易于和WEB SERVICE结合起来。 好了,闲话少说,让咱们转入正题吧。 咱们第一种例子是基于Servlet为后台一种web应用。 基于ServletAJAX 这是一种很常用UI,当顾客在第一种选用框里选用ZHEJIANG时,第二个选用框要出现ZHEJIANG都市;当顾客在第一种选用框里选用JIANGSU时,第二个选用框里要出现JIANGSU都市。 首先,咱们来看配置文献web.xml,在里面配置一种servlet,跟
3、往常同样:
4、
5、uiv="description" content="this is my page">
第一眼看来,跟咱们寻常JSP没有两样。仔细一看,不一样在JS里头。 咱们首先来看第一种措施:getResult(stateVal),在这个措施里,首先是获得Xml Request;然后设置该祈求url:req.open("GE10、T",url,true);接着设置祈求返回值接受措施:req.onreadystatechange = complete;该返回值接受措施为——complete();最终是发送祈求:req.send(null); 然后咱们来看咱们返回值接受措施:complete(),这这个措施里,首先判断与否对旳返回,假如对旳返回,用DOM对返回XML文献进行解析。有关DOM使用,这里不再讲述,请人们参阅有关文档。得到city值后来,再通过buildSelect(str,sel)措施赋值到对应选用框里头去。 最终咱们来看看Servlet文献: import java.io.IOExcept
11、ion; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet. . Servlet; import javax.servlet. . ServletRequest; import javax.servlet. . ServletResponse; /** * @author Administrator * * TODO To change the template for this generated type comme
12、nt go to * Window - Preferences - Java - Code Style - Code Templates */ public class SelectCityServlet extends Servlet { public SelectCityServlet() { super(); } public void destroy() { super.destroy(); } public void doGet( ServletRequest request, Servlet
13、Response response)
throws ServletException,IOException {
response.setContentType("text/xml");
response.setHeader("Cache-Control","no-cache");
String state = request.getParameter("state");
StringBuffer sb=new StringBuffer(" 14、ty>hangzhou
15、是从request里获得state参数,然后根据state参数生成对应XML文献,最终将XML文献输出到PrintWriter对象里。 到目前为止,第一种例子代码已经所有结束。是不是比较简朴? 运行图: /
列表A | |
列表B | |
列表C |
28、 <%@ page contentType="text/plain;charset=UTF-8"%> <%@ page language="java"%> <%@ page import="java.sql.*,ajax.db.DBUtils"%> <%! //访问数据库获得下级选项信息 String getOptions(String selectedId) { int counter = 0; //计数器 StringBuffer opts = new
29、 StringBuffer("{"); //保留选项信息 String sql = "select * from select_menu where pid = ?order by seq asc";//定义查询数据库SQL语句 Connection conn = null; //申明Connection对象 PreparedStatement pstmt = null; //申明PreparedStatement对象 ResultSet rs = null;
30、 //申明ResultSet对象 try { conn = DBUtils.getConnection(); //获取数据库连接 pstmt = conn.prepareStatement(sql);//根据sql创立PreparedStatement pstmt.setString(1,selectedId); //设置参数 rs = pstmt.executeQuery(); //执行查询,返回成果集
31、 while (rs.next()) { //遍历成果集 //假如不是第一项,追加一种“,”用于分隔选项 if (counter > 0) { opts.append(","); } opts.append("'"); opts.append(rs.getString("id")); opts.append("':'")
32、 opts.append(rs.getString("text")); opts.append("'"); counter++; //计数器加1 } } catch (SQLException e) { System.out.println(e.toString()); } finally { DBUtils.close(rs);
33、 //关闭成果集 DBUtils.close(pstmt); //关闭PreparedStatement DBUtils.close(conn); //关闭连接 } opts.append("}"); return opts.toString(); } %> <% out.clear(); //清空目前输出内容(空格和换行符) String sel
34、ectedId = request.getParameter("selectedId");//获取selectedId参数 String optionsInfo = getOptions(selectedId); //调用getOptions措施获得下级选项信息 out.print(optionsInfo); //输出下级选项信息 %> <%@ page contentType="text/plain;charset=UTF-8"%> <%@ page language="j
35、ava"%> <%@ page import="java.sql.*,ajax.db.DBUtils"%> <%! //访问数据库获得下级选项信息 String getOptions(String selectedId) { int counter = 0; //计数器 StringBuffer opts = new StringBuffer("{"); //保留选项信息 String sql = "select * from select_menu where p
36、id = ?order by seq asc";//定义查询数据库SQL语句 Connection conn = null; //申明Connection对象 PreparedStatement pstmt = null; //申明PreparedStatement对象 ResultSet rs = null; //申明ResultSet对象 try { conn = DBUtils.getConnection();
37、 //获取数据库连接 pstmt = conn.prepareStatement(sql);//根据sql创立PreparedStatement pstmt.setString(1,selectedId); //设置参数 rs = pstmt.executeQuery(); //执行查询,返回成果集 while (rs.next()) { //遍历成果集 //假如不是第一项,追加一种“,”用于分隔选项
38、 if (counter > 0) { opts.append(","); } opts.append("'"); opts.append(rs.getString("id")); opts.append("':'"); opts.append(rs.getString("text")); opts.append("'
39、"); counter++; //计数器加1 } } catch (SQLException e) { System.out.println(e.toString()); } finally { DBUtils.close(rs); //关闭成果集 DBUtils.close(pstmt); //关闭PreparedStatement
40、DBUtils.close(conn); //关闭连接 } opts.append("}"); return opts.toString(); } %> <% out.clear(); //清空目前输出内容(空格和换行符) String selectedId = request.getParameter("selectedId");//获取selectedId参数 String optionsInfo = getOptions(selectedId); //调用getOptions措施获得下级选项信息 out.print(optionsInfo); //输出下级选项信息 %>
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818