本文分享了一个基于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("操作中出现错误!!!") ;
- }
- 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>
以上就是本文的全部内容,希望对大家的学习有所帮助。