select的问题,急用,高手进来看看 现在有一个select和一个input,通过input里输入的值,来对数据库进行模糊或精确查询,在把数据库返回的值,在select里面显示 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <%@ page import="java.sql.*"%><input type="text" name="aaa"><select name="slt"><%DBTools dbt = new DBTools(); //这个类是用来连接数据库的,要自己写Connection con = null;Statement stmt = null;ResultSet rs = null;String sql = "";String str = request.getParameter("aaa");if(str!="") { sql = "select * from xxx where xx like '%" + str + "%'"; con = dbt.getConnection(); stmt = con.createStatement(); rs = stmt.excuteQuery(sql); while(rs.next()) {%> <option value=""><%=rs.getString(1)%></option> //value的值自己取,rs那里也自己改<% }}rs.close();stmt.close();con.close();%></select>基本如此,该加try-catch的地方自己加,需要自己写的地方自己写,上面只是一个例子 import ...;//导入相应的包public ExampleServlet extend HttpServlet{ public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{ String strValue = req.getParameter("value"); String[] strResultArr = null;//保存查询结果 ...//这是数据库查询的代码,应该不用我写了吧! response.setContentType("text/xml"); response.setCharacterEncoding("UTF-8");//如果中文乱码就换成GB2312 StringBuffer xmlObj = new StringBuffer(); xmlObj.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");//如果中文乱码就换成GB2312 if (strResultArr != null && strResultArr.length > 0){ xmlObj.append("<ROOT>"); for(int i = 0; i < strResultArr.length; i++){ xmlObj.append("<VALUE>" + strResultArr[i] + "</VALUE>"); } xmlObj.append("</ROOT>"); }else{ xmlObj.append("<ROOT/>"); } PrintWriter out = response.getWriter(); out.println(xmlObj.toString()); out.close(); }}<script lanaguage="javascript"> <!-- var xmlHttp; if (window.XMLHttpRequest){ xmlHttp = new window.XMLHttpRequest(); }else if (window.ActiveXObject){ xmlHttp = new windowActiveXObject("Microsoft.XMLHTTP"); } function search(value){ var url = "?value=" + value;//自己在url里加入地址 xmlHttp.open("GET", url, true); xmlHttp.onreadystateschange = callback; xmlHttp.send(null); } function callback(){ if (xmlHttp.readyStates == 4){ if (xmlHttp.status == 200){ buildSelect(); }else{ alert("异常原因:" + xmlHttp.statusText); } } } function buildSelect(){ var xmlObj = xmlHttp.responseXML; var root = xmlObj.documentElement;//得到xml对象的根结点 var item = document.getElementById("showResult"); if (root.childNodes.length > 0){ for(var i = 0; i < root.childNodes.length; i++){ var op = document.createElement("option"); var txt =document.createTextNode(root.childNodes[i].text); op.setAttribute("value", root.childNodes[i].text); item.appendChild(op); op.appendChild(txt); } } } //--></script><input type="text" id="val" onkeyup="search(this.value);"/><select id="showResult"></select> 这个问题在页面中用一个隐藏的Frame解决最好。显示页面不需要刷新,否则页面中如果有其他输入的话一刷新页面其他输入内容就被清空了。具体解决办法是:在当前页面中加入一个隐藏的Frame:<IFRAME id="autoSubmit" name="autoSubmit" style="DISPLAY:none;"></IFRAME>然后在input中添加一个onblur事件,当input中输入完某值后触发onblur事件,将当前页面提交到上面的Frame中的某个Jsp中,这个Jsp根据Input内容进行后台数据库的查询,然后用JavaScript对当前显示页面的Select进行动态赋值说明:用window.parent.document.getElementById("SelectId")可以获得当前显示页面的Select对象。 修正PrintWriter out = response.getWriter();应该是PrintWriter out = res.getWriter(); 楼主不厚道我是用AJAX写的,说什么技术也比较先进! lucene做的搜索,页面高亮不显示,什么问题? 关于weblogic+oracle的设置 登陆问题 <% if ( sex!=null) %>else怎么写? 高难度问题,各位大侠,帮帮忙 float型怎么转换成string类型?? 如何得到submit那个按钮的name??? 关于选用邮件服务器的问题 import 的问题 怎样用得到前页地址,不要用js 这个算法如何实现呢。关于请假的时间算法问题,请教各位。分数只有10分了啊。抱歉。 struts
<input type="text" name="aaa"><select name="slt">
<%
DBTools dbt = new DBTools(); //这个类是用来连接数据库的,要自己写
Connection con = null;
Statement stmt = null;
ResultSet rs = null;String sql = "";
String str = request.getParameter("aaa");
if(str!="") {
sql = "select * from xxx where xx like '%" + str + "%'"; con = dbt.getConnection();
stmt = con.createStatement();
rs = stmt.excuteQuery(sql); while(rs.next()) {
%>
<option value=""><%=rs.getString(1)%></option> //value的值自己取,rs那里也自己改
<%
}
}
rs.close();
stmt.close();
con.close();
%></select>
基本如此,该加try-catch的地方自己加,需要自己写的地方自己写,上面只是一个例子
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
String strValue = req.getParameter("value");
String[] strResultArr = null;//保存查询结果
...//这是数据库查询的代码,应该不用我写了吧!
response.setContentType("text/xml");
response.setCharacterEncoding("UTF-8");//如果中文乱码就换成GB2312
StringBuffer xmlObj = new StringBuffer();
xmlObj.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");//如果中文乱码就换成GB2312
if (strResultArr != null && strResultArr.length > 0){
xmlObj.append("<ROOT>");
for(int i = 0; i < strResultArr.length; i++){
xmlObj.append("<VALUE>" + strResultArr[i] + "</VALUE>");
}
xmlObj.append("</ROOT>");
}else{
xmlObj.append("<ROOT/>");
}
PrintWriter out = response.getWriter();
out.println(xmlObj.toString());
out.close();
}
}<script lanaguage="javascript">
<!--
var xmlHttp;
if (window.XMLHttpRequest){
xmlHttp = new window.XMLHttpRequest();
}else if (window.ActiveXObject){
xmlHttp = new windowActiveXObject("Microsoft.XMLHTTP");
}
function search(value){
var url = "?value=" + value;//自己在url里加入地址
xmlHttp.open("GET", url, true);
xmlHttp.onreadystateschange = callback;
xmlHttp.send(null);
}
function callback(){
if (xmlHttp.readyStates == 4){
if (xmlHttp.status == 200){
buildSelect();
}else{
alert("异常原因:" + xmlHttp.statusText);
}
}
}
function buildSelect(){
var xmlObj = xmlHttp.responseXML;
var root = xmlObj.documentElement;//得到xml对象的根结点
var item = document.getElementById("showResult");
if (root.childNodes.length > 0){
for(var i = 0; i < root.childNodes.length; i++){
var op = document.createElement("option");
var txt =document.createTextNode(root.childNodes[i].text);
op.setAttribute("value", root.childNodes[i].text);
item.appendChild(op);
op.appendChild(txt);
}
}
}
//-->
</script>
<input type="text" id="val" onkeyup="search(this.value);"/>
<select id="showResult"></select>
<IFRAME id="autoSubmit" name="autoSubmit" style="DISPLAY:none;"></IFRAME>
然后在input中添加一个onblur事件,当input中输入完某值后触发onblur事件,将当前页面提交到上面的Frame中的某个Jsp中,这个Jsp根据Input内容进行后台数据库的查询,然后用JavaScript对当前显示页面的Select进行动态赋值说明:用window.parent.document.getElementById("SelectId")可以获得当前显示页面的Select对象。
应该是PrintWriter out = res.getWriter();
我是用AJAX写的,说什么技术也比较先进!