当前位置:首页 > JavaWeb编程技术(沈泽刚版)教材习题参考答案
Java实验指导与习题解析 2. 答:传统的数据库连接的一般步骤是:(1)加载JDBC驱动程序。(2)建立连接对象。(3)创建语句对象,语句对象有3种:Statement、PreparedStatement和CallableStatement。
100 (4)执行SQL语句得到结果集对象,调用ResultSet的有关方法就可以完成对数据库的操作。(5)关闭建立的各种对象。
缺点是每次访问数据库都要建立连接对象,请求结束需关闭连接对象。这将耗费大量的时间,可能导致增大请求的响应时间。
3. 答:连接Oracle数据库代码如下。
Class.forName(\
String dburl = \
Connection conn = Drivermanager.getConnection(dburl, \
上述代码中,oracle.jdbc.driver.OracleDriver为JDBC驱动程序名,jdbc:oracle:thin:@ 127.0.0.1:1521:ORCL为JDBC URL。
4. 答:使用数据源是目前Web应用开发中建立数据库连接的首选方法。这种方法是事先建立如干连接对象,存放在连接池中。当应用程序需要一个连接对象时就从连接池中取出一个,使用完后再放回连接池。这样就可避免每次请求都创建连接对象,从而降低请求的响应时间,提高效率。
使用数据源建立连接是通过JNDI技术实现的。这需要首先配置数据源(可以是局部数据源或全局数据源),然后在应用程序中通过Context对象查找数据源对象。假设已经配置了名为sampleDS的数据源,建立连接代码如下:
Context context = new InitialContext();
DataSource dataSource = context.lookup(\ Connection dbConnection = dataSource.getConnection();
5. 答:可滚动的ResultSet是指在结果集对象上不但可以向前访问结果集中的记录,还可以向后访问结果集中的记录。可更新的ResultSet是指不但可以访问结果集中的记录,还可以通过结果集对象更新数据库。
要创建可滚动、可更新的ResultSet对象,必须使用Connection对象的带两个参数的createStatement()方法创建的Statement,第一个参数用下面两个常量之一:
? ResultSet.TYPE_SCROLL_SENSITIVE
? ResultSet.TYPE_SCROLL_INSENSITIVE
第二个参数使用下面常量:
? ResultSet.CONCUR_UPDATABLE
6. 参考程序如下:
package com.control; import java.io.*; import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class BookQueryServlet extends HttpServlet{
Connection dbconn; public void init() {
String driver = \
String dburl = \ String username = \ String password = \ try{
Class.forName(driver);
dbconn = DriverManager.getConnection(
dburl,username,password); }catch(ClassNotFoundException e1){ }catch(SQLException e2){} }
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
response.setContentType(\ PrintWriter out = response.getWriter(); out.println(\ out.println(\ try{
String sql=\
Statement stmt = dbconn.createStatement(); ResultSet rst = stmt.executeQuery(sql); while(rst.next()){
out.println(\ out.println(\ out.println(\ out.println(\
out.println(\ }
}catch(SQLException e){ e.printStackTrace(); }
out.println(\
out.println(\ }
public void destroy(){ try {
dbconn.close(); }catch(Exception e){ e.printStackTrace(); } } }
7. JSP页面如下: <%@ page contentType=\ <%@ page import=\
101 第 4 章 Java Web编程习题解析 Java实验指导与习题解析 <% String driver = \ String dburl = \ String username = \ String password = \ try{Class.forName(driver);
Connection dbconn = DriverManager.getConnection( dburl,username,password); DatabaseMetaData dbmd = dbconn.getMetaData();
out.println(\数据库名:\
out.println(\数据库版本:\ out.println(\连接的用户:\ out.println(\数据库URL:\
out.println(\驱动程序名:\
out.println(\驱动程序版本:\ }catch(ClassNotFoundException e1){ out.println(e1); }catch(SQLException e2){ out.println(e2); } %>
102 8. JSP页面如下:
<%@ page contentType=\ <%@ page import=\
<%String driver = \
String dburl = \ String username = \ String password = \ try{
Class.forName(driver);
Connection dbconn = DriverManager.getConnection( dburl,username,password); String sql=\ Statement stmt = dbconn.createStatement(); ResultSet rst = stmt.executeQuery(sql);
ResultSetMetaData rstmd = rst.getMetaData();
out.println(\结果集列数:\ out.println(\第3列标题:\ out.println(\第3列名:\ out.println(\第3列类型:\
out.println(\第3列类型名:\ }catch(ClassNotFoundException e1){ out.println(e1); }catch(SQLException e2){ out.println(e2);
} %>
9. 按教材7.7.2节建立局部或全局数据源sampleDS。创建程序7.9的CustomerBean.java程序和程序7.10的SampleDAO.java程序。
SelectCustomerServlet.java代码如下:
package com.control;
import java.io.*; import java.sql.*; import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*; import com.model.CustomerBean; import com.model.SampleDAO;
public class SelectCustomerServlet extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{ SampleDAO dao = new SampleDAO();
ArrayList
RequestDispatcher view = getServletContext().
getRequestDispatcher(\
view.forward (request,response); } }
displayCustomer.jsp页面代码如下:
<%@ page contentType=\
<%@ page import=\
ArrayList
(ArrayList
for(CustomerBean cb : custs){
out.println(cb.getCustName() + \
+ cb.getPhone() + \
} %>
10. 首先在SampleDAO类中定义下面两个字符串常量: private static final String DELETE_SQL = \private static final String UPDATE_SQL = 103 第 4 章 Java Web编程习题解析
共分享92篇相关文档