逍遥一派 发表于 2015-1-16 22:48:58

ASP.NET网页编程之ASP.NET:多级下拉菜单的级连显现成绩

刚刚打开这篇专题,猛然见到HAL9000发表的《对于大型公司项目平台选择j2ee的几层认识》系列,深受启发。asp.net|菜单|成绩|下拉|显现多级下拉菜单的级连显现成绩。
在这里,我为了完成公司-部门级连显现成绩,我编写了leader_add_competence_dialogquery.jsp,web.xml,SelectCropDepartServlet.java类。
个中注重的是leader_add_competence_dialogquery中的.jspChange_Select()javascript函数中的/selectCropDepart是在web.xml中界说的servlet类。我们在完成使用傍边必要修正的用红字标出。
个中leader_add_competence_dialogquery.jsp代码以下:
<%@pagecontentType="text/html;charset=gbk"language="java"import="java.sql.*"errorPage=""%>
<%@pageimport="pub.*"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>增加向导权限</title>
<linkhref="../css/putong.css"type="text/css"rel="stylesheet">
<basetarget="_self">
<METAHTTP-EQUIV="Pragma"CONTENT="no-cache">
<METAHTTP-EQUIV="Cache-Control"CONTENT="no-cache">
<METAHTTP-EQUIV="Expires"CONTENT="0">
</head>
<scriptlanguage="javascript">
varreq;
window.onload=function(){
}
functionChange_Select(){
varzhi=document.getElementById(Corp).value;
varurl="../selectCropDepart?id="+escape(zhi);
//alert(url);
if(window.XMLHttpRequest){
req=newXMLHttpRequest();
}elseif(window.ActiveXObject){
req=newActiveXObject("Microsoft.XMLHTTP");
}
if(req){
req.open("GET",url,true);
req.onreadystatechange=callback;
req.send(null);
}
}

functioncallback(){
if(req.readyState==4){
if(req.status==200){
parseMessage();
//updatetheHTMLDOMbasedonwhetherornotmessageisvalid
}else{
alert("Notabletoretrievedescription"+req.status+req.statusText);
}
}
}

