java留言管理系统中模糊查询实例分享

前端技术 2023/09/05 Java

本文分享了一个基于MVC+DAO的留言管理系统,包含增删改查,其中查询,有全部查询和按关键字进行模糊查询的功能,具体内容如下
NoteDAO.Java

package cn.mldn.lxh.note.dao ; 
 
import java.util.* ; 
import cn.mldn.lxh.note.vo.* ; 
 
public interface NoteDAO 
{ 
  // 增加操作 
  public void insert(Note note) throws Exception ; 
  // 修改操作 
  public void update(Note note) throws Exception ; 
  // 删除操作 
  public void delete(int id) throws Exception ; 
  // 按ID查询,主要为更新使用 
  public Note queryById(int id) throws Exception ; 
  // 查询全部 
  public List queryAll() throws Exception ; 
  // 模糊查询 
  public List queryByLike(String cond) throws Exception ; 
}; 

NoteDAOImpl.java

package cn.mldn.lxh.note.dao.impl ; 
 
import java.sql.* ; 
import java.util.* ; 
import cn.mldn.lxh.note.vo.* ; 
import cn.mldn.lxh.note.dao.* ; 
import cn.mldn.lxh.note.dbc.* ; 
 
public class NoteDAOImpl implements NoteDAO 
{ 
  // 增加操作 
  public void insert(Note note) throws Exception 
  { 
    String sql = \"INSERT INTO note(id,title,author,content) VALUES(note_sequ.nextVal,?,?,?)\" ; 
    PreparedStatement pstmt = null ; 
    DataBaseConnection dbc = null ; 
    dbc = new DataBaseConnection() ; 
    try 
    { 
      pstmt = dbc.getConnection().prepareStatement(sql) ; 
      pstmt.setString(1,note.getTitle()) ; 
      pstmt.setString(2,note.getAuthor()) ; 
      pstmt.setString(3,note.getContent()) ; 
      pstmt.executeUpdate() ; 
      pstmt.close() ; 
    } 
    catch (Exception e) 
    { 
      // System.out.println(e) ; 
      throw new Exception(\"操作中出现错误!!!\") ; 
    } 
    finally 
    { 
      dbc.close() ; 
    } 
  } 
  // 修改操作 
  public void update(Note note) throws Exception 
  { 
    String sql = \"UPDATE note SET title=?,author=?,content=? WHERE id=?\" ; 
    PreparedStatement pstmt = null ; 
    DataBaseConnection dbc = null ; 
    dbc = new DataBaseConnection() ; 
    try 
    { 
      pstmt = dbc.getConnection().prepareStatement(sql) ; 
      pstmt.setString(1,note.getTitle()) ; 
      pstmt.setString(2,note.getAuthor()) ; 
      pstmt.setString(3,note.getContent()) ; 
      pstmt.setInt(4,note.getId()) ; 
      pstmt.executeUpdate() ; 
      pstmt.close() ; 
    } 
    catch (Exception e) 
    { 
      throw new Exception(\"操作中出现错误!!!\") ; 
    } 
    finally 
    { 
      dbc.close() ; 
    } 
  } 
  // 删除操作 
  public void delete(int id) throws Exception 
  { 
    String sql = \"DELETE FROM note WHERE id=?\" ; 
    PreparedStatement pstmt = null ; 
    DataBaseConnection dbc = null ; 
    dbc = new DataBaseConnection() ; 
    try 
    { 
      pstmt = dbc.getConnection().prepareStatement(sql) ; 
      pstmt.setInt(1,id) ; 
      pstmt.executeUpdate() ; 
      pstmt.close() ; 
    } 
    catch (Exception e) 
    { 
      throw new Exception(\"操作中出现错误!!!\") ; 
    } 
    finally 
    { 
      dbc.close() ; 
    } 
  } 
  // 按ID查询,主要为更新使用 
  public Note queryById(int id) throws Exception 
  { 
    Note note = null ; 
    String sql = \"SELECT id,title,author,content FROM note WHERE id=?\" ; 
    PreparedStatement pstmt = null ; 
    DataBaseConnection dbc = null ; 
    dbc = new DataBaseConnection() ; 
    try 
    { 
      pstmt = dbc.getConnection().prepareStatement(sql) ; 
      pstmt.setInt(1,id) ; 
      ResultSet rs = pstmt.executeQuery() ; 
      if(rs.next()) 
      { 
        note = new Note() ; 
        note.setId(rs.getInt(1)) ; 
        note.setTitle(rs.getString(2)) ; 
        note.setAuthor(rs.getString(3)) ; 
        note.setContent(rs.getString(4)) ; 
      } 
      rs.close() ; 
      pstmt.close() ; 
    } 
    catch (Exception e) 
    { 
      throw new Exception(\"操作中出现错误!!!\") ; 
    } 
    finally 
    { 
      dbc.close() ; 
    } 
    return note ; 
  } 
  // 查询全部 
  public List queryAll() throws Exception 
  { 
    List all = new ArrayList() ; 
    String sql = \"SELECT id,title,author,content FROM note\" ; 
    PreparedStatement pstmt = null ; 
    DataBaseConnection dbc = null ; 
    dbc = new DataBaseConnection() ; 
    try 
    { 
      pstmt = dbc.getConnection().prepareStatement(sql) ; 
      ResultSet rs = pstmt.executeQuery() ; 
      while(rs.next()) 
      { 
        Note note = new Note() ; 
        note.setId(rs.getInt(1)) ; 
        note.setTitle(rs.getString(2)) ; 
        note.setAuthor(rs.getString(3)) ; 
        note.setContent(rs.getString(4)) ; 
        all.add(note) ; 
      } 
      rs.close() ; 
      pstmt.close() ; 
    } 
    catch (Exception e) 
    { 
      System.out.println(e) ; 
      throw new Exception(\"操作中出现错误!!!\") ; 
    } 
    finally 
    { 
      dbc.close() ; 
    } 
    return all ; 
  } 
  // 模糊查询 
  public List queryByLike(String cond) throws Exception 
  { 
    List all = new ArrayList() ; 
    String sql = \"SELECT id,title,author,content FROM note WHERE title LIKE ? or AUTHOR LIKE ? or CONTENT LIKE ?\" ; 
    PreparedStatement pstmt = null ; 
    DataBaseConnection dbc = null ; 
    dbc = new DataBaseConnection() ; 
    try 
    { 
      pstmt = dbc.getConnection().prepareStatement(sql) ; 
      pstmt.setString(1,\"%\"+cond+\"%\") ; 
      pstmt.setString(2,\"%\"+cond+\"%\") ; 
      pstmt.setString(3,\"%\"+cond+\"%\") ; 
      ResultSet rs = pstmt.executeQuery() ; 
      while(rs.next()) 
      { 
        Note note = new Note() ; 
        note.setId(rs.getInt(1)) ; 
        note.setTitle(rs.getString(2)) ; 
        note.setAuthor(rs.getString(3)) ; 
        note.setContent(rs.getString(4)) ; 
        all.add(note) ; 
      } 
      rs.close() ; 
      pstmt.close() ; 
    } 
    catch (Exception e) 
    { 
      System.out.println(e) ; 
      throw new Exception(\"操作中出现错误!!!\") ; 
    } 
    finally 
    { 
      dbc.close() ; 
    } 
    return all ; 
  } 
}; 

NoteServlet.java

package cn.mldn.lxh.note.servlet ; 
 
import java.io.* ; 
import javax.servlet.* ; 
import javax.servlet.http.* ; 
import cn.mldn.lxh.note.factory.* ; 
import cn.mldn.lxh.note.vo.* ; 
 
public class NoteServlet extends HttpServlet 
{ 
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException 
  { 
    this.doPost(request,response) ; 
  } 
  public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException 
  { 
    request.setCharacterEncoding(\"GB2312\") ; 
    String path = \"errors.jsp\" ; 
    // 接收要操作的参数值 
    String status = request.getParameter(\"status\") ; 
    if(status!=null) 
    { 
      // 参数有内容,之后选择合适的方法 
      // 查询全部操作 
      if(\"selectall\".equals(status)) 
      { 
        try 
        { 
          request.setAttribute(\"all\",DAOFactory.getNoteDAOInstance().queryAll()) ; 
        } 
        catch (Exception e) 
        { 
        } 
        path = \"list_notes.jsp\" ; 
      } 
      // 插入操作 
      if(\"insert\".equals(status)) 
      { 
        // 1、接收插入的信息 
        String title = request.getParameter(\"title\") ; 
        String author = request.getParameter(\"author\") ; 
        String content = request.getParameter(\"content\") ; 
        // 2、实例化VO对象 
        Note note = new Note() ; 
        note.setTitle(title) ; 
        note.setAuthor(author) ; 
        note.setContent(content) ; 
        // 3、调用DAO完成数据库的插入操作 
        boolean flag = false ; 
        try 
        { 
          DAOFactory.getNoteDAOInstance().insert(note) ; 
          flag = true ; 
        } 
        catch (Exception e) 
        {} 
        request.setAttribute(\"flag\",new Boolean(flag)) ; 
        path = \"insert_do.jsp\" ; 
      } 
      // 按ID查询操作,修改之前需要将数据先查询出来 
      if(\"selectid\".equals(status)) 
      { 
        // 接收参数 
        int id = 0 ; 
        try 
        { 
          id = Integer.parseInt(request.getParameter(\"id\")) ; 
        } 
        catch(Exception e) 
        {} 
        try 
        { 
          request.setAttribute(\"note\",DAOFactory.getNoteDAOInstance().queryById(id)) ; 
        } 
        catch (Exception e) 
        { 
        }         
        path = \"update.jsp\" ; 
      } 
      // 更新操作 
      if(\"update\".equals(status)) 
      { 
        int id = 0 ; 
        try 
        { 
          id = Integer.parseInt(request.getParameter(\"id\")) ; 
        } 
        catch(Exception e) 
        {} 
        String title = request.getParameter(\"title\") ; 
        String author = request.getParameter(\"author\") ; 
        String content = request.getParameter(\"content\") ; 
        Note note = new Note() ; 
        note.setId(id) ; 
        note.setTitle(title) ; 
        note.setAuthor(author) ; 
        note.setContent(content) ; 
        boolean flag = false ; 
        try 
        { 
          DAOFactory.getNoteDAOInstance().update(note) ; 
          flag = true ; 
        } 
        catch (Exception e) 
        {} 
        request.setAttribute(\"flag\",new Boolean(flag)) ; 
        path = \"update_do.jsp\" ; 
      } 
      // 模糊查询 
      if(\"selectbylike\".equals(status)) 
      { 
        String keyword = request.getParameter(\"keyword\") ; 
        try 
        { 
          request.setAttribute(\"all\",DAOFactory.getNoteDAOInstance().queryByLike(keyword)) ; 
        } 
        catch (Exception e) 
        { 
        } 
        path = \"list_notes.jsp\" ; 
      } 
      // 删除操作 
      if(\"delete\".equals(status)) 
      { 
        // 接收参数 
        int id = 0 ; 
        try 
        { 
          id = Integer.parseInt(request.getParameter(\"id\")) ; 
        } 
        catch(Exception e) 
        {} 
        boolean flag = false ; 
        try 
        { 
          DAOFactory.getNoteDAOInstance().delete(id) ; 
          flag = true ; 
        } 
        catch (Exception e) 
        {} 
        request.setAttribute(\"flag\",new Boolean(flag)) ; 
        path = \"delete_do.jsp\" ; 
      } 
    } 
    else 
    { 
      // 则表示无参数,非法的客户请求 
    } 
    request.getRequestDispatcher(path).forward(request,response) ; 
  } 
}; 
/* 
 <servlet> 
  <servlet-name>note</servlet-name> 
  <servlet-class>cn.mldn.lxh.note.servlet.NoteServlet</servlet-class> 
 </servlet> 
 <servlet-mapping> 
  <servlet-name>note</servlet-name> 
  <url-pattern>/note/note_mvc/Note</url-pattern> 
 </servlet-mapping> 
*/ 

list_notes.jsp

<%@ page contentType=\"text/html;charset=gb2312\"%> 
<%@ page import=\"java.util.*\"%> 
<%@ page import=\"cn.mldn.lxh.note.vo.*\"%> 
<html> 
<head> 
  <title>MVC+DAO 留言管理程序——登陆</title> 
</head> 
<body> 
<center> 
  <h1>留言管理范例 —— MVC + DAO实现</h1> 
  <hr> 
  <br> 
  <% 
    // 编码转换 
    request.setCharacterEncoding(\"GB2312\") ; 
    if(session.getAttribute(\"uname\")!=null) 
    { 
      // 用户已登陆 
  %> 
  <% 
    // 如果有内容,则修改变量i,如果没有,则根据i的值进行无内容提示 
    int i = 0 ; 
    String keyword = request.getParameter(\"keyword\") ; 
    List all = null ; 
    all = (List)request.getAttribute(\"all\") ; 
  %> 
<form action=\"Note\" method=\"POST\"> 
  请输入查询内容:<input type=\"text\" name=\"keyword\"> 
  <input type=\"hidden\" name=\"status\" value=\"selectbylike\"> 
  <input type=\"submit\" value=\"查询\"> 
</form> 
</h3><a href=\"insert.jsp\">添加新留言</a></h3> 
<table width=\"80%\" border=\"1\"> 
  <tr> 
    <td>留言ID</td> 
    <td>标题</td> 
    <td>作者</td> 
    <td>内容</td> 
    <td>删除</td> 
  </tr> 
  <% 
      Iterator iter = all.iterator() ; 
      while(iter.hasNext()) 
      { 
        Note note = (Note)iter.next() ; 
        i++ ; 
        // 进行循环打印,打印出所有的内容,以表格形式 
        // 从数据库中取出内容 
        int id = note.getId() ; 
        String title = note.getTitle() ; 
        String author = note.getAuthor() ; 
        String content = note.getContent() ; 
         
        // 因为要关键字返红,所以此处需要接收查询关键字 
        // String keyword = request.getParameter(\"keyword\") ; 
        if(keyword!=null) 
        { 
          // 需要将数据返红 
          title = title.replaceAll(keyword,\"<font color=\\\"red\\\">\"+keyword+\"</font>\")  
 
; 
          author = author.replaceAll(keyword,\"<font color=\\\"red\\\">\"+keyword 
 
+\"</font>\") ; 
          content = content.replaceAll(keyword,\"<font color=\\\"red\\\">\"+keyword 
 
+\"</font>\") ; 
        } 
  %> 
        <tr> 
          <td><%=id%></td> 
          <td><a href=\"Note?id=<%=id%>&status=selectid\"><%=title%></a></td> 
          <td><%=author%></td> 
          <td><%=content%></td> 
          <td><a href=\"Note?id=<%=id%>&status=delete\">删除</a></td> 
        </tr> 
  <% 
      } 
      // 判断i的值是否改变,如果改变,则表示有内容,反之,无内容 
      if(i==0) 
        { 
      // 进行提示 
  %> 
        <tr> 
          <td colspan=\"5\">没有任何内容!!!</td> 
        </tr> 
  <% 
      } 
  %> 
</table> 
 
  <% 
    } 
    else 
    { 
      // 用户未登陆,提示用户登陆,并跳转 
      response.setHeader(\"refresh\",\"2;URL=login.jsp\") ; 
  %> 
      您还未登陆,请先登陆!!!<br> 
      两秒后自动跳转到登陆窗口!!!<br> 
      如果没有跳转,请按<a href=\"login.jsp\">这里</a>!!!<br> 
  <% 
    } 
  %> 
</center> 
</body> 
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助。

本文地址:https://www.stayed.cn/item/12045

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。