第一节 分页概述
分页是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");