functionparseMessage(){
varxmlDoc=req.responseXML.documentElement;
varxSel=xmlDoc.getElementsByTagName(select);
varselect_root=document.getElementById(Depart);
select_root.options.length=0;
for(vari=0;i<xSel.length;i++)
{
varxValue=xSel.childNodes.firstChild.nodeValue;
varxText=xSel.childNodes.firstChild.nodeValue;
varoption=newOption(xText,xValue);
try
{
select_root.add(option);
}
catch(e){
}
}
}
functionAddLeaderCompetence(){
varkey=document.all.HiddenKey.value;document.from1.action="leader_ctl.jsp?Oper=addCompetence&Key="+key;
document.from1.submit();
}
</script>
<body>
<%
StringstrUserID=request.getParameter("Key");
session.setAttribute("EmployUserID",strUserID);
%>
<formname="from1"action="leader_ctl.jsp"method="post">
<tablecellSpacing="0"cellPadding="0"width="100%"bgColor="#bfcae6"border="0"background="../images/subtitle.gif">
<tr>
<tdwidth="99%"height="26"><FONTface="宋体">
<DIValign="left"><FONTface="宋体"color="#ffffff">以后地位:体系办理>>向导设置>>增加向导权限</FONT>
</DIV>
</FONT>
</td>
</tr>
</table>
<inputtype="hidden"name="HiddenKey"value="<%=strUserID%>">
<tablewidth="100%"border="0"cellpadding="2"cellspacing="1"bgcolor="#AABDE0">
<trbgcolor="#FFFFFF">
<tdalign="right">公司:</td>
<td>
<SELECTname="Corp"id="Corp">
<OPTIONvalue="all"selected>一切公司</OPTION></SELECT></td>
</tr>
<trbgcolor="#FFFFFF">
<tdalign="right">部门:</td>
<td><SELECTname="Depart"id="Depart">
<OPTIONvalue="all"selected>一切部门</OPTION></SELECT></td>
</tr>
<trbgcolor="#FFFFFF">
<tdcolspan="2"align="center"><inputtype="button"class="button"style="width:80px"value="保留"><inputtype="button"class="button"value="封闭"style="width:80px"></td>
</tr>
</table>
</form>
</body>
<%
Connconn=newConn();
Stringm1Script="";
//Stringm2Script="";
m1Script=PubClass.BindAllCorpList("document.all.Corp");
//m2Script=PubClass.BindAllDepartList("document.all.Depart",""+session.getAttribute("cropid"));
//sPositionList=conn.bindDropListSel("document.all.PositionName","select*fromsys08_Position","PositionName","PositionID");
%>
<%=m1Script%>
</html>
Web.xml代码以下:
<?xmlversion="1.0"encoding="UTF-8"?>
<web-appversion="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">
<servlet>
<servlet-name>selectCropDepart</servlet-name>
<servlet-class>pub.SelectCropDepartServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>selectCropDepart</servlet-name>
<url-pattern>/selectCropDepart</url-pattern>
</servlet-mapping>
</web-app>
SelectCropDepartServlet.javaServlet类代码以下
/**
*从sys04_Machine表中取数据举行二级下拉菜单(公司,部门)及联系关系的servlet类
*@author邓浩
*/
publicclassSelectCropDepartServletextendsHttpServlet{
publicSelectCropDepartServlet(){
super();
}
publicvoiddestroy(){
super.destroy();}
/**
*ThedoGetmethodoftheservlet.<br>
*
*Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.
*
*@paramrequesttherequestsendbytheclienttotheserver
*@paramresponsetheresponsesendbytheservertotheclient
*@throwsServletExceptionifanerroroccurred
*@throwsIOExceptionifanerroroccurred
*/
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/xml");
response.setCharacterEncoding("UTF-8");
response.setHeader("Cache-Control","no-cache");
StringtargetId=request.getParameter("id").toString();
Stringxml_start="<selects>";
Stringxml_end="</selects>";
Stringxml="";
try{
Connconn=newConn();
DataTabledt=newDataTable();
StringSql="select*fromsys04_Machinewherecropid="+targetId;
////System.out.println("Sql:"+Sql);
xml+="<select><value>all</value><text>一切部门</text></select>";
inti=0;
if(conn.querySql(Sql,dt)){
while(i<dt.getRowCount()){
xml+="<select><value>"+dt.getItemForName(i,"MachID").toString()+"</value><text>"+dt.getItemForName(i,"MachName").toString()+"</text></select>";
i=i+1;
}
}
Stringlast_xml=xml_start+xml+xml_end;
//System.out.println("last_xml:"+last_xml);
//last_xml=newString(last_xml.getBytes("UTF-8"),"GB2312");
response.getWriter().write(last_xml);
}//try
catch(Exceptione){
System.out.print(e.getMessage());
}
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
doGet(request,response);
}
publicvoidinit()throwsServletException{
}
}
其实Java之所以在曾经独步天下,就是因为他的跨平台、安全性,这两方面,效率可不是Java的强项,反而是他最短的一块挡板,虽然net总是用理论证明比.NET快。

兰色精灵 发表于 2015-1-17 15:02:23

目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.

愤怒的大鸟 发表于 2015-1-20 18:39:02

CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。

仓酷云 发表于 2015-1-29 14:40:46

ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。

柔情似水 发表于 2015-2-6 02:05:24

现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。

灵魂腐蚀 发表于 2015-2-14 23:44:14

可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。

因胸联盟 发表于 2015-3-4 10:46:51

大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。

飘灵儿 发表于 2015-3-11 18:23:58

比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。

莫相离 发表于 2015-3-19 07:10:39

JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。

精灵巫婆 发表于 2015-3-27 12:09:51

同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
页: [1]
查看完整版本: ASP.NET网页编程之ASP.NET:多级下拉菜单的级连显现成绩