`

Ajax+servlet+web.xml Ajax select 下拉菜单 实例 (转)

    博客分类:
  • Ajax
阅读更多
--- servlet----
package com.ajax;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class AjaxServlet extends HttpServlet {

String[][] hebeiArr;
String[][] beijingArr;

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
   System.out.println("ajaxServlet onload .....");
   hebeiArr = new String[3][2];
   beijingArr = new String[3][2];
   String[][] tmpArr = null;
   hebeiArr[0][0] = "11";
   hebeiArr[0][1] = "石家庄";
   hebeiArr[1][0] = "12";
   hebeiArr[1][1] = "廊坊";
   hebeiArr[2][0] = "13";
   hebeiArr[2][1] = "秦皇岛";
   beijingArr[0][0] = "01";
   beijingArr[0][1] = "昌平";
   beijingArr[1][0] = "02";
   beijingArr[1][1] = "通州";
   beijingArr[2][0] = "03";
   beijingArr[2][1] = "大兴";
   String id = req.getParameter("id");
   if(id.equals("hb")){
    tmpArr = hebeiArr;
   } else if(id.equals("bj")){
    tmpArr = beijingArr;
   }
   StringBuffer sb = new StringBuffer();
   sb.append("<root>");
   System.out.println(tmpArr.length);
   for(int i=0; i<tmpArr.length; i++){
    sb.append("<city><id>"+tmpArr[i][0]+"</id><name>"+tmpArr[i][1]+"</name></city>");
   }
   sb.append("</root>");
   resp.setContentType("text/xml");
   resp.setHeader("Cache-Control", "no-cache");
   resp.setCharacterEncoding("utf-8");
   PrintWriter out = resp.getWriter();
   out.print(sb.toString());
   System.out.println(sb.toString());
   out.close();
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
   this.doGet(req, resp);
}
}



----- jsp-------

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>

<body>
<form name='frm' method='post' action=''>
<table border='1' align='center'>
<tr>
   <td id='se'>
    <select onchange='show(this.value)'>
     <option value='hb'>河北省</option>
     <option value='bj'>北京市</option>
    </select>
   </td>
   <td id='si'>
    <select name='city'>
     <option value='0'>选择</option>
    </select>
   </td>
</tr>
</table>
</form>
</body>
<script language='javascript'>
var xMLHttpReq;
function show(val){
   if(window.ActiveXObject){
    try{
         xMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); //IE6.0 
      } catch(e){
         xMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); //IE5.5 这两版本差别不大
      }
     }else if(window.XMLHttpRequest){
     xMLHttpReq=new XMLHttpRequest();
     }
   xMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
   var url = "servlet/AjaxServlet?id="+val;
   xMLHttpReq.open("get",url,true);
   xMLHttpReq.setRequestHeader("Content-Type","text/html;charset=utf-8");
   xMLHttpReq.onreadystatechange = proc;
   xMLHttpReq.send(null);
}
function proc(){
   if(xMLHttpReq.readyState == 4){ 
    if(xMLHttpReq.status == 200){
     var root = xMLHttpReq.responseXML;
     var res = root.getElementsByTagName("city"); //取得 city 标签的数组
     var sel = document.getElementById("city");
     var selsize = sel.options.length;
     /*
     for(var i=selsize-1; i>=0; i--){ //从后往前删除元素
      sel.remove(i);
     }
     */
     for(var i=0; i<selsize; i++){ //删除原有元素 效果与上同
      sel.remove(0);
     }
     for(var i=0; i<res.length; i++){
      var op = document.createElement("option");
      op.value = res[i].childNodes[0].text; //要用 .text 数组元素的第1个子元素
      op.text = res[i].childNodes[1].text; //数组元素的第2个子元素
      sel.add(op);
     }
    }
   }
}
</script>
</html>



-----------------------

---------------------
---------web.xml---------

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet> 
<servlet-name>AjaxServlet</servlet-name> 
<servlet-class>com.ajax.AjaxServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
<servlet-name>AjaxServlet</servlet-name> 
<url-pattern>/servlet/AjaxServlet</url-pattern> 
</servlet-mapping> 
</web-app>
----------------------
 
 
 
 















分享到:
评论

相关推荐

    jQuery+ajax实现三级级联

    在这个“jQuery+ajax实现三级级联”的实例中,我们主要探讨如何利用这两种技术来创建一个能够逐级联动的下拉菜单系统,这在数据筛选和表单填写中十分常见,如地区选择、部门分类等场景。 首先,jQuery是一个轻量级...

    servlet+ajax做的两个下拉列表联动

    在Web开发中,"servlet+ajax做的两个下拉列表联动"是一...总之,"servlet+ajax做的两个下拉列表联动"是Web开发中一个典型的前后端交互实例,它结合了服务器处理和客户端动态更新,提供了一种高效、流畅的用户交互方式。

    ajax三种入门实例

    #### 一、基于Servlet的AJAX实例 在本部分中,我们将探讨一个基于Servlet实现的简单AJAX应用示例。这个示例主要关注于如何通过AJAX技术实现实时的数据获取与展示。具体来说,用户在前端页面选择省份后,通过AJAX...

    AJAX实例入门.docx

    **AJAX(Asynchronous JavaScript and XML)实例入门** AJAX是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这种技术结合了JavaScript、XML、DOM(Document Object Model)、CSS(Cascading Style...

    ajax 异步实现两级联动下拉列表和输入提示

    在“两级联动下拉列表”中,通常有两个或更多下拉菜单,它们之间有依赖关系。例如,第一个下拉框选择了国家,第二个下拉框则根据所选国家动态加载对应的省份。当用户在第一个下拉框中做出选择时,AJAX会异步发送请求...

    AJAX实例入门

    **AJAX实例入门详解** ...这个基于Servlet的省份城市选择实例只是一个简单的应用,实际项目中,AJAX可以用于更复杂的场景,如表格数据的动态加载、表单验证、实时搜索等,为Web应用带来无限可能。

    java+ajax省市区三级联动实例

    在这个实例中,Servlet将处理Ajax发送的请求,查询数据库获取对应级别的地区数据。 - **JDBC**:Java Database Connectivity,用于连接和操作数据库。在三级联动中,我们需要根据用户的上一级选择,通过JDBC查询下...

    DWR联动刷select

    ### DWR联动刷select实现联动菜单 #### 一、DWR简介 Direct Web Remoting (DWR) 是一种简化Ajax应用程序开发的技术。它允许JavaScript直接调用Java方法,并且能够处理JSON数据,使得前后端之间的交互更为简单高效...

    AJAX DWR实例

    - **web.xml配置**:在Web应用的配置文件中,我们需要添加DWR的Servlet配置,指定DWR Context Path以及允许访问的IP地址。 - **dwr.xml配置**:这是DWR的核心配置文件,用于定义哪些Java类和方法可以被客户端调用,...

    JavaScript完全自学宝典 源代码

    ajaxmodel.war Ajax实例应用的项目文件(可直接在Tomcat中发布运行)。 \ajaxmodel\amel\html\firstAjax.jsp 显示XMLHttpRequest对象状态。 \ajaxmodel\amel\html\userReg.html 完成验证的客户端页面。...

    Ajax实现动态加载组合框的实例代码

    Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,能实现页面局部更新的Web应用开发技术。它利用了浏览器内置的XMLHttpRequest对象与服务器进行异步通信,从而允许用户界面与服务器...

    实现jsp页面二级下拉框联动,实时读取数据库数据

    在网页设计中,二级下拉框联动是一种常见...这个过程涉及到前后端的交互、数据库操作、事件监听和DOM操作等多个技术环节,是Web开发中一个典型的实例。理解并掌握这些知识,将有助于提升开发者在实际项目中的应用能力。

    Java学习笔记-个人整理的

    {12.5}操作符与实例}{154}{section.12.5} {12.5.1}where}{154}{subsection.12.5.1} {12.6}函数}{156}{section.12.6} {12.7}组函数}{158}{section.12.7} {12.7.1}group by}{159}{subsection.12.7.1} {12.7.2}...

    struts2中核心知识点(职场必备)

    当客户端发送请求到Web服务器时,服务器加载并初始化`strutsPrepareAndExecuteFilter`核心过滤器,解析`struts.xml`配置文件,创建`ActionMapper`和`ActionMapping`,接着创建`ActionInvocation`对象,用于存储一...

    关于jsp的一些知识总结

    这表明JSP页面可能使用了JavaScript库(如jQuery)来增强用户体验,例如通过AJAX实现异步通信,或者使用自定义的`divselect.js`实现更复杂的下拉选择功能。 **JSP与HTML:** `demo.html`可能是包含JSP标记的一个...

    jsp省市区三级联动

    3. **Java后台处理**:在服务器端,我们需要一个Servlet或JSP的后台方法来处理这些AJAX请求。这个方法应能接收请求参数(如省份ID),查询数据库获取相应的城市或区县数据,然后将结果转化为JSON或XML格式,返回给...

    activiti将用户输入框修改为弹出选择框

    在Activiti的工作流设计器中,你可以直接编辑XML定义,或者使用图形化界面添加用户任务,并设置表单键。 2. **创建表单**:接下来,创建一个HTML页面作为你的表单。在这个页面中,你可以用HTML `&lt;select&gt;` 标签来...

    网络第一份struts2.0学习文档

    - `&lt;s:select&gt;`:显示下拉列表。 - `&lt;s:submit&gt;`:显示提交按钮。 - **标签特性**: - 支持动态属性绑定。 - 自动表单填充。 #### 九、表达式OGNL - **OGNL概述**: - OGNL(Object-Graph Navigation ...

Global site tag (gtag.js) - Google Analytics