当前位置:   article > 正文

Java Web快速入门(模糊查询&评论&include指令)_web sql 模糊查询

web sql 模糊查询

各位看官好,今天我带来的是JSP项目如何使用下拉框+文本框实现模糊查询,发表评论以及include指令。

目录

一、模糊查询

a、破碎重组

二、发表评论

a、隐藏域传值

三、include指令

a、include包含指令的作用

b、步骤:

c、运用 


一、模糊查询

SQL代码:

  select nid,ntitle,nauthor from 表名 where 列名 like '%关键字%' order by nid desc

用下拉框+文本框实现模糊查询

下拉框+文本框代码:

  1. <form action="/s4/news/admin.jsp" method="post">
  2. <select name="option"><!-- 下拉框 -->
  3. <option value="ntitle">标题</option>
  4. <option value="nauthor">作者</option>
  5. </select>
  6. <!-- 关键字: -->
  7. <input type="text" name="title"/>
  8. <input type="submit" value="查询" />
  9. </form>

查询语句:

  1. <%
  2. //接收title option
  3. String option=request.getParameter("option");
  4. String title=request.getParameter("title");
  5. if(title==null){
  6. title="";//相当于查询全部
  7. option="ntitle";
  8. }
  9. //破碎重组
  10. title=new String(title.getBytes("iso-8859-1"),"utf-8");
  11. //jdbc连接Oracle查询所有新闻 :id 新闻标题 作者
  12. String CNAME="oracle.jdbc.driver.OracleDriver";
  13. String URL="jdbc:oracle:thin:@localhost:1521:orcl";
  14. //加载驱动
  15. Class.forName(CNAME);
  16. //创建链接
  17. Connection con=DriverManager.getConnection(URL, "scott", "tiger");
  18. //定义sql语句
  19. String sql="select nid,ntitle,nauthor from news280 where "+option+" like '%"+title+"%' order by nid desc";
  20. //out.print(sql);
  21. //获得执行对象
  22. PreparedStatement ps=con.prepareStatement(sql);
  23. //获得结果集
  24. ResultSet rs=ps.executeQuery();
  25. //循环遍历
  26. while(rs.next()){
  27. %>
  28. <li><a href='/s4/news/read.jsp?nid=<%=rs.getInt(1) %>'><%=rs.getString(2) %></a>
  29. <span> 作者:<%=rs.getString(3) %>&#160;&#160;&#160;&#160;
  30. <a href='/s4/news/update.jsp?nid=<%=rs.getInt(1)%>'>修改</a> &#160;&#160;&#160;&#160;
  31. <a href='/s4/news/dodelete.jsp?nid=<%=rs.getInt(1) %>' onclick='return clickdel()'>删除</a>
  32. </span>
  33. </li>
  34. <%
  35. }
  36. //关闭资源
  37. if(con!=null&&!con.isClosed()){
  38. con.close();
  39. }
  40. if(ps!=null){
  41. ps.close();
  42. }
  43. if(rs!=null){
  44. rs.close();
  45. }
  46. %>

a、破碎重组

new String(title.getBytes("编码方式"),"编码方式");


二、发表评论

我们需要在上篇文章中的阅读页面实现用户评论的功能。

思路:将评论的内容添加到数据库中,然后再从数据库里将评论的内容展示到页面中。

a、隐藏域传值

<!-- 隐藏域传值  hidden隐藏-->

<input name="nid" type="hidden" value="<%=nid%>"/>

