本文分享了一个基于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
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我