项目的分层结构
action包
BookSearchServlet.java
package top.gaojc.action; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import top.gaojc.bean.Book; import top.gaojc.test.BookTest; public class BookSearchServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 1.设置编码 request.setCharacterEncoding("utf-8"); // 2.获取参数 String bookName = request.getParameter("bookName"); Book book = BookTest.getBookByName(bookName); // 3.将图书信息显示在bookInfo.jsp的页面 request.setAttribute("book", book); request.getRequestDispatcher("bookInfo.jsp").forward(request, response); } }
bean包
Book.java
package top.gaojc.bean; public class Book { private int id; private String bookName; private String author; private String classify; private float price; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getClassify() { return classify; } public void setClassify(String classify) { this.classify = classify; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } public Book() { super(); // TODO Auto-generated constructor stub } public Book(int id, String bookName, String author, String classify, float price) { super(); this.id = id; this.bookName = bookName; this.author = author; this.classify = classify; this.price = price; } @Override public String toString() { return "<tr>" +"<td><center>"+id+"</center></td>" +"<td><center>"+bookName+"</center></td>" +"<td><center>"+author+"</center></td>" +"<td><center>"+classify+"</center></td>" +"<td><center>"+price+"</center></td>" +"</tr>"; } }
test包
BookTest.java
package top.gaojc.test; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import top.gaojc.bean.Book; import top.gaojc.util.DBUtil; public class BookTest { public static Book getBookByName(String bookName) { // 连接数据库并且把数据查询出来 存储在book对象中,最后返回book对象即可 // 1 2 调用DBUtil方法添加驱动程序包、连接数据库 Connection conn = DBUtil.getConn(); // 3.添加sql语句 String sql = "select * from book where bookName = ?"; // 4.准备一个和数据库打交道的 PreparedStatement ps = null; ResultSet rs = null; Book book = null; try { ps = conn.prepareStatement(sql); ps.setString(1, bookName); // 5.查询结果 rs = ps.executeQuery(); if (rs.next()) { // 创建一个有属性值的对象 // 6.输出 book = new Book(rs.getInt(1), rs.getString(2), rs.getString(3),rs.getString(4), rs.getFloat(5)); } } catch (Exception e) { // TODO: handle exception } finally { // 7.调用DBUtil关闭资源 DBUtil.close(conn, ps, rs); } // 返回值 return book; } }
util包
DBUtil.java
package top.gaojc.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DBUtil { // 1.添加驱动程序包 static { try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } // 2.连接数据库 public static Connection getConn() { Connection conn = null; try { // ("jdbc:运行环境://localhost:端口号;databaseName=数据库名称","SQL账号","SQL密码") conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=bookwork","sa", "1"); } catch (SQLException e) { e.printStackTrace(); } return conn; } // 7.关闭资源 public static void close(Connection conn, PreparedStatement ps, ResultSet rs) { try { if (conn != null) conn.close(); if (ps != null) ps.close(); if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } } }
web.xml配置
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>BookSearchServlet</servlet-name> <servlet-class>top.gaojc.action.BookSearchServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>BookSearchServlet</servlet-name> <url-pattern>/BookSearchServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>search.jsp</welcome-file> </welcome-file-list> </web-app>
数据库数据
search.jsp
查询页面效果图
.jsp代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="BookSearchServlet" method="post"> 图书名称: <input type="text" name="bookName"> <input type="submit"value="查询"> </form> </body> </html>
bookInfo.jsp
查询结果页面效果图
.jsp代码
<%@page import="top.gaojc.bean.Book"%> <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <% // 接收Book值 Book book = (Book) request.getAttribute("book"); %> <h1 style=text-align:center;>查询结果</h1> <table border="1" cellpadding="0" cellspacing="0" align="center" width="600px"> <tr> <td><center>编号</center></td> <td><center>图书名称</center></td> <td><center>作者</center></center></td> <td><center>类别</center></td> <td><center>价格</center></td> </tr> <% if (book != null) { // 如果book的值不是空值 打印出来图书信息 out.println(book.toString() + "<br>"); } else { // 如果为空值的话继续跳转到search.jsp页面 request.getRequestDispatcher("search.jsp").forward(request,response); } %> </table> </body> </html>