- 浏览: 39505 次
- 性别:
- 来自: 武汉
最新评论
-
ifox:
唉,我们不可以。。。
都是配置好的
Cannot convert value '0000-00-00"的解决方案 -
zhanghaidang:
非常感谢,已经可以了,谢谢指点
怎么让矩形顺着我画的线溜下来 -
robin_luyi:
// 松开时调用
private class ...
怎么让矩形顺着我画的线溜下来 -
zhanghaidang:
// 松开时调用
@Override
publ ...
怎么让矩形顺着我画的线溜下来 -
robin_luyi:
单写个线程修改小方块的坐标变量
怎么让矩形顺着我画的线溜下来
想实现一个省市联动菜单,断断续续研究了好长时间,现在终于通过自己的努力实现了.
过程详解:
准备工作:
一个XML文件:
xml 代码
- <!---->xml version="1.0" encoding="GBK"?>
- <china>
- <province name="直辖市">
- <city>北京city>
- <city>上海city>
- <city>天津city>
- <city>重庆city>
- province>
- <province name="广东">
- <city>广州city>
- <city>珠海city>
- <city>深圳city>
- <city>东莞city>
- province>
- <province name="广西">
- <city>桂林city>
- <city>柳州city>
- <city>北海city>
- <city>南宁city>
- province>
- <province name="海南">
- <city>海口city>
- <city>三亚city>
- province>
- <province name="湖北">
- <city>武汉city>
- <city>鄂州city>
- <city>荆州city>
- <city>十堰city>
- province>
- <province name="湖南">
- <city>长沙city>
- <city>岳阳city>
- <city>常德city>
- <city>张家界city>
- province>
- <province name="浙江">
- <city>杭州city>
- <city>绍兴city>
- <city>宁波city>
- <city>台州city>
- province>
- <province name="辽宁">
- <city>沈阳city>
- <city>大连city>
- <city>抚顺city>
- <city>铁岭city>
- province>
- china>
用一个Java类来解析这个XML文件,我用的是JDOM,实现的功能为能够获取所有省份,和传入省份的集合(用于Jsp页面显示),可以获取相应的城市集合.
java 代码
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import org.jdom.Document;
- import org.jdom.Element;
- import org.jdom.JDOMException;
- import org.jdom.input.SAXBuilder;
- public class ReadXml {
- private Element root = null;
- public ReadXml() throws FileNotFoundException, JDOMException, IOException {
- super();
- SAXBuilder sb = new SAXBuilder();//解析器对象
- Document doc = sb.build(this.getClass().getResourceAsStream("/city.xml"));//绑定文件
- root = doc.getRootElement();//获取根元素
- }
- public List getProvince(){ //获取省份
- ArrayList provinceList = new ArrayList();
- List tempList = root.getChildren();//获取所有省份节点
- for(int i=0; i
- Element province=(Element)tempList.get(i);//子节点转型
- provinceList.add(province.getAttributeValue("name"));//获取省份节点属性内容
- }
- return provinceList;
- }
- public List getCity(String province){
- ArrayList cityList = new ArrayList();
- List provincetemplist = root.getChildren();//省份集合
- for(int i=0; i
- Element provinceElement = (Element)provincetemplist.get(i);
- if((provinceElement.getAttributeValue("name")).equals(province)){//如果属性为传进来的名称
- List cityTempList = provinceElement.getChildren();//获取子节点集合
- for(int j=0; j//循环
- Element cityElement = (Element)cityTempList.get(j);//当前城市节点
- cityList.add(cityElement.getTextTrim());//增加城市到集合
- }
- }
- }
- return cityList;
- }
- }
写一个Action,用来获取省份集合
java 代码
- public class GetProvinceAction extends Action {
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response) throws FileNotFoundException, JDOMException, IOException {
- ReadXml rx = new ReadXml();
- List provinces = rx.getProvince();//获取省份
- request.setAttribute("provinces", provinces);//放入request中
- return mapping.findForward("success");
- }
- }
先通过此Action,然后再显示首页,这样省的下拉框里就有值了.
我先把Struts-Config.XML文件贴出来
xml 代码
- <form-beans>
- <form-bean name="selectForm" type="com.selectdemo.struts.form.SelectForm" />
- form-beans>
- <action-mappings>
- <!---->
- <action path="/getProvince" type="com.selectdemo.struts.action.GetProvinceAction">
- <forward name="success" path="/select.jsp"/>
- action>
- <!---->
- <action path="/select" scope="request" input="/select.jsp" name="selectForm"
- type="com.selectdemo.struts.action.SelectAction">
- <forward name="success" path="/getProvince.do" />
- action>
然后是显示的JSP页面
xml 代码
- <%@ page language="java" pageEncoding="UTF-8"%>
- <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
- <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
- <%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic"%>
- <html:html>
- <head>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <title>Insert title heretitle>
- head>
- <script type="text/javascript">
- var xmlHttp;
- // 创建xmlHttp;
- function createXMLHttpRequest(){
- if(window.ActiveXObject){
- xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
- }else if(window.XMLHttpRequest){
- xmlHttp = new XMLHttpRequest();
- }
- }
- // 删除城市选项
- function clearCityList(){
- var citys = document.getElementById("city");
- while(citys.childNodes.length > 0){
- citys.removeChild(citys.childNodes[0]);
- }
- }
- //选项省份时
- function selectProvince(){
- var province = document.getElementById("province").value;//获取省份值
- if(province == ""){ //如果为空,则清空城市选项
- clearCityList();
- var citySelect = document.getElementById("city"); //获取城市select组件
- var option = document.createElement("option");
- option.appendChild(document.createTextNode("请选择城市"));
- citySelect.appendChild(option);
- return ; //返回
- }
- //服务器处理地址,是一个Servlet
- var url = "http://localhost:8080/SelelctDemo/servlet/Linkage?province=" + encodeURIComponent(province) + "&ts=" + new Date().getTime();
- createXMLHttpRequest();//创建xmlHttp对象;
- xmlHttp.onreadystatechange = handleStateChange; //回调函数
- xmlHttp.open("GET",url,true);
- xmlHttp.send(null);
- }
- //回调函数
- function handleStateChange(){
- if(xmlHttp.readyState == 4){
- if(xmlHttp.status == 200){
- updateCitysList();
- }
- }
- }
- //页面更新城市集合函数
- function updateCitysList(){
- clearCityList();//首先删除先前的城市选项
- var citySelect = document.getElementById("city"); //获取城市select组件
- var results = xmlHttp.responseXML.getElementsByTagName("city");//获取Ajax返回的结果,city为返回的XML里的节点
- var option = null;
- for(var i=0; i<results.length; i++){
- option = document.createElement("option");
- option.appendChild(document.createTextNode(results[i].firstChild.nodeValue));
- citySelect.appendChild(option);
- }
- }
- script>
- <body>
- <html:form action="/select" method="post">
- <logic:present name="provinces" scope="request">
- <html:select property="province" styleId="province" onchange="selectProvince();">
- <html:option value="">请选择省份html:option>
- <html:options name="provinces" labelName="provinces" />
- html:select>
- <html:select property="city" styleId="city" style="width:90px">
- <html:option value="">请选择城市html:option>
- html:select>
- logic:present>
- <html:submit>html:submit>
- html:form>
- <br/>省份:
- <logic:present name="province" scope="request">
- <bean:write name="province" scope="request"/>
- logic:present>
- <br/>城市:
- <logic:present name="city" scope="request">
- <bean:write name="city" scope="request"/>
- logic:present>
- body>
- html:html>
下面是按处理Ajax的Servlet
java 代码
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.util.List;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.jdom.JDOMException;
- import com.selectdemo.tool.ReadXml;
- public class Linkage extends HttpServlet {
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- response.setContentType("text/html;charset=UTF-8");
- String province = request.getParameter("province"); //获取参数中的值
- System.out.println(province);
- ReadXml rx;
- List citys = null;
- try {
- rx = new ReadXml();
- citys = rx.getCity(province);
- } catch (JDOMException e) {
- e.printStackTrace();
- }
- System.out.println(citys.size());
- //组装城市选项
- StringBuffer results = new StringBuffer("<citys>");
- for(int i=0; i<citys.size(); i++){
- results.append("<city>");
- results.append(citys.get(i));
- results.append("</city>");
- }
- results.append("</citys>");
- response.setContentType("text/xml;");
- PrintWriter pw = response.getWriter();
- System.out.println(results.toString());
- pw.print(results.toString());
- pw.flush();
- pw.close();
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- doGet(request, response);
- }
- }
Servlet处理完后,返回到JSP页面,会传给JSP页面一个XML文档,以字符串的形式传过去的,JSP页面解析这个String,从而增加城市选项的下拉列表
点击submit后,用一个Action接收,看值传进来没有
java 代码
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.struts.action.Action;
- import org.apache.struts.action.ActionForm;
- import org.apache.struts.action.ActionForward;
- import org.apache.struts.action.ActionMapping;
- import com.selectdemo.struts.form.SelectForm;
- public class SelectAction extends Action {
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response) {
- response.setContentType("text/html;charset=UTF-8");
- SelectForm sf = (SelectForm)form;
- String province = sf.getProvince();
- System.out.println(province);
- String city = sf.getCity();
- System.out.println(city);
- request.setAttribute("province", province);
- request.setAttribute("city", city);
- return mapping.findForward("success");
- }
- }
这里,你会发现,传进来的值会是乱码,解决乱码我写了一个MyActionServlet
java 代码
- import org.apache.struts.action.ActionServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class MyActionServlet extends org.apache.struts.action.ActionServlet
- {
- protected void process(HttpServletRequest request, HttpServletResponse response)
- throws java.io.IOException, javax.servlet.ServletException
- {
- request.setCharacterEncoding("UTF-8");
- super.process(request, response);
- }
- }
好了,到这里后,就大功告成了.
评论
7 楼
ice123456
2008-04-01
引用
for(int i=0; i
Element provinceElement = (Element)provincetemplist.get(i);
if((provinceElement.getAttributeValue("name")).equals(province)){//如果属性为传进来的名称
List cityTempList = provinceElement.getChildren();//获取子节点集合
for(int j=0; j//循环
Element cityElement = (Element)cityTempList.get(j);//当前城市节点
cityList.add(cityElement.getTextTrim());//增加城市到集合
}
}
}
Element provinceElement = (Element)provincetemplist.get(i);
if((provinceElement.getAttributeValue("name")).equals(province)){//如果属性为传进来的名称
List cityTempList = provinceElement.getChildren();//获取子节点集合
for(int j=0; j//循环
Element cityElement = (Element)cityTempList.get(j);//当前城市节点
cityList.add(cityElement.getTextTrim());//增加城市到集合
}
}
}
如果你第一个值就查找出来,这不是在浪费资源???
直接用js读,不是更快??
6 楼
kellersoon
2008-04-01
少web.xml servlet用改後的 MyActionServlet
不錯!學習啦
不過我覺得沒必要用struts
個人看法
不錯!學習啦
不過我覺得沒必要用struts
個人看法
5 楼
迷失的人
2008-04-01
还有提醒一下楼主,请将js代码封装成类的形式吧,这样对人对自己都有好出的。
4 楼
迷失的人
2008-04-01
我想问问,有必要用到struts吗?直接用AJAX还不行,你这个只是双组合,如果是三组合、四组合呢,还用struts吗?直接用AJAX吧,将你的xml文件加载到客户端处理就行了。这只是我个人认为而已。
3 楼
zhanghengfirst
2008-03-30
没贴全吧,,
2 楼
laowang_27hotmail.com
2007-08-06
你确定把整个都贴出来了?
1 楼
lightround
2007-08-05
To:zhanghaidang
看了你的代码,能不能交流一下,我目前在用Ajax,想体验一下Ajax的好处,请不吝赐教
谢谢
看了你的代码,能不能交流一下,我目前在用Ajax,想体验一下Ajax的好处,请不吝赐教
谢谢
发表评论
-
JS数字键盘
2011-08-02 15:35 2982现在需要一个只是数字的软键盘,呵呵,自己花了几个小时,搞出来了 ... -
深度遍历目录
2011-06-23 10:58 939有一年多没有搞Java了,一直在搞数据库与JS,今天突然要写一 ... -
关于一个多线程的码表问题
2009-10-18 23:00 874import java.awt.BorderLayou ... -
SWING简易计算器
2009-03-31 10:44 1229import java.awt.BorderLayout; i ... -
请帮忙看一下这个String的问题.
2008-06-27 21:44 854String str1 = "abc"; ... -
Java经典面试题
2008-06-24 12:15 2081l JBS 1.列举出 10个JAVA语言的优势 a ... -
Cannot convert value '0000-00-00"的解决方案
2008-06-19 20:13 2033MySQL数据库,如果数据库中Date字段为空为值为'0000 ... -
关于多附件上传的问题
2008-04-23 11:20 1481现在做一个邮件系统,需要实现126邮箱似的多附件上传,截图 ... -
JQuery传中文参数解决办法
2007-12-24 14:40 3437$(document).ready(function(){ ...
相关推荐
ztsc_109339.apk
永磁同步电机的高频正弦电压注入的速度观测,Simulink,PMSM,高频正弦。
智慧燃气发展研究报告
如何通过智能卡读写器SDK接入鸿蒙操作系统?通过智能卡读写器提供的SDK范例可以将智能卡读写器接入在运行鸿蒙操作系统的智能终端设备上。
谭浩强编写的《C程序设计(第五版)》PPT、书中源码、习题答案以及习题库
人力资源+大数据+薪酬报告+涨薪调薪,在学习、工作生活中,越来越多的事务都会使用到报告,通常情况下,报告的内容含量大、篇幅较长。那么什么样的薪酬报告才是有效的呢?以下是小编精心整理的调薪申请报告,欢迎大家分享。相信老板看到这样的报告,一定会考虑涨薪的哦。
分布式驱动汽车稳定性控制。 采用分层式直接横摆力矩控制,上层滑模控制,下层基于轮胎滑移率最优分配。 滑模控制跟踪横摆角速度和质心侧偏角误差。 七自由度整车模型输出实际质心侧偏角和横摆角速度,二自由度模型输出理想质心侧偏角和横摆角速度。 附m文件,有参考文献和说明文档
注意:此文档为最终版本,方便大家记录,但更新主要还是在博客更新
汇川.H5U框架程序,汇川TIT700系列触摸屏框架程序 1.汇川H5U-A8系列cpu 自制封装多个FB功能块程序,轴控制功能块,气缸动作报警功能块,XY矩阵功能块,等等。 只需写动作步序,其他全部调用FB 和HMI可以无实物仿真 仿真HMI地址127.0.0.1 A1349.H5U原框架
学生作业-作业打卡盖章。该项目为html前端项目,依据学生作业提交情况,通过点击名字进行打卡盖章。涉及html、js、css,其中js中涉及监听函数;窗口中的列表数据来源于data.jso,可自行修改
Spring面试专题.pdf
2025年蓝色简约时尚婚礼邀请函模板
深层过滤纸板是一种由纤维素材料制成的平板或薄片,具有过滤液体或气体的能力。它通常由纤维素纤维(如木浆)经过湿法造纸工艺制成,形成一张薄而均匀的纸板。深层过滤纸板设计用于过滤任何类型的液体,包括葡萄酒、油、啤酒和果汁等,广泛应用于食品饮料、制药、化工等领域。 随着酿酒行业和饮料行业的不断壮大,对深层过滤纸板的需求也在增加。深层过滤纸板常用于过滤液体中的杂质和固体颗粒,确保产品的质量和纯度。因此,这些行业的发展推动了过滤纸板的需求。为了满足酿酒行业和饮料行业对过滤效果、速度和成本的不断追求,深层过滤纸板制造商进行了技术创新和改进。他们不断改良过滤纸板的材料、结构和制造工艺,以提高其过滤效率和性能,同时降低生产成本。环保意识的提升推动了过滤纸板行业朝着绿色、可持续发展的方向发展。包括可降解材料的应用,再生纤维的使用以及生产过程的绿色化都是行业发展的趋势。 目前在全球范围内,工业化的发展仍处于高速阶段,企业在生产过程中要求更高的过滤处理标准,从而促进了深层过滤纸板行业的发展。随着生物技术产业的发展,越来越多的实验室需要使用过滤纸板进行细胞和菌群的分离,同时也需要更高精度的滤料来处理许多疾病的检
该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:HTML + Vue.js 后端框架:Spring Boot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
easy-interceptor修改请求头和响应头.zip
代码复现;冷热电气多门互补的微能源网鲁棒优化调度MATLAB复现 随着能源结构调整,集成风/光等可再生能源输入、冷热电气等多种能源互补输出的微能源网得到了逐步发展,如何协调调度微能源网内冷热电气源网荷成为当前研究热点。 建立了冷热电气多能互补的微能源网在孤岛/并网模式下的协调调度模型,并利用供热/供冷系统的热惯性和热/冷负荷的柔性,发挥供热/供冷系统的“储能”功能,以电转气(P2G)装置实现电—气网络双向互通。 模型采用鲁棒线性优化理论将随机优化模型进行确定性转化,取得经济性和鲁棒性的适当折中。 算例仿真验证了温度负荷储能特性对微能源网灵活调度的优化作用和鲁棒性指标对优化结果的协 调作用。 关键词:微能源网;多能互补;温度负荷;储能特性;鲁棒优化
三电平T型变器双闭环PI控制-调制实现在60度坐标系 变器 减少了普通SVPWM的矢量计算时间,在60度坐标系完成高效计算,控制效果很好。 可以发参考资料
该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:HTML + Vue.js 后端框架:Spring Boot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
箱线图(Box Plot)是一种用于展示数据分布的图形工具,能够有效地显示数据的集中趋势和离散程度。以下是箱线图的主要特点和组成部分: 主要特点 数据分布:箱线图可以清晰地展示数据的中位数、四分位数和潜在的异常值。 多组比较:可以将多组数据在同一张图中进行可视化,便于比较不同组之间的差异。 易于理解:由于其结构清晰,读取和理解相对简单。 使用场景 数据分析:用于探讨数据的分布和变化,识别异常值。 统计总结:在数据报告和研究中,用于直观表达数据特征。
ChromeDriver 是一个用于自动化 Chrome 浏览器的工具,它是由 Selenium WebDriver 提供支持的。在测试领域,尤其是Web应用程序的自动化测试中,ChromeDriver扮演着至关重要的角色。标题"chromedriver version 118.0.5993.70"表明这是 ChromeDriver 的一个特定版本,版本号为118.0.5993.70,通常这样的更新会带来性能优化、新功能以及对Chrome浏览器新版本的支持。 描述中的“chromedriver测试版本”意味着这可能是一个用于测试目的的构建,可能包含了最新的改进或者尚未广泛发布的特性。开发者和测试工程师会使用这样的测试版本来确保他们的自动化测试脚本能够兼容即将推出的 ChromeDriver 正式版本。 标签“测试 chromedriver”进一步强调了该软件在测试环境中的应用,特别是与 Chrome 浏览器的自动化测试相关的场景。ChromeDriver 允许测试人员通过编写 Selen。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。