0
点赞
收藏
分享

微信扫一扫

【无标题】JavaWeb-06 (项目案例3

color_小浣熊 2022-04-13 阅读 44
java

一.项目模糊查询
<!-- 功能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" οnsubmit="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>");
                
            }
            
            
            
        }
    
    %>

————————————————

举报

相关推荐

0 条评论