当前位置: 代码迷 >> 综合 >> java_web 快速入门之第六章 评论管理首页数据绑定include指令 [新闻发布系统03]
  详细解决方案

java_web 快速入门之第六章 评论管理首页数据绑定include指令 [新闻发布系统03]

热度:69   发布时间:2023-12-05 09:26:52.0

一:根据标题查询信息

简要流程:

1.设置搜索框和查询按钮

2.编码设置

3.通过String类进行编码和解码(得到我们看得懂的中文)

4.通过jdbc操作实现搜索功能的实现

			<div style = "width:100%;height:40px;text-align: center;line-height:40px; "><form action = "admin.jsp" method = "post"><label>新闻标题</label><!-- autocomplete 关闭自动提示 --><input type = "text" name = "strName" autocomplete="off"/><input type = "submit" value = "搜索"/></form></div><%				//编码设置request.setCharacterEncoding("utf-8");String strName = request.getParameter("strName");//搜索的关键词为中文  获取时会出现乱码    通过String类进行编码和解码(得到我们看得懂的中文)//sql语句String sql = "select * from tb_news";//第一次运行admin.jsp  strName为null  不能调用任何方法if(null!=strName){			//将指定编码的字符串进行解码 strName = new String(strName.getBytes("ISO-8859-1"),"utf-8");//sql语句拼接模糊查询sql+=" where ntitle like '%"+strName+"%'";}%>

二:index页面的主题和新闻的数据绑定

代码操作如下:

<div class="main"><div class="class_type"> <img src="admin/images/class_type.gif" alt="新闻中心" /> </div><div class="content"><!-- index.jsp用户首页的新闻分类显示(数据绑定) --><ul class="class_date"><li id='class_month'> <a href = "index.jsp"><b>&nbsp;全部&nbsp;</b></a><%//加载驱动Class.forName("oracle.jdbc.driver.OracleDriver");//建立连接String url = "jdbc:oracle:thin:@localhost:1521:orcl";Connection conn = DriverManager.getConnection(url, "scott", "123");//sqlString sql = "select * from tb_news_theme";PreparedStatement ps = conn.prepareStatement(sql);ResultSet rs = ps.executeQuery();//sql  select count(*) from tb_news_themeint count = 1;while(rs.next()){count++;out.println("<a href='index.jsp?username="+username+"&ntid="+rs.getInt(1)+"'><b> "+rs.getString(2)+" </b></a> ");//11 就是总记录数if(count%11==0){out.println("<br/>");}}%></li></ul><!-- 当进入index.jsp页面后,手动点击对应的主题名称  跳转到本页面  获取当前点击的主题名称 --><%username = request.getParameter("username");String tid  = request.getParameter("ntid");if(null!=tid){//说明点击了主题分类//根据点击的主题分类进行查询  where 条件sql = "select * from tb_news where ntid = "+Integer.valueOf(tid);}else{//第一次进来,没有点击主题分类sql = "select * from tb_news";//查询所有新闻}%><!-- 新闻显示  start--><ul class="classlist"><%//sqlps = conn.prepareStatement(sql);rs = ps.executeQuery();while(rs.next()){out.println("<li><a href='newRead.jsp?username="+username+"&nid="+rs.getInt(1)+"'> "+rs.getString(3)+" </a><span> "+rs.getString(8)+" </span></li>");}%></ul></div>

三:评论设置与评论管理

第一步,设置评论的可发布功能

<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%//1.设置编码request.setCharacterEncoding("utf-8");//获取数据//评论编号int cid = 0;//定义一个变量保存最终的id//链接数据库查询到最大的id   最后+1//加载驱动Class.forName("oracle.jdbc.driver.OracleDriver");//建立连接String url = "jdbc:oracle:thin:@localhost:1521:orcl";Connection conn = DriverManager.getConnection(url, "scott", "123");String sql = "select nvl(max(cid),0) from tb_comment";PreparedStatement ps = conn.prepareStatement(sql);ResultSet rs = ps.executeQuery();if(rs.next()){cid = rs.getInt(1)+1;}//out.println("cid = "+cid);//用户编号int cuserid = 0;String username = request.getParameter("username");//根据用户名查找到该用户的编号sql = "select * from tb_news_users where username = ?";ps = conn.prepareStatement(sql);ps.setString(1,username);rs = ps.executeQuery();if(rs.next()){cuserid = rs.getInt(1);}//新闻编号int nid = Integer.valueOf(request.getParameter("nid"));//ip地址String cip = request.getParameter("cip");//内容String ccontent = request.getParameter("ccontent");//时间Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String cdate = sdf.format(date);//发表评论sql = "insert into tb_comment values(?,?,?,?,?,to_date(?,'yyyy-mm-dd hh24:mi:ss'))";ps = conn.prepareStatement(sql);ps.setInt(1, cid);ps.setInt(2, cuserid);ps.setInt(3, nid);ps.setString(4, cip);ps.setString(5, ccontent);ps.setString(6, cdate);int n = ps.executeUpdate();if(n>0){out.println("<script>alert('评论成功');location.href='newRead.jsp?username="+username+"&nid="+nid+"'</script>");}else{out.println("<script>alert('评论失败');location.href='newRead.jsp?username="+username+"&nid="+nid+"'</script>");}%>

第二步,将评论可显示出来,如果有评论,就显示出来,如果没有评论,显示暂无评论
                

