自己建网站难吗,如何进行搜索引擎的优化,怎么查企业注册信息,公司网站工商备案怎么做最近卡了一个功能就是分页#xff0c;查了很多资料#xff0c;分页大概是两种类型#xff1a;一种是把数据库的东西全部查出来然后放在session里#xff0c;用list一页一页传到页面#xff0c;这样的消耗比较大;另一种就是使用sql语句的limit来进行数据库分页查询。我使用… 最近卡了一个功能就是分页查了很多资料分页大概是两种类型一种是把数据库的东西全部查出来然后放在session里用list一页一页传到页面这样的消耗比较大;另一种就是使用sql语句的limit来进行数据库分页查询。我使用的是后者。 大致逻辑 (1)需要currentPagecount属性。 (2)需要注意current不能点击。 (3)全使用a标签进行页面跳转。并附上请求页码。 (4)初始化查询0页并用filter装入list中在页面显示的时候方便遍历。 (5)过程页面加载-filter查询初始数据装入request-页面遍历并计算出页码请求附带在url后-请求发出后filter使用getParameter获得页码对数据库进行查询并装入list中-页面加载的时候遍历list出现新数据。 页面如下 % page languagejava importjava.util.* pageEncodingutf-8%
%page contentTypetext/html; charsetutf-8 %% taglib prefixc urihttp://java.sun.com/jsp/jstl/core %
!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd
html
head
meta http-equivContent-Type contenttext/html; charsetUTF-8
title分页列表/title
/head
body
center%int currenPage((Integer)request.getAttribute(currenPage)).intValue();int count((Integer)request.getAttribute(count)).intValue();%table border1pxtrtdID/tdtd用户名/tdtd性别/tdtd年龄/td/trc:forEach varusr items${list}trtd${usr.id}/tdtd${usr.name}/tdtd${usr.sex}/tdtd${usr.age}/td/tr/c:forEach/table%int prePagecurrenPage-1;if(currenPage1)prePagecurrenPage;%a hrefDemo2.jsp?%currenprePage%上一页/a %int i1;int endcurrenPage5;if(currenPage5){icurrenPage-5;}if(endcount/10){endcount/10;System.out.println(endend);}for(;iend;i){System.out.println(ii);if(i (currenPage)){%[%currenPage%] % }else{%a hrefDemo2.jsp?%curreni%%i%/a % }}%%int nextPagecurrenPage1;if(nextPagecount/10)nextPage--;%a hrefDemo2.jsp?%currennextPage%下一页/a /center
/body
/html Filter如下 package filter;import java.io.IOException;
import java.util.List;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;import dividedpage.SelectService;
import model.test_u;/*** Servlet Filter implementation class divideFilter*/
WebFilter(/Demo2.jsp)
public class divideFilter implements Filter {private static final long serialVersionUID 1L;private int start0;private int size10;private SelectService ss;private Listtest_u list;/*** Default constructor. */public divideFilter() {// TODO Auto-generated constructor stubss new SelectService();}/*** see Filter#destroy()*/public void destroy() {// TODO Auto-generated method stub}/*** see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)*/public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {// TODO Auto-generated method stub// place your code hereString curequest.getParameter(curren);if(cu!null){startInteger.parseInt(cu);}System.out.println(start);list ss.selectLimit((start-1)*size, size);int count ss.getConut(); request.setAttribute(list, list);request.setAttribute(count, count);request.setAttribute(currenPage, start);// pass the request along the filter chainSystem.out.println(执行过滤);chain.doFilter(request, response);}/*** see Filter#init(FilterConfig)*/public void init(FilterConfig fConfig) throws ServletException {// TODO Auto-generated method stub}} JDBC如下 package DAO;
import java.sql.*;
public class Connect2DB {String drivercom.mysql.jdbc.Driver; Connection con; String urljdbc:mysql://localhost:3306/MyData; String userroot; String pwdqwert123;public Connect2DB(){connection2MYSQL() ;}public void connection2MYSQL() { try { Class.forName(driver); conDriverManager.getConnection(url,user,pwd); if(!con.isClosed()) System.out.println(连接成功); } catch (Exception e) { e.printStackTrace(); } }public Connection getConn(){return con;}
} package DAO;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import model.test_u;public class OperatorDB {private Connection con;public OperatorDB(){connew Connect2DB().getConn();}public void addUser(test_u u){String sqlinsert into test_u(id,name,sex,age) values(?,?,?,?);PreparedStatement ps; try {pscon.prepareStatement(sql);ps.setInt(1, u.getId());ps.setString(2, u.getName());ps.setString(3, u.getSex());ps.setString(4, u.getAge());ps.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void delUserById(int id){String sqldelete from test_u where stu_id ?;PreparedStatement ps; try {pscon.prepareStatement(sql);ps.setInt(1, id);ps.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public Listtest_u selectLimit(int start,int size){String sql select * from test_u limit ?,?;Listtest_u resultnew ArrayListtest_u();PreparedStatement ps;try {ps con.prepareStatement(sql);ps.setInt(1, start);ps.setInt(2, size);ResultSet rs ps.executeQuery();while(rs.next()){int idrs.getInt(id);String namers.getString(name);String sexrs.getString(sex);String agers.getString(age);test_u tnew test_u(id,name,sex,age);result.add(t);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return result;}public int getCount(){String sqlSELECT COUNT(*) FROM test_u;int rowCount 0;try {PreparedStatement ps;ps con.prepareStatement(sql);ResultSet rs ps.executeQuery(sql);rs.next(); rowCount rs.getInt(1);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} return rowCount;}public void close(){try {if(!con.isClosed())con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
} Service如下 package dividedpage;import java.util.List;import DAO.OperatorDB;
import model.test_u;public class SelectService {public Listtest_u selectLimit(int start,int size){OperatorDB odbnew OperatorDB();Listtest_u listodb.selectLimit(start, size);odb.close();return list;}public int getConut(){OperatorDB odbnew OperatorDB();int count odb.getCount();odb.close();return count;}
} Bean如下 package model;public class test_u {private int id;private String name;private String sex;private String age;public test_u(){}public test_u(int id, String name, String sex, String age) {super();this.id id;this.name name;this.sex sex;this.age age;}public int getId() {return id;}public void setId(int id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex sex;}public String getAge() {return age;}public void setAge(String age) {this.age age;}} 数据表如下插入100条记录 感觉代码很冗余页面不够干净不过也训练了分页的思想。 下列标签栏全是a标签上一页current-1下一页current1需要注意页面边界最大最小页。查询limit大概是current-1*sizesize这样的公式。 目录树如下 JSTL需要下载个jar包很容易找到添加他们进path就好。 转载于:https://www.cnblogs.com/chentingk/p/5825957.html