阅读界面:

  1. <div id="header">
  2. <div id="top_login">
  3. <label> 登录名 </label>
  4. <input type="text" id="uname" value="" class="login_input" />
  5. <label>&#160;&#160;</label>
  6. <input type="password" id="upwd" value="" class="login_input" />
  7. <input type="button" class="login_sub" value="登录" onclick="login()"/>
  8. <label id="error"> </label>
  9. <a href="/s4/index.jsp" class="login_link">返回首页</a> <img src="/s4/images/friend_logo.gif" alt="Google" id="friend_logo" /> </div>
  10. <div id="nav">
  11. <div id="logo"> <img src="/s4/images/logo.jpg" alt="新闻中国" /> </div>
  12. <div id="a_b01"> <img src="/s4/images/a_b01.gif" alt="" /> </div>
  13. <!--mainnav end-->
  14. </div>
  15. </div>
  16. <div id="container">
  17. <div class="sidebar">
  18. <div id="opt_list">
  19. <ul>
  20. <li><a href="/s4/news/add.jsp">添加新闻</a></li>
  21. <li><a href="/s4/news/update.jsp">编辑新闻</a></li>
  22. <li><a href="/s4/news/admin.jsp">查找新闻</a></li>
  23. <li><a href="/s4/news/add.jsp">添加主题</a></li>
  24. <li><a href="/s4news/news_login.jsp">编辑主题</a></li>
  25. </ul>
  26. </div>
  27. <h1> <img src="/s4/images/title_1.gif" alt="国内新闻" /> </h1>
  28. <div class="side_list">
  29. <ul>
  30. <li> <a href='#'><b> 重庆涉黑富豪黎强夫妇庭审答辩言辞相互矛盾 </b></a> </li>
  31. <li> <a href='#'><b> 发改委:4万亿投资计划不会挤占民间投资空间 </b></a> </li>
  32. <li> <a href='#'><b> 河南2个乡镇政绩报告内容完全一致引关注 </b></a> </li>
  33. </ul>
  34. </div>
  35. <h1> <img src="/s4/images/title_2.gif" alt="国际新闻" /> </h1>
  36. <div class="side_list">
  37. <ul>
  38. <li> <a href='#'><b> 日本首相鸠山首次全面阐述新政府外交政策 </b></a> </li>
  39. <li> <a href='#'><b> 黎巴嫩以色列再次交火互射炮弹 </b></a> </li>
  40. <li> <a href='#'><b> 伊朗将于30日前就核燃料供应方案作出答复 </b></a> </li>
  41. <li> <a href='#'><b> 与基地有关组织宣称对巴格达连环爆炸负责 </b></a> </li>
  42. </ul>
  43. </div>
  44. <h1> <img src="/s4/images/title_3.gif" alt="娱乐新闻" /> </h1>
  45. <div class="side_list">
  46. <ul>
  47. <li> <a href='#'><b> 施瓦辛格启动影视业回迁计划 推进加州经济复苏 </b></a> </li>
  48. <li> <a href='#'><b> 《沧海》导演回应观众质疑 自信能超越《亮剑》 </b></a> </li>
  49. <li> <a href='#'><b> 《海角七号》导演新片开机 吴宇森等出席 </b></a> </li>
  50. <li> <a href='#'><b> 《四大名捕》敦煌热拍 八主演飙戏火花四溅 </b></a> </li>
  51. </ul>
  52. </div>
  53. </div>
  54. <div class="main">
  55. <div class="class_type"> <img src="/s4/images/class_type.gif" alt="新闻中心" /> </div>
  56. <div class="content">
  57. <ul class="classlist">
  58. <table width="80%" align="center">
  59. <tr width="100%">
  60. <td colspan="2" align="center"><%=title %></td>
  61. </tr>
  62. <tr>
  63. <td colspan="2"><hr />
  64. </td>
  65. </tr>
  66. <tr>
  67. <td align="center"><%=addtime %></td>
  68. <td align="left"><%=author%>&nbsp;&nbsp;&nbsp; 点击量:<%=count %> </td>
  69. </tr>
  70. <tr>
  71. <td colspan="2" align="center"></td>
  72. </tr>
  73. <tr>
  74. <td colspan="2"> <%=content %></td>
  75. </tr>
  76. <tr>
  77. <td colspan="2"><hr />
  78. </td>
  79. </tr>
  80. </table>
  81. </ul>
  82. <ul class="classlist">
  83. <table width="80%" align="center">
  84. <td colspan="6">
  85. <%
  86. while(rs.next()){
  87. %>
  88. </td>
  89. <ul>
  90. <li>评论内容:<%=rs.getString(5)%> </li>
  91. <li>评论人:<%=rs.getString(3) %>&nbsp;&nbsp; 评论时间:<%=rs.getString(6)%>&nbsp;&nbsp;
  92. <a href="dodelpl.jsp?pid=<%=rs.getInt(1)%>&nid=<%=nid %>" onclick='return clickdel()'>删除</a></li>
  93. </ul>
  94. <%
  95. }
  96. }
  97. //关闭资源
  98. if(con!=null&&!con.isClosed()){
  99. con.close();
  100. }
  101. if(ps!=null){
  102. ps.close();
  103. }
  104. if(rs!=null){
  105. rs.close();
  106. }
  107. %>
  108. <tr>
  109. <td colspan="6"><hr />
  110. </td>
  111. </tr>
  112. </table>
  113. </ul>
  114. <ul class="classlist">
  115. <form action="dopl.jsp" method="post" onsubmit="return check()">
  116. <table width="80%" align="center">
  117. <tr>
  118. <td> 评 论 </td>
  119. </tr>
  120. <tr>
  121. <td> 用户名: </td>
  122. <td><input id="cauthor" name="cauthor" value="这家伙很懒什么也没留下"/>
  123. IP:
  124. <input name="cip" value="127.0.0.1" readonly="readonly"/>
  125. <!-- 隐藏域传值 -->
  126. <input name="nid" type="hidden" value="<%=nid%>"/>
  127. </td>
  128. </tr>
  129. <tr>
  130. <td colspan="2"><textarea id="ccontent" name="ccontent" cols="70" rows="10"></textarea>
  131. </td>
  132. </tr>
  133. <td><input name="submit" value="发 表" type="submit"/>
  134. </td>
  135. </table>
  136. </form>
  137. </ul>
  138. </div>
  139. </div>
  140. </div>

