一、建数据库和jsp页面 新建的jsp页面:写一个输入框一个按钮一个下拉div表
1 2 3 4 5 <body> <input type="text" name="word" id="word" style="width:700px ; height:50px"> <input type="button" value="查询" style="width:100px ; height:50px"> <div id="div01" style="width:700px ; height:200px ; border:1px solid blue ; display:none"></div> </body>
新建的数据库
二、 前期准备# 1.导入jar文件
2.导入数据池的xml配置文件并且更改数据库名字
3.导入所需要的的JDBCUtil02类
4.导入之前ajax写验证用户名时候的dao和impl类进行修改
三、 书写Servlet的前两步操作# 1 2 3 4 5 6 7 8 //1.获取参数 String word=request.getParameter("word"); //2.让dao实现 WordsDao dao=new WordsDaoImpl(); List<WordBean> list = dao.findWords(word); //3.返回数据
四、 写jsp页面代码 导入jq包和heima.js文件(所有操作放里面写)
1 2 <script type="text/javascript" src="js/jquery-1.11.3.min.js"></script> <script type="text/javascript" src="js/heima.js"></script>
五、写heima.js文件 要使用固定格式和JSTL格式(导入jar包)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 //捕捉弹起事件 对一个元素进行onkeyup事件监听 // 格式:$(document).reday(function(){}) $(function(){ $("#word").keyup(function(){ //2. 获取输入框的值 //var word=$("#word").val(); var word=$(this).val(); if(word == "") //查询的为0 { $("#div01").hide(); } else //查询东西要匹配 { //3. 请求数据。 $.post("/day16_02/FindWordsServlet",{word:word},function(data,status){ //alert(data); $("#div01").show(); $("#div01").html(data); }); } }) });
六、书写servlet第三步 让servlet跳到list.jsp页面:
1 2 3 4 5 6 //数据存到作用域(因为list.jsp用了JSTL) request.setAttribute("list",list); //3.返回数据 response.setContentType("text/html;charset=utf-8"); request.getRequestDispatcher("list.jsp").forward(request, response); //跳转到list.jsp页面
list.jsp页面(用JSTL去遍历出来):
1 2 3 4 5 6 7 8 9 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <table style="width: 100%"> <c:forEach items="${list}" var="wordBean"> <!--一定要去servlet里面将数据存到作用域--> <tr> <td>${wordBean.words}</td> </tr> </c:forEach> </table>
七、代码分析 代码框架:
分析代码流程:
八、具体代码 dao类代码:
1 2 3 4 public interface WordsDao { //假如传入一个a ---> 返回 aa abc等 ---> 所以要用list集合 List<WordBean> findWords(String word) throws SQLException; }
daoImpl类代码:
1 2 3 4 5 6 7 8 9 10 public class WordsDaoImpl implements WordsDao { @Override public List<WordBean> findWords(String word) throws SQLException { //1.使用DBUtils的对象 QueryRunner runner=new QueryRunner(JDBCUtil02.getDataSource()); //2.调用简便方法 String sql="select * from words where words like ? limit ?"; //模糊查询 限制只能查出5个 return runner.query(sql, new BeanListHandler<WordBean>(WordBean.class),word+"%",5); }
Servlet类代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 public class FindWordsServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //有中文 request.setCharacterEncoding("utf-8"); try { //1.获取参数 String word=request.getParameter("word"); System.out.println("word="+word); //控制台输出 看我输入的是不是被抓过来了 //2.让dao实现 WordsDao dao=new WordsDaoImpl(); List<WordBean> list = dao.findWords(word); //循环输出满足条件的结果 for (WordBean wordBean : list) { System.out.println("==="+wordBean.toString()); } //数据存到作用域 request.setAttribute("list",list); //3.返回数据 response.setContentType("text/html;charset=utf-8"); request.getRequestDispatcher("list.jsp").forward(request, response); //跳转到list.jsp页面 } catch (SQLException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
domain获取数据库属性类代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 public class WordBean { private int id; private String words; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getWords() { return words; } public void setWords(String words) { this.words = words; } @Override public String toString() { return "WordBean [id=" + id + ", words=" + words + "]"; } }
heima.js文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 //捕捉弹起事件 对一个元素进行onkeyup事件监听 // 格式:$(document).reday(function(){}) $(function(){ $("#word").keyup(function(){ //2. 获取输入框的值 //var word=$("#word").val(); var word=$(this).val(); if(word == "") //查询的为0 { $("#div01").hide(); } else //查询东西要匹配 { //3. 请求数据。 $.post("/day16_02/FindWordsServlet",{word:word},function(data,status){ //alert(data); $("#div01").show(); $("#div01").html(data); }); } }) });
主页demo08.jsp页面:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="js/jquery-1.11.3.min.js"></script> <script type="text/javascript" src="js/heima.js"></script> </head> <body> <center> <!-- 居中--> <h2>黑马</h2> <input type="text" name="word" id="word" style="width: 600px ; height: 50px ;font-size: 20px;"> <input type="button" value="黑马一下" style="height: 55px ; width: 100px ;"> <div id="div01" style="position:relative; left:-54px; width:600px; height:200px ; border:1px solid blue; display: none"></div> </center> </body> </html>
list.jsp展示页面:
1 2 3 4 5 6 7 8 9 10 11 12 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <table style="width: 100%"> <c:forEach items="${list}" var="wordBean"> <!--一定要去servlet里面将数据存到作用域--> <tr> <td>${wordBean.words}</td> </tr> </c:forEach> </table>
JDBCUtil02类(获取数据池对象)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 public class JDBCUtil02 { static ComboPooledDataSource dataSource = null; //使用c3p0开源数据连接池的类 static{ dataSource = new ComboPooledDataSource(); } public static DataSource getDataSource(){ return dataSource; //返回一个dataSource 方便获取 } /* * 获取连接对象 */ public static Connection getConn() throws SQLException{ return dataSource.getConnection(); //返回一个连接 } /* * 释放资源 */ public static void release(Connection conn , Statement st , ResultSet rs){ closeRs(rs); closeSt(st); closeConn(conn); } public static void release(Connection conn , Statement st){ closeSt(st); closeConn(conn); } private static void closeRs(ResultSet rs){ try { if(rs != null){ rs.close(); } } catch (SQLException e) { e.printStackTrace(); }finally{ rs = null; } } private static void closeSt(Statement st){ try { if(st != null){ st.close(); } } catch (SQLException e) { e.printStackTrace(); }finally{ st = null; } } private static void closeConn(Connection conn){ try { if(conn != null){ conn.close(); } } catch (SQLException e) { e.printStackTrace(); }finally{ conn = null; } } }
最终结果展示:
<
Listener
JQuery校验用户名
>