一.项目模糊查询

<!-- 功能1:实现模糊查询的搜索功能(根据标题进行模糊查询) -->
				
				<div style = "width:100%;height:40px;text-align: center;line-height:40px; ">
					<form action = "admin.jsp" method = "post">
						<label>新闻标题</label>
						<input type = "text" name = "strName" autocomplete="off"/>
						<input type = "submit" value = "搜索"/>
					</form>
				</div>
				
				<%
					//编码设置
					request.setCharacterEncoding("utf-8");
					String strName = request.getParameter("strName");
					//sql语句
					String sql = "select * from tb_news";
					if(strName != null){
						//将指定编码的字符串进行解码  通过getBytes("编码")   构造函数new String()编码
						strName = new String(strName.getBytes("ISO-8859-1"),"utf-8");
						//sql语句拼接模糊查询
						sql+=" where ntitle like '%"+strName+"%'";
					}
					System.out.println("模糊查询的关键词为:[sql] "+sql);
				%>

二.绑定index页面的主题和新闻

<!-- 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");
				    	//sql
				    	String sql = "select * from tb_news_theme";
				    	PreparedStatement ps = conn.prepareStatement(sql);
						ResultSet rs = ps.executeQuery();
						//sql  select count(*) from tb_news_theme
						int 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";//查询所有新闻
						}
					%>

三.绑定评论,删除评论

<div class="content">
					<!-- 该区域实现新闻详情显示  start -->
					
					<%
						//定义所谓变量(新闻标题,发布时间,点击量,新闻内容等等)
						String ntitle = "";//标题
						String ndate = "";//发布时间
						String nauthor = "";//作者
						String ncontent = "";//内容
						int ncount = 0;//点击量
					
						
						//2.获取id
						String id = request.getParameter("nid");
						//转换
						int nid = 0;
						if(null!=id){
							nid = Integer.valueOf(id);
						}
						//3.获取数据
						//加载驱动
						Class.forName("oracle.jdbc.driver.OracleDriver");
						//建立连接
						Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott","123");
						//sql语句
						String sql = "select * from tb_news where nid = ?";
						//将sql语句传入方法返回执行对象
						PreparedStatement ps = conn.prepareStatement(sql);
						ps.setInt(1, nid);
						//返回结果集对象
						ResultSet rs = ps.executeQuery();
						//if改造
						if(rs.next()){
							ntitle = rs.getString(3);
							ndate = rs.getString(8);
							nauthor = rs.getString(4);
							ncontent = rs.getString(6);
							ncount = rs.getInt(9);
						}
					%>
				
				
				
					<ul class="classlist">
						<table width="80%" align="center">
							<tr width="100%">
								<td colspan="2" align="center"><%=ntitle %>
								&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
								&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
								&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
								&nbsp;&nbsp;&nbsp; 点击量 <%=ncount %></td>
							</tr>
							<tr>
								<td colspan="2">
									<hr />
								</td>
							</tr>
							<tr>
								<td align="center"><%=ndate %></td>
								<td align="left"><%=nauthor %> </td>
							</tr>
							<tr>
								<td colspan="2" align="center"></td>
							</tr>
							<tr>
								<td colspan="2"> <%=ncontent %> </td>
							</tr>
							<tr>
								<td colspan="2">
									<hr />
								</td>
							</tr>
						</table>
					</ul>
					<ul class="classlist">
						<table width="80%" align="center">
							<!-- 从index.jsp页面中跳转到详情页面,如果有评论  此处要显示出来,如果没有
							评论  显示 "暂无评论" 
							-->
							<%
								//定义一个变量存储指定新闻的评论数
								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>
					<ul class="classlist">
						<form action="doComment.jsp" method="post" onsubmit="return check()">
							<!-- 通过隐藏域标签传递新闻编号 -->
							<input type = "hidden" name = "nid" value = "<%=nid %>"/>
							
							<table width="80%" align="center">
								<tr>
									<td> 评 论 </td>
								</tr>
								<tr>
									<td> 用户名: </td>
									<td><input id="cauthor" name="username" value="<%=username %>" />
										IP:
										<input name="cip" value="127.0.0.1" readonly="readonly" />
									</td>
								</tr>
								<tr>
									<td colspan="2"><textarea name="ccontent" cols="70" rows="10"></textarea>
									</td>
								</tr>
								<td><input name="submit" value="发  表" type="submit" />
								</td>
							</table>
						</form>
					</ul>
				</div>
			</div>
		</div>



//跳转的doComment.jsp页面
<%@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>");
		}
		
	
	
	%>
	

//删除评论
<%
    	//删除评论
    	//设置编码
    	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);
		}
    	
    	
    	
    	//获取cid
    	String id = request.getParameter("cid");
    	int cid = 0;
    	if(null!=id){
    		cid = Integer.valueOf(id);
    	}
    	int cid_cuserid = 0;
    	//根据cid进行查找  cuserid
    	int nid = 0;//保存新闻编号
    	
    	//sql
    	sql = "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("不是当前登录用户的评论内容");
    		out.println("<script>alert('此评论不是当前用户所评,无法删除');location.href='newRead.jsp?username="+username+"&nid="+nid+"'</script>");
    	}else{
    		//out.println("是当前登录用户的评论内容");
    		//根据当前登录的用户以及对应的评论编号进行删除
    		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>");
	    		
			}
			
    		
    		
    	}
    
    %>

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