zoukankan      html  css  js  c++  java
  • JDBC在javaweb中的应用之分页数据查询

    ---恢复内容开始---

    分页查询

    分页查询是java web开发中经常使用到的技术。在数据库中数据量非常大的情况下,不适合将所有的数据全部显示到一个页面中,同时为了节约程序以及数据库的资源,就需要对数据进行分页查询操作。
    通过JDBC实现分页的方法比较多,而且不同的数据库机制其分页的方式也不同,这里我们介绍典型的两个分页方法。
    1.通过ResultSet的光标实现分页

    该分页方法可以在各种数据库之间通用,但是带来的缺点是占用了大量的资源,不适合在数据库大的情况下使用。
    2.通过数据库机制进行分页

    很多数据库都会提供这种分页机制,例如SQLServer中就提供了top关键字,mysql数据库中提供了limit关键字,用这些关键字都可以设置数据返回的记录数。使用这种分页查询方式可以减少数据库的资源开销,提高程序效率,但是缺点是只适应于一种数据库。

    注:因为第一种不适合在数据量大的情况下使用,所以在实际开发中也不使用该方式来查询数据,我们只对第二种方式做介绍

    例:通过mysql的数据分页机制来实现商品信息的分页查询功能,并将信息显示在jsp页面中

    (1)创建一个商品信息属性Product类,用来保存商品属性,此类为JavaBean

     1 package com.bean;
     2 
     3 public class Product {
     4    public static final int PAGE_SIZE = 2;    //每一页显示几行数据
     5    //编号
     6    private int id;
     7    //名称
     8    private String name;
     9    //价格
    10    private double price;
    11    //数量
    12    private int num;
    13    //单位
    14    private String unit;
    15 public int getId() {
    16     return id;
    17 }
    18 public void setId(int id) {
    19     this.id = id;
    20 }
    21 public String getName() {
    22     return name;
    23 }
    24 public void setName(String name) {
    25     this.name = name;
    26 }
    27 public double getPrice() {
    28     return price;
    29 }
    30 public void setPrice(double price) {
    31     this.price = price;
    32 }
    33 public int getNum() {
    34     return num;
    35 }
    36 public void setNum(int num) {
    37     this.num = num;
    38 }
    39 public String getUnit() {
    40     return unit;
    41 }
    42 public void setUnit(String unit) {
    43     this.unit = unit;
    44 }
    45 }
    46 
    47 Product.java代码
    Product.java代码

    java中一般静态常量我们采用大写字母表示。这是一种java书写规范

    (2)创建BookDao类,此类中主要实现了getConnection()方法连接到数据库的操作以及分页查询所有信息的方法find(int page)、查询记录总数的方法findCount()。代码如下:

      1 package com.bean;
      2 import java.sql.Connection;
      3 import java.sql.DriverManager;
      4 import java.sql.PreparedStatement;
      5 import java.sql.ResultSet;
      6 import java.sql.SQLException;
      7 import java.sql.Statement;
      8 import java.util.ArrayList;
      9 import java.util.List;
     10 public class BookDao {
     11     public Connection getConnection() {
     12         //数据库连接
     13         Connection conn = null;
     14         try {
     15             //加载数据库驱动,注册到驱动管理器
     16             Class.forName("com.mysql.jdbc.Driver");
     17             //数据库连接字符串
     18             String url = "jdbc:mysql://localhost:3306/db_database10";
     19             //数据库用户名
     20             String username = "root";
     21             //数据库密码
     22             String password = "123456";
     23             //创建Connection连接
     24             conn = DriverManager.getConnection(url,username,password);
     25             
     26         }catch(ClassNotFoundException e) {
     27             e.printStackTrace();
     28         }catch(SQLException e) {
     29             e.printStackTrace();
     30         }
     31         return conn;
     32     }
     33     
     34     /**
     35      * 分页查询所有信息
     36      * @param page 页数
     37      * @return List<Product>
     38      */
     39     public List<Product> find(int page){
     40         
     41         //创建List
     42         List<Product> list = new ArrayList<Product>();
     43         //获取数据库连接
     44         Connection conn = getConnection();
     45         //分页查询的SQL语句
     46         String sql = "select * from tb_product order by id desc limit ?,?";
     47         try {
     48             //获取PreparedStatement
     49             PreparedStatement ps = conn.prepareStatement(sql);
     50             //SQL语句中的第1个参数赋值
     51             ps.setInt(1, (page - 1) * Product.PAGE_SIZE);
     52             //对SQL语句中的第2个参数赋值
     53             ps.setInt(2, Product.PAGE_SIZE);
     54             //执行查询操作
     55             ResultSet rs = ps.executeQuery();
     56             //光标向后移动,并判断是否有效
     57             while(rs.next()) {
     58                 //实例化Product
     59                 Product p = new Product();
     60                 //对id属性赋值
     61                 p.setId(rs.getInt("id"));
     62                 //对name属性赋值
     63                 p.setName(rs.getString("name"));
     64                 //对num属性赋值
     65                 p.setNum(rs.getInt("num"));
     66                 //对price属性赋值
     67                 p.setPrice(rs.getDouble("price"));
     68                 //对unit属性赋值
     69                 p.setUnit(rs.getString("unit"));
     70                 //将Product添加到List结合中
     71                 list.add(p);
     72             }
     73             //关闭ResultSet
     74             rs.close();
     75             //关闭PreparedStatement
     76             ps.close();
     77             //关闭Connection
     78             conn.close();
     79         }catch(SQLException e) {
     80             e.printStackTrace();
     81         }
     82         return list;
     83         
     84     }
     85     /**
     86      * 查询记录总数
     87      * @return count记录数
     88      */
     89     public int findCount() {
     90         //总记录数
     91         int count = 0;
     92         //获取数据库连接
     93         Connection conn = getConnection();
     94         //查询总记录数SQL语句
     95         String sql = "select count(*) from tb_product";
     96         try {
     97             //创建Statement
     98             Statement stmt = conn.createStatement();
     99             //查询并获取ResultSet
    100             ResultSet rs = stmt.executeQuery(sql);
    101             //光标向后移动,并判断是否有效
    102             if(rs.next()) {
    103                 //取出id字段的值对总记录赋值
    104                 count = rs.getInt(1);
    105             }
    106             //关闭ResultSet
    107             rs.close();
    108             //关闭Connection
    109             conn.close();
    110         }catch(SQLException e) {
    111             e.printStackTrace();
    112         }
    113         //返回总记录
    114         return count;
    115     }
    116     
    117 }
    BookDao.java代码

    说明:MySQL中分页查询机制关键词limit的说明,具体语法为:select * from 表名 order by id "升序(asc)或降序(desc)" limit arg1,arg2;

    在SQLServes数据库中可以使用top关键字来查询:select top pageSize from "表名" where id not in (select top arg id from "表名");该条语句表示含义:从表中取出前arg条数据,再从表中取出不包含前arg条数据的pageSize条数据。例如:一页显示3条数据,那么第一页就是从表中取出前0条数据,再从表中取出不包含前0条数据的另外三条数据;第二页的数据就是从表中取出前3条数据,再从表中取出不包含取出的前3条数据的另外3条数据。"pageSize表示一页显示的条数",“arg表示从表中取出前几条数据”

    limit arg1,arg2

    参数说明:

    arg1:用于指定查询记录的起始位置。

    arg2:用于指定查询数据所返回的记录数。

    (3)创建一个Servlet ,类名为FindServlet类此类继承了HttpServlet,主要实现了doGet()方法,接收和处理jsp页面中提交来的表单数据,代码如下:

     1 package com.servlet;
     2 import java.io.IOException;
     3 import java.util.List;
     4 import javax.servlet.ServletException;
     5 import javax.servlet.http.HttpServlet;
     6 import javax.servlet.http.HttpServletRequest;
     7 import javax.servlet.http.HttpServletResponse;
     8 import com.bean.BookDao;
     9 import com.bean.Product;
    10 
    11 public class FindServlet extends HttpServlet {
    12     private static final long serialVersionUID = 1L;
    13     
    14     protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
    15         //当前页码
    16         int currPage = 1;
    17         //判断传递页码是否有效
    18         if(request.getParameter("page") != null) {
    19             //对当前页码赋值
    20             currPage = Integer.parseInt(request.getParameter("page"));
    21         }
    22         //实例化ProductDao
    23         BookDao dao = new BookDao();
    24         //查询所有商品信息
    25         List<Product> list = dao.find(currPage);
    26         //将list放置到request中
    27         request.setAttribute("list", list);
    28         //总页数
    29         int pages;
    30         //查询总记录数
    31         int count = dao.findCount();
    32         //计算总页数
    33         if(count % Product.PAGE_SIZE == 0) {
    34             //对总页数赋值
    35             pages = count / Product.PAGE_SIZE;
    36         }else {
    37             //对总页数赋值
    38             pages = count / Product.PAGE_SIZE + 1;
    39         }
    40         //实例化StringBuffer
    41         StringBuffer sb = new StringBuffer();
    42         //通过循环构建分页条
    43         for(int i=1;i<=pages;i++) {
    44             //判断是否为当前页
    45             if(i == currPage) {
    46                 //构建分页条
    47                 sb.append("[" + i + "]");
    48             }else {
    49                 //构建分页条
    50                 sb.append("<a href='FindServlet?page=" + i + "'>" + i + "</a>");
    51             }
    52             sb.append(" ");
    53         }
    54         //将分页条的字符串放置到request中
    55         request.setAttribute("bar", sb.toString());
    56         //转发到product_list.jsp页面
    57         request.getRequestDispatcher("product_list.jsp").forward(request, response);
    58     }
    59 }
    FindServlet.java代码

    注意:分页条在JSP页面中是动态内容,每次查看新页面都要重新构造,所以,实例中将分页的构造放置到Servlet中,以简化JSP页面的代码。

    request.getParameter("page")中的“page”是打开jsp页面时所带的参数,例如:“http://localhost:8080/test.jsp?page=2”此时page的参数就是2。此外“page”也是Http规范中定义好的,无需要再定义,直接通过request.getParameter("page")获取即可。

    在获取查询结果集List与分页条后,FindServlet1分别将这两个对象放置到request中,将请求转发到product_list.jsp页面做出显示.

    (4)创建product_list.jsp页面,通过查询List结果集对象来将结果显示在页面

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <%@ page import="java.util.List" %>
     4 <%@ page import="com.bean.Product" %>
     5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     6 <html>
     7 <head>
     8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     9 <title>所有商品信息</title>
    10 </head>
    11 <body>
    12     <table align="center" width="450px" border="1" height="180px" bordercolor="white" bgcolor="black" cellpadding="1">
    13         <tr bgcolor="white">
    14             <td align="center" colspan="5">
    15                 <h2>所有商品信息</h2>
    16             </td>
    17         </tr>
    18         <tr align="center" bgcolor="#e1ffc1">
    19             <td><b>ID</b></td>
    20             <td><b>商品名称</b></td>
    21             <td><b>价格</b></td>
    22             <td><b>数量</b></td>
    23             <td><b>单位</b></td>
    24         </tr>
    25         <%
    26         List<Product> list = (List<Product>)request.getAttribute("list");
    27         for(Product p:list){
    28         %>
    29         <tr align="center" bgcolor="white">
    30             <td><%=p.getId() %></td>
    31             <td><%=p.getName() %></td>
    32             <td><%=p.getPrice() %></td>
    33             <td><%=p.getNum() %></td>
    34             <td><%=p.getUnit() %></td>
    35         </tr>
    36         <%
    37         }
    38         %>
    39         <tr>
    40             <td align="center" colspan="5" bgcolor="white">
    41                 <%=request.getAttribute("bar") %>
    42             </td>
    43         </tr>
    44         
    45     </table>
    46 </body>
    47 </html>
    product_list.jsp代码

    (5)创建index.jsp页面,在该页面中创建了一个指向FindServlet类的超链接,用来查询商品信息

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>分页数据查询</title>
     8 </head>
     9 <body>
    10     <a href="FindServlet">查看所有商品信息</a>
    11 </body>
    12 </html>
    index.jsp代码

    (6)web.xml中的Servlet配置信息如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
     3   <display-name>Test2</display-name>
     4   <welcome-file-list>
     5     <welcome-file>index.html</welcome-file>
     6     <welcome-file>index.htm</welcome-file>
     7     <welcome-file>index.jsp</welcome-file>
     8     <welcome-file>default.html</welcome-file>
     9     <welcome-file>default.htm</welcome-file>
    10     <welcome-file>default.jsp</welcome-file>
    11   </welcome-file-list>
    12   <servlet>
    13       <servlet-name>FindServlet</servlet-name>
    14       <servlet-class>com.servlet.FindServlet</servlet-class>
    15   </servlet>
    16   <servlet-mapping>
    17       <servlet-name>FindServlet</servlet-name>
    18       <url-pattern>/FindServlet</url-pattern>
    19   </servlet-mapping>
    20 </web-app>
    web.xml代码

    配置完成后运行项目结果:

     

    ---恢复内容结束---

    分页查询

    分页查询是java web开发中经常使用到的技术。在数据库中数据量非常大的情况下,不适合将所有的数据全部显示到一个页面中,同时为了节约程序以及数据库的资源,就需要对数据进行分页查询操作。
    通过JDBC实现分页的方法比较多,而且不同的数据库机制其分页的方式也不同,这里我们介绍典型的两个分页方法。
    1.通过ResultSet的光标实现分页

    该分页方法可以在各种数据库之间通用,但是带来的缺点是占用了大量的资源,不适合在数据库大的情况下使用。
    2.通过数据库机制进行分页

    很多数据库都会提供这种分页机制,例如SQLServer中就提供了top关键字,mysql数据库中提供了limit关键字,用这些关键字都可以设置数据返回的记录数。使用这种分页查询方式可以减少数据库的资源开销,提高程序效率,但是缺点是只适应于一种数据库。

    注:因为第一种不适合在数据量大的情况下使用,所以在实际开发中也不使用该方式来查询数据,我们只对第二种方式做介绍

    例:通过mysql的数据分页机制来实现商品信息的分页查询功能,并将信息显示在jsp页面中

    (1)创建一个商品信息属性Product类,用来保存商品属性,此类为JavaBean

     1 package com.bean;
     2 
     3 public class Product {
     4    public static final int PAGE_SIZE = 2;    //每一页显示几行数据
     5    //编号
     6    private int id;
     7    //名称
     8    private String name;
     9    //价格
    10    private double price;
    11    //数量
    12    private int num;
    13    //单位
    14    private String unit;
    15 public int getId() {
    16     return id;
    17 }
    18 public void setId(int id) {
    19     this.id = id;
    20 }
    21 public String getName() {
    22     return name;
    23 }
    24 public void setName(String name) {
    25     this.name = name;
    26 }
    27 public double getPrice() {
    28     return price;
    29 }
    30 public void setPrice(double price) {
    31     this.price = price;
    32 }
    33 public int getNum() {
    34     return num;
    35 }
    36 public void setNum(int num) {
    37     this.num = num;
    38 }
    39 public String getUnit() {
    40     return unit;
    41 }
    42 public void setUnit(String unit) {
    43     this.unit = unit;
    44 }
    45 }
    46 
    47 Product.java代码
    Product.java代码

    java中一般静态常量我们采用大写字母表示。这是一种java书写规范

    (2)创建BookDao类,此类中主要实现了getConnection()方法连接到数据库的操作以及分页查询所有信息的方法find(int page)、查询记录总数的方法findCount()。代码如下:

      1 package com.bean;
      2 import java.sql.Connection;
      3 import java.sql.DriverManager;
      4 import java.sql.PreparedStatement;
      5 import java.sql.ResultSet;
      6 import java.sql.SQLException;
      7 import java.sql.Statement;
      8 import java.util.ArrayList;
      9 import java.util.List;
     10 public class BookDao {
     11     public Connection getConnection() {
     12         //数据库连接
     13         Connection conn = null;
     14         try {
     15             //加载数据库驱动,注册到驱动管理器
     16             Class.forName("com.mysql.jdbc.Driver");
     17             //数据库连接字符串
     18             String url = "jdbc:mysql://localhost:3306/db_database10";
     19             //数据库用户名
     20             String username = "root";
     21             //数据库密码
     22             String password = "123456";
     23             //创建Connection连接
     24             conn = DriverManager.getConnection(url,username,password);
     25             
     26         }catch(ClassNotFoundException e) {
     27             e.printStackTrace();
     28         }catch(SQLException e) {
     29             e.printStackTrace();
     30         }
     31         return conn;
     32     }
     33     
     34     /**
     35      * 分页查询所有信息
     36      * @param page 页数
     37      * @return List<Product>
     38      */
     39     public List<Product> find(int page){
     40         
     41         //创建List
     42         List<Product> list = new ArrayList<Product>();
     43         //获取数据库连接
     44         Connection conn = getConnection();
     45         //分页查询的SQL语句
     46         String sql = "select * from tb_product order by id desc limit ?,?";
     47         try {
     48             //获取PreparedStatement
     49             PreparedStatement ps = conn.prepareStatement(sql);
     50             //SQL语句中的第1个参数赋值
     51             ps.setInt(1, (page - 1) * Product.PAGE_SIZE);
     52             //对SQL语句中的第2个参数赋值
     53             ps.setInt(2, Product.PAGE_SIZE);
     54             //执行查询操作
     55             ResultSet rs = ps.executeQuery();
     56             //光标向后移动,并判断是否有效
     57             while(rs.next()) {
     58                 //实例化Product
     59                 Product p = new Product();
     60                 //对id属性赋值
     61                 p.setId(rs.getInt("id"));
     62                 //对name属性赋值
     63                 p.setName(rs.getString("name"));
     64                 //对num属性赋值
     65                 p.setNum(rs.getInt("num"));
     66                 //对price属性赋值
     67                 p.setPrice(rs.getDouble("price"));
     68                 //对unit属性赋值
     69                 p.setUnit(rs.getString("unit"));
     70                 //将Product添加到List结合中
     71                 list.add(p);
     72             }
     73             //关闭ResultSet
     74             rs.close();
     75             //关闭PreparedStatement
     76             ps.close();
     77             //关闭Connection
     78             conn.close();
     79         }catch(SQLException e) {
     80             e.printStackTrace();
     81         }
     82         return list;
     83         
     84     }
     85     /**
     86      * 查询记录总数
     87      * @return count记录数
     88      */
     89     public int findCount() {
     90         //总记录数
     91         int count = 0;
     92         //获取数据库连接
     93         Connection conn = getConnection();
     94         //查询总记录数SQL语句
     95         String sql = "select count(*) from tb_product";
     96         try {
     97             //创建Statement
     98             Statement stmt = conn.createStatement();
     99             //查询并获取ResultSet
    100             ResultSet rs = stmt.executeQuery(sql);
    101             //光标向后移动,并判断是否有效
    102             if(rs.next()) {
    103                 //取出id字段的值对总记录赋值
    104                 count = rs.getInt(1);
    105             }
    106             //关闭ResultSet
    107             rs.close();
    108             //关闭Connection
    109             conn.close();
    110         }catch(SQLException e) {
    111             e.printStackTrace();
    112         }
    113         //返回总记录
    114         return count;
    115     }
    116     
    117 }
    BookDao.java代码

    说明:MySQL中分页查询机制关键词limit的说明

    limit arg1,arg2

    参数说明:

    arg1:用于指定查询记录的起始位置。

    arg2:用于指定查询数据所返回的记录数。

    (3)创建一个Servlet ,类名为FindServlet类此类继承了HttpServlet,主要实现了doGet()方法,接收和处理jsp页面中提交来的表单数据,代码如下:

     1 package com.servlet;
     2 import java.io.IOException;
     3 import java.util.List;
     4 import javax.servlet.ServletException;
     5 import javax.servlet.http.HttpServlet;
     6 import javax.servlet.http.HttpServletRequest;
     7 import javax.servlet.http.HttpServletResponse;
     8 import com.bean.BookDao;
     9 import com.bean.Product;
    10 
    11 public class FindServlet extends HttpServlet {
    12     private static final long serialVersionUID = 1L;
    13     
    14     protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
    15         //当前页码
    16         int currPage = 1;
    17         //判断传递页码是否有效
    18         if(request.getParameter("page") != null) {
    19             //对当前页码赋值
    20             currPage = Integer.parseInt(request.getParameter("page"));
    21         }
    22         //实例化ProductDao
    23         BookDao dao = new BookDao();
    24         //查询所有商品信息
    25         List<Product> list = dao.find(currPage);
    26         //将list放置到request中
    27         request.setAttribute("list", list);
    28         //总页数
    29         int pages;
    30         //查询总记录数
    31         int count = dao.findCount();
    32         //计算总页数
    33         if(count % Product.PAGE_SIZE == 0) {
    34             //对总页数赋值
    35             pages = count / Product.PAGE_SIZE;
    36         }else {
    37             //对总页数赋值
    38             pages = count / Product.PAGE_SIZE + 1;
    39         }
    40         //实例化StringBuffer
    41         StringBuffer sb = new StringBuffer();
    42         //通过循环构建分页条
    43         for(int i=1;i<=pages;i++) {
    44             //判断是否为当前页
    45             if(i == currPage) {
    46                 //构建分页条
    47                 sb.append("[" + i + "]");
    48             }else {
    49                 //构建分页条
    50                 sb.append("<a href='FindServlet?page=" + i + "'>" + i + "</a>");
    51             }
    52             sb.append(" ");
    53         }
    54         //将分页条的字符串放置到request中
    55         request.setAttribute("bar", sb.toString());
    56         //转发到product_list.jsp页面
    57         request.getRequestDispatcher("product_list.jsp").forward(request, response);
    58     }
    59 }
    FindServlet.java代码

    注意:分页条在JSP页面中是动态内容,每次查看新页面都要重新构造,所以,实例中将分页的构造放置到Servlet中,以简化JSP页面的代码。

    request.getParameter("page")中的“page”是打开jsp页面时所带的参数,例如:“http://localhost:8080/test.jsp?page=2”此时page的参数就是2。此外“page”也是Http规范中定义好的,无需要再定义,直接通过request.getParameter("page")获取即可。

    在获取查询结果集List与分页条后,FindServlet1分别将这两个对象放置到request中,将请求转发到product_list.jsp页面做出显示.

    (4)创建product_list.jsp页面,通过查询List结果集对象来将结果显示在页面

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <%@ page import="java.util.List" %>
     4 <%@ page import="com.bean.Product" %>
     5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     6 <html>
     7 <head>
     8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     9 <title>所有商品信息</title>
    10 </head>
    11 <body>
    12     <table align="center" width="450px" border="1" height="180px" bordercolor="white" bgcolor="black" cellpadding="1">
    13         <tr bgcolor="white">
    14             <td align="center" colspan="5">
    15                 <h2>所有商品信息</h2>
    16             </td>
    17         </tr>
    18         <tr align="center" bgcolor="#e1ffc1">
    19             <td><b>ID</b></td>
    20             <td><b>商品名称</b></td>
    21             <td><b>价格</b></td>
    22             <td><b>数量</b></td>
    23             <td><b>单位</b></td>
    24         </tr>
    25         <%
    26         List<Product> list = (List<Product>)request.getAttribute("list");
    27         for(Product p:list){
    28         %>
    29         <tr align="center" bgcolor="white">
    30             <td><%=p.getId() %></td>
    31             <td><%=p.getName() %></td>
    32             <td><%=p.getPrice() %></td>
    33             <td><%=p.getNum() %></td>
    34             <td><%=p.getUnit() %></td>
    35         </tr>
    36         <%
    37         }
    38         %>
    39         <tr>
    40             <td align="center" colspan="5" bgcolor="white">
    41                 <%=request.getAttribute("bar") %>
    42             </td>
    43         </tr>
    44         
    45     </table>
    46 </body>
    47 </html>
    product_list.jsp代码

    (5)创建index.jsp页面,在该页面中创建了一个指向FindServlet类的超链接,用来查询商品信息

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>分页数据查询</title>
     8 </head>
     9 <body>
    10     <a href="FindServlet">查看所有商品信息</a>
    11 </body>
    12 </html>
    index.jsp代码

    (6)web.xml中的Servlet配置信息如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
     3   <display-name>Test2</display-name>
     4   <welcome-file-list>
     5     <welcome-file>index.html</welcome-file>
     6     <welcome-file>index.htm</welcome-file>
     7     <welcome-file>index.jsp</welcome-file>
     8     <welcome-file>default.html</welcome-file>
     9     <welcome-file>default.htm</welcome-file>
    10     <welcome-file>default.jsp</welcome-file>
    11   </welcome-file-list>
    12   <servlet>
    13       <servlet-name>FindServlet</servlet-name>
    14       <servlet-class>com.servlet.FindServlet</servlet-class>
    15   </servlet>
    16   <servlet-mapping>
    17       <servlet-name>FindServlet</servlet-name>
    18       <url-pattern>/FindServlet</url-pattern>
    19   </servlet-mapping>
    20 </web-app>
    web.xml代码

    配置完成后运行项目结果:

     

  • 相关阅读:
    字在线中
    关于页面显示层叠问题
    左边竖条
    jquery 动态添加元素事件绑定问题
    工作总结
    多文本输入,内容过多时输入框会自动撑开
    lunix常用命令
    springboot整合es availableProcessors is already set to [2], rejecting [2]
    mysql 主从复制架构
    elastic search 第一次安装 报错记录
  • 原文地址:https://www.cnblogs.com/lihuibin/p/7504518.html
Copyright © 2011-2022 走看看