### JSP + SQL Server 分页代码详解 #### 一、背景介绍 在Web开发中,分页是一项常用的技术,尤其当数据量较大时,通过分页可以提高用户体验并减轻服务器负担。本文将对一个JSP结合SQL Server实现的简单分页代码进行详细解析。 #### 二、核心代码分析 ##### 1. CSS样式定义 ```html <style> .bb{ background-color:#f9fbfa; border-bottom-color:none; border-left-color:none; border-right-color:none; border-top-color:none; } .btn2{padding:2404;font-size:12px;height:23;background-color:#f9fbfa;border-width:0;} </style> ``` - **`.bb`**:定义了一个名为“bb”的类,用于设置背景颜色和边框颜色。 - **`.btn2`**:定义了按钮的样式,包括填充、字体大小、高度等。 ##### 2. JSP页面配置 ```xml <%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="GB18030"%> ``` - **`language="java"`**:指定该页面使用的编程语言为Java。 - **`import="java.util.*,java.sql.*"`**:导入Java的集合库和SQL相关的类。 - **`pageEncoding="GB18030"`**:设定页面编码为GB18030。 ##### 3. 数据库连接与查询 ```java Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String strConn="jdbc:sqlserver://localhost:1433;DatabaseName=abc"; conn=DriverManager.getConnection(strConn,"sa","123"); ``` - **`Class.forName`**:加载SQL Server的JDBC驱动。 - **`String strConn`**:定义数据库连接字符串,其中包含服务器地址、端口及数据库名。 - **`DriverManager.getConnection`**:通过JDBC建立数据库连接。 ```java String strSql="SELECT card1,card2,card3,card4 FROM mytable"; stmt=conn.prepareStatement(strSql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); rsAll=stmt.executeQuery(); ``` - **`PreparedStatement`**:预编译SQL语句,提高执行效率。 - **`executeQuery`**:执行查询语句,返回结果集。 ##### 4. 分页逻辑实现 - **获取当前页数**: - 首先判断URL参数`page`是否存在,如果不存在则默认为第一页(1)。 - 如果存在,则将字符串转换为整型,并检查是否超出范围。 - **计算总页数**: - 使用`last()`方法将结果集定位到最后一条记录,通过`getRow()`获取记录总数。 - 计算出每页显示的记录数`pagesize`(此处为17)。 - 通过除法和取余运算计算总页数。 - **定位结果集**: - 将结果集定位到当前页的第一条记录。 - 循环遍历当前页的所有记录,并显示数据。 ##### 5. 显示数据 在循环中,通过`getString`方法获取每条记录中的字段值,并通过表单提交的方式展示数据。 ```html <td height="35"> <form name="myfrom" action="./fill.jsp"> <input type="text" value="<%=rsAll.getString("card1")%>" name="card" style="display:none"> <input name="" class="btn2" title="<%=rsAll.getString("card1")%>" type="submit" value="<%=rsAll.getString("card1")%>"> </form> </td> ``` - 每个字段都以隐藏输入框的形式存储,并通过按钮触发表单提交动作。 #### 三、代码改进建议 1. **异常处理**:增加对数据库操作的异常处理机制,避免程序因错误而崩溃。 2. **参数验证**:对用户输入进行合法性验证,防止SQL注入攻击。 3. **资源释放**:确保所有打开的资源(如数据库连接、结果集等)被正确关闭,避免资源泄露。 4. **国际化支持**:考虑到不同地区用户的访问需求,可以考虑增加多语言支持。 5. **性能优化**:对于大量数据的查询,可以考虑使用索引或优化SQL语句来提高查询效率。 6. **用户体验**:增加分页导航栏,方便用户切换不同的页面。 #### 四、总结 本文详细介绍了JSP结合SQL Server实现分页的基本原理和代码实现细节。通过对代码逐行解析,不仅帮助读者理解了具体实现方式,还提出了可能存在的问题以及改进方案,为进一步优化和扩展提供了思路。
.bb{
background-color:#f9fbfa;
border-bottom-color:none;
border-left-color:none;
border-right-color:none;
border-top-color:none;
}
.btn2 {padding: 2 4 0 4;font-size:12px;height:23;background-color:#f9fbfa;border-width:0;}
</style>
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="GB18030"%>
<link href="button.css" rel="stylesheet" type="text/css" />
<%
Connection conn = null;
ResultSet rsAll = null;
PreparedStatement stmt = null;
try {
//--开始创建连接--
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String strConn = "jdbc:sqlserver://localhost:1433;DatabaseName=abc";
conn = DriverManager.getConnection(strConn, "sa","123");
//--开始查询所有数据--
request.setCharacterEncoding("gb18030");
String strSql = "SELECT card1,card2,card3,card4 FROM mytable";
stmt = conn.prepareStatement(strSql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rsAll = stmt.executeQuery();
%>
<!--输出表格头-->
<table width="100%" border=0 cellspacing="0" align="center">
- 若弦之初2014-04-29还好吧,需要修改。
- 粉丝: 3
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助