本文分享了一個基于MVC+DAO的留言管理系統,包含增刪改查,其中查詢,有全部查詢和按關鍵字進行模糊查詢的功能,具體內容如下
NoteDAO.Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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("操作中出現錯誤?。。?quot;) ;
- }
- 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("操作中出現錯誤?。。?quot;) ;
- }
- 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("操作中出現錯誤?。。?quot;) ;
- }
- 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>
以上就是本文的全部內容,希望對大家的學習有所幫助。