学习——如何实现分页

第一节 分页概述

分页是web应用程序非常重要的一个技术。数据库中的数据可能是成千上万的,不可能把这么多的数据一次显示在浏览器上面。一般根据每行数据在页面上所占的空间每页显示若干行,比如一般20行是一个比较理想的显示状态。

1.1 分页实现思路

分页的思路

对于海量的数据查询,需要多少就取多少,显然是最佳的解决方法,假如某个表中有200万条记录,第一页取前20条,第二页取21~40条记录。

select * from 表名 order by id limit 0,20 ;

select * from 表名 order by id limit 20,20;

select * from 表名 order by id limit 40,20;

  • pageSize每页显示多少条记录

  • pageIndex 当前页数

  • limit((pageIndex-1)*pageSize,pageSize) 总页数

1.2 分页代码实现

总结:

分页的重难点是查询之后再带着分页功能
1.默认当用户第一次进来时,就去执行模糊查询,“%%”
2.一定要想办法去解决查询之后条件的展示查询条件

第二节:乱码问题的处理

如何处理中文参数

2.1 为什么表单中会产生中文乱码

产生乱码,就是因为服务器和客户端沟通的编码不一致造成的,因此解决的办法是:在客户端和服务器之间设置一个统一的编码,之后就按照此编码进行数据的传输和接收

2.2 GET中文乱码

在Tomcat7及以下:

客户端以UTF-8的编码传输数据到服务器端,而服务器端的request对象使用的是ISO8859-1这个字符编码来接收数据,服务器和客户端沟通的编码不一致因此才会产生中文乱码的。解决办法:在接收到数据后,先获取request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题。

name=new String(name.getBytes(“ISO-8859-1”),“UTF-8”);

Tomcat8的版本中GET基本就不会乱码了,因为服务器对url的编码格式可以进行自动转换
解决get中文乱码的代码:

Servlet implementation class HelloServlet
演示Servlet的GET请求,中文乱码的问题

@WebServlet("/GETServlet")
public class GetServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

@see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	//获取表单提交的姓名
	String name=request.getParameter("name");
	name=new String(name.getBytes("ISO-8859-1"),"UTF-8");
	//获取年龄
	String age=request.getParameter("age");
	//服务端输出打印
	System.out.println(request.getRemoteAddr()+"发来信息:姓名:"+name+"---->年龄:"+age);
}

 @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	// TODO Auto-generated method stub
	doGet(request, response);
}

}

2.3 POST乱码

由于客户端是以UTF-8字符编码将表单数据传输到服务器端的,因此服务器也需要设置以UTF-8字符编码进行接收,要想完成此操作,服务器可以直接使用从ServletRequest接口继承而来的"setCharacterEncoding(charset)"方法进行统一的编码设置。

解决POST中文乱码代码如下:

/**
 * Servlet implementation class HelloServlet
 * 演示Servlet的GET请求,中文乱码的问题
 * 
 */
@WebServlet("/GETServlet")
public class GetServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置请求参数的编码格式--对GET无效
        request.setCharacterEncoding("UTF-8");
		//获取表单提交的信息
		String name=request.getParameter("msg");
		//服务端输出打印
		System.out.println("发来信息:"+msg);
	}
}

2.4 Servlet输出中文

2.4.1 页面返回乱码原因

浏览器识别不到返回的中文是什么编码格式,就会默认使用GB2312,如果返回的是UTF-8格式的那么在浏览器上就会显示乱码的问题

2.4.2 如何解决内容中的乱码

response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");//输出一个完整的网页

总结起来:

遇到乱码问题时,你首先要确认是不是从数据库中读取,如果读取数据库时没有乱码,就可以确定是浏览器和服务器之间的传输出现乱码

request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");

如果是数据库中读取出现乱码
确定数据库编码方式,然后在url?setCharacterEncoding=utf-8

如果是tomcat7出现get乱码,那就另说
name=new String(name.getBytes("ISO-8859-1"),"UTF-8");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值