将评论的内容添加到数据库中

  1. <%
  2. request.setCharacterEncoding("utf-8");
  3. String nid=request.getParameter("nid");
  4. String cip=request.getParameter("cip");
  5. String cauthor =request.getParameter("cauthor");
  6. String nsummary=request.getParameter("nsummary");
  7. String ccontent=request.getParameter("ccontent");
  8. String caddtime=new Date().toLocaleString();//取系统当前时间
  9. /*主键:唯一且不为空
  10. 1.标识列:触发器+序列
  11. 2.取 表主键的最大序号+1
  12. */
  13. String URL="jdbc:oracle:thin:@localhost:1521:orcl";
  14. String CNAME="oracle.jdbc.driver.OracleDriver";
  15. Class.forName(CNAME);
  16. Connection con= DriverManager.getConnection(URL,"scott","tiger");
  17. //定义sql语句
  18. String sql="select nvl(max(pid),0)+1 from pl280";
  19. PreparedStatement ps=con.prepareStatement(sql);
  20. ResultSet rs=ps.executeQuery();
  21. int pid=0;//扩大作用域
  22. if(rs.next()){
  23. pid=rs.getInt(1)+1;//表的最大序号+1
  24. }
  25. //实现增加=插入操作
  26. sql="insert into pl280(pid,nid,pauthor,pip,pcontent,paddtime) values(?,?,?,?,?,?)";
  27. //执行sql语句
  28. ps=con.prepareStatement(sql);
  29. //给占位符赋值
  30. ps.setInt(1, pid);
  31. ps.setInt(2, Integer.parseInt(nid));//String-->int
  32. ps.setString(3, cauthor);
  33. ps.setString(4, cip);
  34. ps.setString(5, ccontent);
  35. ps.setString(6, caddtime);
  36. //获得影响行数
  37. int n=ps.executeUpdate();
  38. //关闭资源
  39. if(con!=null&&!con.isClosed()){
  40. con.close();
  41. }
  42. if(ps!=null){
  43. ps.close();
  44. }
  45. if(rs!=null){
  46. rs.close();
  47. }
  48. if(n>0){//说明评论成功
  49. //阅读主界面
  50. response.sendRedirect("/s4/news/read.jsp?nid="+nid+"");
  51. }
  52. else{//说明评论
  53. out.print("<script>alert('评论失败');location.href='read.jsp?nid="+nid+"';</script>");
  54. }
  55. %>

再从数据库中展示到界面中

  1. <%
  2. sql="select *from pl280 where nid="+nid+" order by pid desc ";//查询当前评论的内容
  3. ps=con.prepareStatement(sql);
  4. rs=ps.executeQuery();
  5. if(rs.next()==false){
  6. %>
  7. <div>暂无评论!</div></td>
  8. <%
  9. }
  10. else{
  11. while(rs.next()){
  12. %>
  13. </td>
  14. <ul>
  15. <li>评论内容:<%=rs.getString(5)%> </li>
  16. <li>评论人:<%=rs.getString(3) %>&nbsp;&nbsp; 评论时间:<%=rs.getString(6)%>&nbsp;&nbsp;
  17. <a href="dodelpl.jsp?pid=<%=rs.getInt(1)%>&nid=<%=nid %>" onclick='return clickdel()'>删除</a></li>
  18. </ul>
  19. <%
  20. }
  21. }
  22. //关闭资源
  23. if(con!=null&&!con.isClosed()){
  24. con.close();
  25. }
  26. if(ps!=null){
  27. ps.close();
  28. }
  29. if(rs!=null){
  30. rs.close();
  31. }
  32. %>

三、include指令

a、include包含指令的作用

减少多个页面重复的代码

b、步骤:

1、新建一个页面

2、将多个页面重复要用的代码copy到新的页面中

c、运用 

  1. <!-- include指令里面是不能用绝对路径的 -->
  2. <%@include file="页面名" %>

 OK,以上所有就是今日学习的所有内容了,我是小陽,欢迎个位看官能观看我的文章,如果有写的不好/不足的地方欢迎大家指出来,博主会做出改变,如对各位有所帮助,不介意各位留下免费的三连哦!

下章预告:session 会话&Cookie的运用

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/499123
推荐阅读
相关标签
  

闽ICP备14008679号