Everybody晚上好!
今天小刘给大家带来的是javaWeb的模糊查询&评论&include指令
依旧是建立在前几期的基础上,我们给新闻添加了模糊查询的功能,以及对新闻的评论与include(包含)指令
一,模糊查询
我们在新闻主界面添加了查询框
代码展示:
<form action="/Web05/news/admin.jsp" method="post">
标题:<input type="text" name="title"/>
<input type="submit" value="查询" >
</form>
<ul class="classlist">
<%
//接收title
String title=request.getParameter("title");
if(title==null){
title="";//相当于查询全部
}
//破碎重组
title=new String(title.getBytes("iso-8859-1"),"utf-8");
//jdbcl连接oracle查询所有的新闻:id 标题 作者
String CNAME = "oracle.jdbc.driver.OracleDriver";
String URL="jdbc:oracle:thin:@localhost:1521:orcl";
//加载驱动
Class.forName(CNAME);
//创建连接
Connection con = DriverManager.getConnection(URL, "scott", "tiger");
//定义sql语句
String sql = "select nid,ntitle,nauthor from news280 where ntitle like '%"+title+"%' order by nid desc";
//获得执行对象
PreparedStatement ps = con.prepareStatement(sql);
//获得结果集
ResultSet rs = ps.executeQuery();
//循环遍历
while(rs.next()){
%>
<li><a href="/Web05/news/read.jsp?nid=<%=rs.getInt(1)%>"><%=rs.getString(2) %></a>
<span> 作者:<%=rs.getString(3) %>     
<a href='/Web05/news/update.jsp?nid=<%=rs.getInt(1)%>'>修改</a>     
<a href='/Web05/news/dodelete.jsp?nid=<%=rs.getInt(1) %>' onclick='return clickdel()'>删除</a>
</span>
</li>
<%
}
解析:我们只需要在前文中的body部分添加一个form表单,使用form表单中的submit提交内容
1.先获取到文本框中的值(title) 其中的破碎重组是为了防止中文乱码,先将字符拆分为字节再用utf-8重组,因电脑而异,可以尝试之前的 request.setCharacterEncoding("utf-8");
2.修改掉之前的sql语句,使用like’%%‘模糊查询将文本框中的值title传入其中,但是要判空,当文本框中为空时我们要将他赋值为空字符,据sql知识可值,当模糊查询的值为空字符时即代表搜索全部,否则当第一次打开页面时我们自动获取的值为null,即会出不来新闻效果
效果展示:
二,评论
在查看新闻的read.jsp页面中添加评论人与评论的内容
代码展示:
<ul class="classlist">
<table width="80%" align="center">
<tr width="100%">
<td colspan="2" align="center"><%=title %></td>
</tr>
<tr>
<td colspan="2"><hr />
</td>
</tr>
<tr>
<td align="center"><%=addtime %></td>
<td align="left"><%=author %> 点击量:<%=count%></td>
</tr>
<tr>
<td colspan="2" align="center"></td>
</tr>
<tr>
<td colspan="2"> <%=content %></td>
</tr>
<tr>
<td colspan="2"><hr />
</td>
</tr>
</table>
</ul>
<ul class="classlist">
<table width="80%" align="center">
<td colspan="6">
<%
sql="select * from pl280 where nid="+nid+" order by pid desc";
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
%>
<ul>
<li>评论内容:<%=rs.getString(5)%></li>
<li>评论人:<%=rs.getString(3)%> 评论时间:<%=rs.getString(6) %> <a href="dodelpl.jsp?pid=<%=rs.getString(1)%>&nid=<%=nid%>">删除</a></li>
</ul>
<br />
<%
}
//关闭资源
if(con!=null&&!con.isClosed()){
con.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
%>
</td>
<tr>
<td colspan="6"><hr />
</td>
</tr>
</table>
</ul>
<ul class="classlist">
<form action="dopl.jsp" method="post" onsubmit="return check()">
<table width="80%" align="center">
<tr>
<td> 用户名: </td>
<td><input id="cauthor" name="cauthor" value="这家伙很懒什么也没留下"/>
IP:
<input name="cip" value="127.0.0.1" readonly="readonly"/>
<!-- 隐藏域传值 -->
<input type="hidden" name="nid" value="<%=nid %>"/>
</td>
</tr>
<tr>
<td> 评 论 </td>
</tr>
<tr>
<td colspan="2"><textarea id="ccontent" name="ccontent" cols="70" rows="10"></textarea>
</td>
</tr>
<td><input name="submit" value="发 表" type="submit"/>
</td>
</table>
</form>
</ul>
解析:1.先获取from表单中的文本框中的值,点击提交按钮后会进行后台的插入
2.也就是跳转到dool.jsp页面中,在此界面中根据name值获取value值,再将value值插入数据库,与前期的添加新闻操作相同就不重复展示了,
3.紧接着插入成功后跳转到原来的阅读界面,将数据库中评论的数据赋值到相应的模块位置就实现了我们的评论功能
三,include(包含)指令
目的是减少我们的代码量(重复的代码),简而言之就是将重复代码移入一个新的jsp页面,然后在另一个页面来调用,细心的小伙伴应该发现了我们在多个页面都使用了连接数据库的操作,使用后期我们将使用include指令来进行重读的连接数据库的操作,今天我们用include指令来调用一些多个页面重复使用的样式。
此时我们把主界面的两个样式分开写入两个jsp页面,然后在主界面的底部调用,可以达到与之前一样的效果
调用:
OK,今日学习内容到此结束,各位猿友们学废了吗?还没有废的麻烦在评论区指出,小刘再细细的为你解决,下期内容:session&Cookie