`

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>

 

 

 

分享到:
评论

相关推荐

    OperaMasks查询、模糊查询、源码

    【标题】"OperaMasks查询、模糊查询、源码"涉及的是一个基于OperaMasks前端框架和后端servlet+bean技术实现的查询系统。在这个Demo中,开发者展示了如何运用这些技术来创建一个具备模糊查询功能的应用。让我们深入...

    Servlet查询数据库案例--Query(java源码)

    * This code is from the book Java Examples in a Nutshell, 2nd Edition. * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied. * You may study, use, and modify it for any non-...

    学生信息管理系统3,学生信息管理系统查询,Java源码.zip

    总的来说,这个学生信息管理系统3的Java源码提供了一个学习和研究数据库应用开发、Java编程以及面向对象设计的好案例。通过分析和理解这些源码,开发者可以提升自己的编程技能,了解实际项目中的数据库操作和用户...

    Java实现的坦克大战源码(80后经典游戏)

    《Java实现的坦克大战源码解析》 Java作为一种强大的编程语言,被广泛应用于各种领域,包括游戏开发。本文将深入探讨一个使用Java实现的经典游戏——坦克大战,这是一款深受80后喜爱的游戏,如今借助Java的强大力量...

    Java Web+Servlet+Ajax+MySQL的企业信息管理系统

    是很有价值的J2EE学习的入门案例分析-Based on Java Web+ JavaScript+ JavaBean+ Servlet+ Ajax for enterprise information management systems. Using MySQL database. Is a valuable study entry J2EE Case Study...

    JAVA实现文本框输入自动补全源码

    在Java Web开发中,文本框输入自动补全功能是一个常见的需求,它能够提高用户体验,让用户在输入时更快地找到目标信息。本项目提供了一种不依赖任何外部插件...对于Java Web开发者来说,这是一个很好的学习和参考案例。

    解密搜索引擎技术实战:Lucene in java(第2版)源码 dvd ppt

    7. **实战项目**:通过PPT和部分源码,作者可能提供了实际的案例,帮助读者将理论知识应用于实际项目中,这可能是基于Java的Web应用程序或者独立的桌面应用。 通过这本书的学习,读者不仅可以掌握Lucene的使用,还...

    基于Java的实例源码-图像处理类库 Java Image Filters.zip

    【标题】"基于Java的实例源码-图像处理类库 Java Image Filters.zip" 提供的是一个用Java语言实现的图像处理类库。这个类库包含了各种图像滤镜和处理功能,可以帮助开发者在Java应用程序中轻松地对图像进行操作和...

    人事管理系统_java开发项目_源码

    《Java开发的人事管理系统详解》 在信息技术日新月异的今天,企业对高效、便捷的内部管理工具需求日益增长。本文将详细解析一个基于Java开发的...对于学习和理解Java开发的企业级应用,这个项目是一个宝贵的实践案例。

    网上书店 java sql java sql 网上书店 java sql

    Java通过JDBC(Java Database Connectivity)API与数据库交互,执行SQL查询来插入、更新、删除和检索数据。例如,创建一个书籍表可能包含书名、作者、出版社、价格等字段,使用SQL语句进行数据操作。 在设计数据库...

    Spring Boot整合ElasticSearch和Mysql 附案例源码.docx

    ### Spring Boot整合ElasticSearch与MySQL ...通过以上步骤,可以成功实现一个Spring Boot应用整合ElasticSearch和MySQL的案例,不仅提高了数据检索效率,也为后续的扩展和维护提供了良好的基础。

    Android毛玻璃效果--高斯模糊源码.zip

    在本案例中,我们将深入探讨如何在Android应用中实现高斯模糊,这正是"Android毛玻璃效果--高斯模糊源码.zip"文件所涉及的内容。 高斯模糊是图像处理中的一种方法,它可以平滑图像并减少细节,使得图像看起来像是被...

    【Java毕业设计】微信小程序购物商城app设计带Java后端毕业源码案例设计.zip

    总的来说,这个毕业设计项目涵盖了从前端到后端,从用户交互到数据处理的完整流程,是学习和实践Web开发技能的良好案例。通过这个项目,学生可以全面了解电子商务系统的架构和运作机制,提升实际开发能力。

    Android应用源码之仿 [Tidy相册] 背景模糊效果.zip

    - `JavaApk源码说明.txt`:这份文档可能包含了关于源码结构、关键类和方法的简要说明,帮助开发者理解和学习实现模糊效果的逻辑。 - `TidyDemo`:这是一个示例项目,可能包含了实现背景模糊的完整代码。其中的关键...

    java源码:重复数据删除 Duke.zip

    此外,Duke的源码也可以作为Java编程和数据处理的一个优秀实践案例,展示如何有效地组织代码和处理复杂的数据问题。 总的来说,"java源码:重复数据删除 Duke.zip"提供的资源对Java开发者,尤其是那些在数据清洗和...

    lucene部分案例的源代码

    - 断词查询:支持模糊匹配和通配符查询,提高查询灵活性。 - 排序与评分:通过自定义ScoreDoc实现结果的定制排序,比如按相关度或时间降序排列。 3. lucene01 这个案例可能展示了Lucene的进阶功能,如: - 更新与...

    企查查信息爬取代码.7z

    在本案例中,我们使用Java编写爬虫,目的是获取企查查网站上的企业信息,如企业名称、法人、注册资本、经营状态等。 **主要功能:** - **页面解析**:爬虫需要解析HTML或其他格式的网页,提取所需信息。这通常通过...

    图书管理系统需求分析报告文档及java源码.rar

    总之,这个Java开发的图书管理系统是一个实用的教学案例,它结合了理论与实践,不仅展示了软件工程中的需求分析、设计、实现全过程,还提供了宝贵的源码学习资源。对于想要提升Java编程技能或对图书管理系统感兴趣的...

    【Java Web精品资源】图书馆管理系统项目源码(附程序系统录像及项目使用说明)

    4. **搜索与查询**:设计高效的图书查询接口,可能需要用到分页、模糊查询等,理解JPA或MyBatis的动态SQL。 5. **界面设计**:前端界面通常使用HTML、CSS和JavaScript,可能结合Bootstrap或Vue.js等前端框架,提供...

Global site tag (gtag.js) - Google Analytics