Java Web開(kāi)發(fā)之信息查詢(xún)方式總結(jié)
本文實(shí)例講述了Java Web開(kāi)發(fā)之信息查詢(xún)方式總結(jié)。分享給大家供大家參考。具體如下:
這里介紹的查詢(xún)方式有:
① 根據(jù)某個(gè)特定的字段查詢(xún);
② 在多個(gè)字段中查詢(xún);
③ 根據(jù)任意字段查詢(xún);
④ 任意字段組合查詢(xún);
⑤ 多值查詢(xún)。
根據(jù)某個(gè)特定的字段進(jìn)行查詢(xún)
用戶(hù)在輸入界面中輸入要查詢(xún)的字段的值,然后系統(tǒng)根據(jù)這個(gè)值進(jìn)行查找。
下面的實(shí)例是根據(jù)用戶(hù)名查詢(xún)用戶(hù)的詳細(xì)信息,簡(jiǎn)單的效果圖如下:

關(guān)鍵代碼如下:
<p>請(qǐng)輸入要查詢(xún)的姓名:</p> <form action="select.jsp" method="POST"> <p><input type="text" name="username" size="20"><input type="submit" value="提交" name="B1"><input type="reset" value="全部重寫(xiě)" name="B2"></p> </form>
處理文件的代碼如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%
StringBuffer sql=new StringBuffer();
//查詢(xún)字符串
String username = request.getParameter("username");
//查詢(xún)的條件
if(username==null||username.length()==0)
{
out.println("請(qǐng)輸入查詢(xún)條件!");
}
else
{
sql.append("select * from user where username like '");
sql.append(username);
sql.append("'");
}
//接下來(lái)根據(jù)上面生成的sql進(jìn)行查詢(xún)即可
%>
這里主要關(guān)心SQL語(yǔ)句即可,查詢(xún)過(guò)程和顯示過(guò)程參考其它主題。
上面進(jìn)行的是精確的查詢(xún),可以進(jìn)行模糊查詢(xún),例如可以查詢(xún)用戶(hù)名包含某個(gè)字的用戶(hù)的信息。
只需要修改代碼中的查詢(xún)語(yǔ)句部分,修改后的代碼如下:
sql.append("select * from user where username like '%");
sql.append(username);
sql.append("%'");
僅僅增加了模糊查詢(xún)的通配符“%”,如果要查詢(xún)以什么開(kāi)頭,去掉前面的通配符即可,如果查詢(xún)以什么結(jié)束,去掉后面的同配符即可。
在多個(gè)字段中查詢(xún)
假設(shè)有一個(gè)關(guān)于Java技術(shù)的BBS,每個(gè)記錄都有標(biāo)題、摘要、內(nèi)容等字段,這里我們忽略其它字段,如果用戶(hù)希望查看關(guān)于編碼的問(wèn)題,他希望不管是在標(biāo)題、摘要還是內(nèi)容中只要包含他輸入的信息都應(yīng)該能夠查詢(xún)出來(lái),這時(shí)候就需要在多個(gè)字段中查詢(xún)。
關(guān)鍵代碼如下:
<p>請(qǐng)輸入要查詢(xún)的關(guān)鍵字:</p> <form action="select.jsp" method="POST"> <p><input type="text" name="condition" size="20"><input type="submit" value="提交" name="B1"><input type="reset" value="全部重寫(xiě)" name="B2"></p> </form>
查詢(xún)的處理代碼如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%
StringBuffer sql=new StringBuffer();
//查詢(xún)字符串
String condition =request.getParameter("condition");
//查詢(xún)的條件
if(condition==null||condition.length()==0)
{
out.println("請(qǐng)輸入查詢(xún)條件!");
}
else
{
sql.append("select * from user where title like '%");
sql.append(condition);
sql.append("%' and summary like '%");
sql.append(condition);
sql.append("%' and detail like '%");
sql.append(condition);
sql.append("%'");
}
//接下來(lái)根據(jù)上面生成的sql進(jìn)行查詢(xún)即可
%>
根據(jù)任意字段查詢(xún)
可以讓用戶(hù)選擇根據(jù)什么進(jìn)行查詢(xún),然后輸入要查詢(xún)的值,這樣的查詢(xún)比較復(fù)雜,但是對(duì)于用戶(hù)來(lái)說(shuō)最方便。
處理文件:
<%@ page contentType="text/html;charset=gb2312"%>
<%
StringBuffer sql=new StringBuffer();
//查詢(xún)字符串
String condition = request.getParameter("condition");
//查詢(xún)的字段
String v = request.getParameter("v");
//查詢(xún)的值
if(v.length()==0)
{
out.println("請(qǐng)輸入查詢(xún)條件!");
}
else
{
sql.append("select * from user where ");
//根據(jù)用戶(hù)選擇的字段進(jìn)行處理
if(condition.equals("a"))
sql.append(" a like '");
else if(condition.equals("b"))
sql.append(" b like '");
else
sql.append(" c like '");
sql.append(v);
sql.append("'");
/*
如果界面中下拉列表中的條件是數(shù)據(jù)庫(kù)中字段的名字,上面的代碼會(huì)非常簡(jiǎn)單:
sql.append("select * from user where ");
sql.append(condition);
sql.append(" like '");
sql.append(v);
sql.append("'");
*/
}
//接下來(lái)根據(jù)上面生成的sql進(jìn)行查詢(xún)即可
%>
任意組合查詢(xún)
把所以可以查詢(xún)的字段全部列出來(lái),每個(gè)字段對(duì)應(yīng)一個(gè)輸入框,用戶(hù)可以根據(jù)某個(gè)字段或者某幾個(gè)字段進(jìn)行查詢(xún),需要根據(jù)什么查詢(xún),在相應(yīng)的輸入框中輸入信息即可。
查詢(xún)的處理文件:
<%@ page contentType="text/html;charset=gb2312"%>
<%
StringBuffer sql=new StringBuffer();
//查詢(xún)字符串
String a = request.getParameter("a");
String b = request.getParameter("b");
String c = request.getParameter("c");
String d = request.getParameter("d");
//獲取用戶(hù)輸入的查詢(xún)條件
sql.append("select * from user where");
if(a.length()!=0)
{
sql.append(" a like '");
sql.append(a);
sql.append("' and");
}
if(b.length()!=0)
{
sql.append(" b like '");
sql.append(b);
sql.append("' and");
}
if(c.length()!=0)
{
sql.append(" c like '");
sql.append(c);
sql.append("' and");
}
if(d.length()!=0)
{
sql.append(" d like '");
sql.append(d);
sql.append("' and");
}
sql.trim(sql.length-3,3);
//刪除最后的4個(gè)字母(" and")
//接下來(lái)根據(jù)上面生成的sql進(jìn)行查詢(xún)即可
%>
多值查詢(xún)
用戶(hù)在單個(gè)輸入框輸入多個(gè)數(shù)據(jù)進(jìn)行查詢(xún),可以查詢(xún)某個(gè)字段同時(shí)包含多個(gè)關(guān)鍵字,例如查詢(xún)主題中既包含“java”又包含“C++”的記錄,或者一個(gè)數(shù)字區(qū)間,例如年齡在19和22之間的記錄,或者一個(gè)時(shí)間范圍,例如出生在1981年1月1日和1983年12月31日之間的記錄。
這里只介紹按照數(shù)字區(qū)間進(jìn)行查找的,其它情況的實(shí)現(xiàn)基本相同。
處理文件:
<%@ page contentType="text/html;charset=gb2312"%>
<%
StringBuffer sql=new StringBuffer();
//查詢(xún)字符串
String condition = request.getParameter("condition");
//獲取查詢(xún)條件
int index = condition.indexof(" ");
//查找空格位置,空格作為兩個(gè)數(shù)字的分隔符
String min=condition.subString(1,index);
//前面的值
String max=condition.subString(index+1,condition.length-1);
//后面的值
try
{
Integer.parseInt(min);
Integer.parseInt(max);
}catch(Exception e)
{
out.println("輸入的信息不合法!");
return;
}
sql.append("select * from user where age between ");
sql.append(min);
sql.append(" and ");
sql.append(max);
//構(gòu)造查詢(xún)字符串
//接下來(lái)根據(jù)上面生成的sql進(jìn)行查詢(xún)即可
%>
希望本文所述對(duì)大家的JSP程序設(shè)計(jì)有所幫助。
相關(guān)文章
jsp 判斷l(xiāng)ist是否包含string的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇jsp 判斷l(xiāng)ist是否包含string的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
jsp倒計(jì)時(shí)簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了jsp倒計(jì)時(shí)簡(jiǎn)單實(shí)現(xiàn)方法,涉及Java時(shí)間運(yùn)算與顯示的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
java AJAX實(shí)現(xiàn)級(jí)聯(lián)下拉框
AJAX實(shí)現(xiàn)級(jí)聯(lián)下拉框 需要的JAVA類(lèi),大家可以學(xué)習(xí)下2008-09-09
解決request.getParameter取值后的if判斷為NULL的問(wèn)題
這篇文章主要介紹了解決request.getParameter取值后的if判斷為NULL的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
jsp實(shí)現(xiàn)登錄驗(yàn)證的過(guò)濾器
這篇文章主要為大家詳細(xì)介紹了jsp實(shí)現(xiàn)登錄驗(yàn)證的過(guò)濾器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
搭建SSH時(shí)的思考和遇到的幾個(gè)問(wèn)題的解決方法
搭建SSH時(shí)的思考和遇到的幾個(gè)問(wèn)題的解決方法...2007-12-12

