用javaweb做的图书馆管理系统,如何用dao+servlet实现对图书进行查询的页面

用javaweb做的图书馆管理系统,如何用dao+servlet实现对图书进行查询的页面,第1张

页面请求servlet,servlet获取参数然后调用dao中的查询方法(链接数据库当然也在对应的dao中实现),sql只要写成模糊查询就好了 like '%书名%';
就是这样的一个过程,servlet配置,doGet、doPost,链接数据库的类都自己写吧。。

"select from article where title like "
preparedStatementsetString(0,"内容");//这里具体是1还是0忘了
_代表一个为任意字符
%代表多个任意字符
比如:_ei,将匹配像Aei,Bei,Cai类似的字符
这就是模糊查询了把!

/ 获得LDAP连接(不通过连接池,直接获得连接) @return @throws Exception / private javaxnamingdirectoryDirContext getDirContext() throws Exception { DirContext ctx = null; javautilHashtable env = new javautilHashtable(); envput(ContextINITIAL_CONTEXT_FACTORY, "comsunjndildapLdapCtxFactory"); envput(ContextPROVIDER_URL, "ldap://localhost:389"); envput(ContextSECURITY_AUTHENTICATION, "simple"); envput(ContextSECURITY_PRINCIPAL, user); envput(ContextSECURITY_CREDENTIALS, pwd); ctx = new InitialDirContext(env); return ctx; } / 返回用户查询接口 @param DN 查找范围 ou=test,dc=abcd,dc=com @param filter 过滤条件 cn= @param myserach 搜索范围 @return LDAP标准接口 @throws Exception / public javaxnamingNamingEnumeration getFilter(String DN,String filter,int myserach) throws Exception { DirContext ctx = getDirContext(); try { NamingEnumeration em; SearchControls con = new SearchControls(); consetSearchScope(myserach); em = ctxsearch(DN, filter, con); return em; } finally { // } } / 设置条件查找 @param dn 查找的根结点 @param filter 查找条件 @param level 查找范围 @return 返回一个由DN组成的JAVA STRING 列表 @throws Exception / public javautilVector getfilterNodes(String dn,String filter,int level) throws Exception { javautilVector ve=new javautilVector(); NamingEnumeration em=getFilter(dn,filter,level); while(em!=null && emhasMoreElements()) { SearchResult rs=(SearchResult)emnextElement(); String db=rsgetName(); if (dbtrim()equals("")) veadd(dn); else veadd(db+","+dn); } return ve; }

这问题很眼熟
也可以这样:
String sql="select from ARITCLE where type="+type+" and title like "++" and writer like "+writer+"";
改成
String sql="select from ARITCLE where type="+type+" and title like '%"++"%' and writer like '%"+writer+"'%";
如果writer 这些参数是用户输入而且不经过处理的话
拼接字符串生成查询语句,会使SQL注入攻击变得相当容易

用CONTAINS
将 sql+=" and aORDER_NAME = ";
改为 sql+=" and CONTAINS(aORDER_NAME, '%' || || '%') ";

LIKE 直接在数据库中查找可以查到所有所需数据,但是会扫描整个表,影响性能。
CONTAINS是基于全文索引进行查询,查询结果受全文索引分词的方法影响,查询结果会不全。

所以需要精确查询用LIKE,内容搜索用CONTAINS提高效率!
LZ自己决定。

其实数据库的这些基本语言都是一样的 给你个思路
可以做几个判断 如果 那个CheckBox 被选中 那么 获取它的值 如果没有被选中那么把他的值赋值为空 写SQL语句的时候 都用 LIKE! 用like '%%'


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13355638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-20
下一篇 2023-07-20

发表评论

登录后才能评论

评论列表(0条)

保存