<ul class="classlist"><table width="80%" align="center"><%//定义一个变量存储指定新闻的评论数int commentCount = 0;//1.求指定新闻的评论数判断sql ="select count(*) from tb_comment where cnid = ?";ps = conn.prepareStatement(sql);ps.setInt(1, nid);rs = ps.executeQuery();if(rs.next()){commentCount = rs.getInt(1);}if(commentCount!=0){//遍历所有的评论sql ="select * from tb_comment where cnid = ?";ps = conn.prepareStatement(sql);ps.setInt(1, nid);rs = ps.executeQuery();while(rs.next()){sql = "select * from tb_news_users where userid = ?";ps = conn.prepareStatement(sql);ps.setInt(1, rs.getInt(2));ResultSet rs2 = ps.executeQuery();String uname = "";if(rs2.next()){uname = rs2.getString(2);}out.println("<tr>");out.println("<td>");out.println("用户名:"+uname+"<br/>");out.println("评论内容:"+rs.getString(5));out.println("&nbsp;&nbsp;&nbsp;&nbsp;<a href = 'doDelComment.jsp?username="+username+"&cid="+rs.getInt(1)+"'>删除</a><br/>");out.println("评论时间:"+rs.getString(6)+"<br/>");out.println("</td>");out.println("</tr>");out.println("<tr>");out.println("<td>");out.println("&nbsp;");out.println("</td>");out.println("</tr>");}}else{out.println("<td colspan='6'> 暂无评论! </td>");}%><tr><td colspan="6"><hr /></td></tr></table></ul>

      第三步,对评论设置可删除功能的实现

            1.先获取当前传递的参数用户以及新闻编号   
                          

   <%//设置编码request.setCharacterEncoding("utf-8");String username = request.getParameter("username");//用户名%>

  2.设置中间页面,与数据库进行交互操作,实现删除评论功能

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%//删除评论//设置编码request.setCharacterEncoding("utf-8");//获取用户名String username = request.getParameter("username");//加载驱动Class.forName("oracle.jdbc.driver.OracleDriver");//建立连接String url = "jdbc:oracle:thin:@localhost:1521:orcl";Connection conn = DriverManager.getConnection(url, "scott", "123");int cuserid = 0;String sql = "select * from tb_news_users where username = ?";PreparedStatement ps = conn.prepareStatement(sql);ps.setString(1, username);ResultSet rs = ps.executeQuery();if(rs.next()){cuserid = rs.getInt(1);}//获取cidString id = request.getParameter("cid");int cid = 0;if(null!=id){cid = Integer.valueOf(id);}int cid_cuserid = 0;//根据cid进行查找  cuseridint nid = 0;//保存新闻编号//sqlsql = "select * from tb_comment where cid = ?";ps = conn.prepareStatement(sql);ps.setInt(1, cid);rs = ps.executeQuery();if(rs.next()){cid_cuserid = rs.getInt(2);nid = rs.getInt(3);}if(cuserid!=cid_cuserid){//不是当前登录用户所评论的内容out.println("<script>alert('此评论不是当前用户所评,无法删除');location.href='newRead.jsp?username="+username+"&nid="+nid+"'</script>");}else{//根据当前登录的用户以及对应的评论编号进行删除sql = "delete from tb_comment where cuserid = ? and cid = ?";ps = conn.prepareStatement(sql);ps.setInt(1, cid_cuserid);ps.setInt(2, cid);int n = ps.executeUpdate();if(n>0){out.println("<script>alert('删除成功');location.href='newRead.jsp?username="+username+"&nid="+nid+"'</script>");}else{out.println("<script>alert('删除失败');location.href='newRead.jsp?username="+username+"&nid="+nid+"'</script>");}}%>
  • include指令

JSP可以通过include指令来包含其他文件的内容,被包含的可以是JSP文件或HTML文件。

include指令的语法为:

<%@ include file="目标组件的绝对或相对URL" %>

该指令在JSP页面翻译的时候,会把include中的内容插入到JSP页面中。
    
        <!-- 通过jsp中的include指令进行引入第三方页面 -->
        <%@ include file="foot.jsp" %>

如果多数网页都包含相同的内容,可以把这部分相同的内容单独放到一个文件中,其他的JSP文件通过Include指令即可将这个文件包含吉利啊。

使用include指令来包含其他文件被看作静态包含。

案例:对脚部的代码进行封装(foot.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>后台-尾部封装页面</title>
</head>
<body>
<div id="site_link"> <a href="#">关于我们</a><span>|</span> <a href="#">Aboue Us</a><span>|</span> <a href="#">联系我们</a><span>|</span><a href="#">广告服务</a><span>|</span> <a href="#">供稿服务</a><span>|</span> <a href="#">法律声明</a><span>|</span> <a href="#">招聘信息</a><span>|</span><a href="#">网站地图</a><span>|</span> <a href="#">留言反馈</a> </div><div id="footer"><p class="">24小时客户服务热线:010-68988888 &#160;&#160;&#160;&#160; <a href="#">常见问题解答</a> &#160;&#160;&#160;&#160;新闻热线:010-627488888<br />文明办网文明上网举报电话:010-627488888 &#160;&#160;&#160;&#160; 举报邮箱:<a href="#">jubao@jb-aptech.com.cn</a></p><p class="copyright">Copyright &copy; 1999-2009 News China gov, All Right Reserver<br />新闻中国 版权所有</p></div>
</body>
</html>

 可以通过include指令进行封装操作

    <%@ include file="foot.jsp" %>

  相关解决方案