初学jsp心得
在jdk1.2.2和jswdk-1.0的winnt4.0中文版测试环境下,让我们深入一下Java编程。对于许多新手来说,Java的大小写敏感性是一个常见的挑战,尤其是在初次尝试调试JSP时,高达50%以上的编译错误往往源于此。
在Java中,每一个方法的调用都必须加上括号,这是初学者常常忽视的一点。例如,获取一个请求的参数,如`title = request.getParameter("title").trim();`。
对于JSP与ASP之间的参数获取差异,JSP并没有form和queryString的明确区分,都是通过`request.getParameter("XXXX")`来获取。尽管JSP提供了`request.getQueryString()`方法,但在实际测试中,如访问`test.jsp?id=1&page=20`,你会发现获取的参数是整个查询字符串`id=1&page=20`。
当URL和表单拥有相同的参数名称时,JSP的处理方式优先从URL获取参数。例如,在一个测试表单中:
,尽管输入框的名称为"id",但最终获取的值依然来自URL的"id"。这种处理方式与ASP有所不同,各有其特点。在JSP中处理汉字时可能会遇到乱码问题。例如,在中文NT环境下尝试输出语句如`<%="你好"%>`或`out.print("你好");`可能会得到乱码。解决这个问题的方法是对字符串变量进行编码。例如,通过以下代码可以得到正确的输出:`<% String title="你好"; byte[] tmpbyte=title.getBytes("ISO8859_1"); title=new String(tmpbyte); out.print(title); %>` 或者使用 `<%=title%>`。在SQL语句中处理汉字时,如`select from test where title='谁是傻瓜'`,在特定的数据库驱动下可能需要特别处理。比如在使用IBM的JDBC直接驱动时,对SQL语句中的汉字进行编码可以解决某些问题。这可能与中文NT环境有关,在其他环境下可能不存在这个问题。
在JSP中判断字符串时,不能使用简单的相等判断,因为String是一个类实例。例如,对于语句`String str1="我是傻瓜"; String str2="我是傻瓜";`,直接使用`==`判断会得到错误的结果。正确的做法是使用`str1pareTo(str2)`来进行字符串比较。这对于习惯了传统语言的朋友可能需要一些时间来适应。
至于如何判断数据库是否为空,这需要根据具体的数据库操作和查询语句来判断。通常,可以通过执行一个查询语句并检查返回的结果集来判断数据库是否为空。如果结果集为空,那么数据库在该查询下是空的。
在数据库查询操作中,执行结果集的处理是一个重要环节。当我们执行SQL查询后,返回的结果集需要通过特定的方法进行处理。在Java的JDBC操作中,`result = stmt.executeQuery(sql)`这段代码执行后,游标会处于一个不明确的状态,不能直接进行状态判断或取值。要想正常使用结果集,必须调用`next()`方法。
接下来,让我们深入在JSP中实现分页的逻辑。在JSP中,“page”是一个关键字,不能作为变量使用。为了实现分页显示,我们需要进行一系列的操作。
建立数据库连接。这部分代码位于一个单独的JSP文件`conn.jsp`中,包含了驱动加载、数据库连接等核心操作。
然后,在另一个JSP文件`query.jsp`中,我们引入`conn.jsp`并处理分页逻辑。这里涉及的关键点有:计算总页数、构建分页SQL语句、执行查询并处理结果集。
```jsp
<%@ page language="java" contentType="text/html; charset=gb2312" %>
<%@ include file="conn.jsp" %>
<%
int pagesize = 10; // 每页显示的记录数
int currentPage = paginationBean.getCurrentPage(); // 获取当前页码
String sql = buildPaginationSQL(currentPage, pagesize); // 构建分页SQL语句
try {
ResultSet result = stmt.executeQuery(sql); // 执行查询
while (result.next()) { // 遍历结果集
String name = result.getString("name"); // 获取数据列的值
out.print(name); // 输出数据
}
result.close(); // 关闭结果集
} catch (SQLException ex) {
out.print("数据库查询错误: " + ex.getMessage()); // 输出错误信息
}
%>
<% int totalPages = paginationBean.getTotalPages(); // 获取总页数 -->
<% if (totalPages > 1) { %>
<% for (int i = 1; i <= totalPages; i++) { %>
<% if (i == currentPage) { %>
<%= i %>
<% } else { %>
<% } %>
<% } %>
<% } %>
```
以上代码只是一个简化示例,实际的分页逻辑可能需要一个专门的JavaBean来处理,如计算总页数、构建SQL语句等复杂操作。对于数据库查询的分页处理,还需要考虑数据库本身的特性以及使用的JDBC驱动是否支持某些特定的方法(如绝对定位等)。如果存在兼容性问题,可能需要考虑使用其他方法实现分页,如使用SQL的LIMIT子句等。对于输出内容部分和样式部分可以根据实际需求进行调整和优化。
编程语言
- 初学jsp心得
- PHP实现一个多功能购物网站的案例
- Vue.js实现简单动态数据处理
- 轻松5句话解决JavaScript的作用域
- PHP观察者模式实例分析【对比JS观察者模式】
- 使用jQuery实现购物车结算功能
- javascript异步处理与Jquery deferred对象用法总结
- 原生js 封装get ,post, delete 请求的实例
- php实现与erlang的二进制通讯实例解析
- php文件包含的几种方式总结
- Nodejs连接mysql并实现增、删、改、查操作的方法详
- 学习JavaScript正则表达式
- jQuery实现每隔几条元素增加1条线的方法
- JS正则表达式详解[收藏]
- setTimeout函数的神奇使用
- PHP jpgraph库的配置及生成统计图表-折线图、柱状