1、共享连接数据库的代码
连接数据库的基本过程:
1)加载驱动程序;
2)创建连接;
3)编写SQL语句;
4)创建语句对象;
5)对参数赋值;
6)执行SQL 语句;
7)对结果进行处理;
8)关闭对象。
对于不同的SQL的执行,不同的地方:
SQL语句;
参数;
结果的处理方式;
提取相同部分分别编写成方法:
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
String driverClass = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:bookstore";
// 完成连接的创建,相当于第1.2步
public Connection getConnection() throws Exception{
Class.forName(driverClass); // 加载驱动程序
if(con == null)
con = DriverManager.getConnection(url,"","");
return con;
}
// 创建语句对象
public PreparedStatement createStatement(String sql) throws Exception{
stmt = getConnection().prepareStatement(sql);
return stmt;
}
// 执行有结果集返回的方法
public ResultSet executeQuery() throws Exception{
rs = stmt.executeQuery();
return rs;
}
// 执行没有结果集返回的方法
public int executeUpdate() throws Exception{
return stmt.executeUpdate();
}
// 关闭对象
public void close(){
if(rs != null)
try{ rs.close(); }catch(Exception e){}
if(stmt != null)
try{ stmt.close(); }catch(Exception e){}
if(con != null)
try{ con.close(); }catch(Exception e){}
}
2、修改上一次课的添加功能,使用这些共享方法
String sql = "insert into usertable2 values(?,?,?,?,?,?,?)";
boolean success = true;
try{
// 创建语句对象
createStatement(sql);
// 对SQL语句中参数赋值
stmt.setString(1,username);
stmt.setString(2,userpass);
stmt.setString(3,sex);
stmt.setString(4,fav);
stmt.setString(5,degree);
stmt.setString(6,comment);
stmt.setString(7,email);
// 执行SQL语句
int n = executeUpdate();
// 执行没有结果集返回的SQL语句使用executeUpdate方法,方法的返回值是整数,表示操作成功的记录数
if(n==0)
success = false;
}catch(Exception e){
success = false;
System.out.println(e.getMessage());
}finally{
close();
}
return success;
3、查询所有图书
1)创建图书表
create table books(
bookid varchar(10) primary key,
bookname varchar(30),
author varchar(20),
price float,
publisher varchar(20)
)
插入一些模拟数据
insert into books values('00001','Java','zhangsan',20,'电子工业')
insert into books values('00002','JSP','lisi',22,'人民邮电')
insert into books values('00003','Java EE','wang',30,'人民邮电')
2)V部分
V主要与人进行交互,要考虑输入和输出
输入:在导航条中添加“查看所有图书”的超链。
<a href="findAllBooks">显示所有图书</a>
输出:显示所有图书信息的JSP文件。
文件名:books.jsp
文件内容:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ include file="header.jsp"%>
<tr>
<td>
<table align="center" border="1">
<tr>
<td>图书编号</td><td>图书名称</td><td>作者</td><td>价格</td><td>出版社</td>
</tr>
<!-- c:forEach用于循环控制,items属性指出要循环遍历的集合,var定义一个循环变量,表示集合中的一个元素 -->
<c:forEach var="book" items="${books}">
<tr>
<td>${book.bookid}</td>
<td>${book.bookname}</td>
<td>${book.author}</td>
<td>${book.price}</td>
<td>${book.publisher}</td>
</tr>
</c:forEach>
</table>
</td>
</tr>
</table>
3)M部分
完成功能:从数据库中查询所有的图书。
文件名:BookBean.java
文件内容:
package bean;
import java.sql.*;
import java.util.ArrayList;
public class BookBean extends Base{
// 描述图书的属性
private String bookid;
private String bookname;
private String author;
private float price;
private String publisher;
// 编写对乘员进行操作的方法
public void setBookid(String bookid){
this.bookid = bookid;
}
public String getBookid(){
return bookid;
}
public void setBookname(String bookname){
this.bookname = bookname;
}
public String getBookname(){
return bookname;
}
public void setAuthor(String author){
this.author = author;
}
public String getAuthor(){
return author;
}
public void setPrice(float price){
this.price = price;
}
public float getPrice(){
return price;
}
public void setPublisher(String publisher){
this.publisher = publisher;
}
public String getPublisher(){
return publisher;
}
public ArrayList findAllBooks(){
ArrayList books = new ArrayList();
String sql = "select * from books";
try{
createStatement(sql);
rs = executeQuery();
// 使用while循环遍历结果集
while(rs.next())
{
// 使用rs的getString方法,以字符串的形式获取第一列,参数也可以是列的名字
// 可以得到当前记录的每一列
String tempBookid = rs.getString(1);
String tempBookname = rs.getString(2);
String tempAuthor = rs.getString(3);
float tempPrice = rs.getFloat(4);
String tempPublisher = rs.getString(5);
// 创建图书对象
BookBean book = new BookBean();
book.setBookid(tempBookid);
book.setBookname(tempBookname);
book.setAuthor(tempAuthor);
book.setPrice(tempPrice);
book.setPublisher(tempPublisher);
// 把书添加到链表中
books.add(book);
}
}catch(Exception e){
System.out.println(e.toString());
}finally{
close();
}
return books;
}
}
4)C部分
控制器:4句话。本功能只用到3句。
文件名:FindAllBooks。
文件内容:
package servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import bean.*;
import java.util.ArrayList;
public class FindAllBooks extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
{
// 第二句话:调用JavaBean,创建对象、初始化、然后调用方法
BookBean book = new BookBean();
ArrayList books = book.findAllBooks();
// 第三句话:向页面传递信息,第一个参数是使用的名字,应该和显示时候使用的名字一致,第二个参数传递的值本身
request.setAttribute("books",books);
// 第四句话:转向响应界面
RequestDispatcher rd = request.getRequestDispatcher("books.jsp");
rd.forward(request,response); // 完成跳转
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
{
doGet(request,response);
}
}
在web.xml中进行配置
<servlet>
<servlet-name>findAllBooks</servlet-name>
<servlet-class>servlet.FindAllBooks</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>findAllBooks</servlet-name>
<url-pattern>/findAllBooks</url-pattern>
</servlet-mapping>
分享到:
相关推荐
第7章 动态网站之灵魂 ——数据库应用开发 7.1 本章学习任务 7.1.1 本章知识体系. 7.1.2 实例开发任务 7.2 My SQL数据库的安装与使用 7.2.1 安装并配置MyS QL 7.2.2 安装MySQLGUITool 7.2.3 连接MySQLAdministrator....
Java Web基础入门第七十九讲 Filter(过滤器)——Filter(过滤器)常见应用(三):权限管理系统(下)-附件资源
全书共分4篇19章,其中,第一篇为“起步篇”,主要包括开启Java Web之门、不可不知的客户端应用技术、驾驭Java Web开发环境、Java Web开发必修课之JSP语法等内容;第二篇为“核心篇”,主要包括程序开发效率之利器...
6.7 获取请求消息的实体内容 6.8 利用请求域属性传递信息 6.9 请求参数的中文读取问题 6.10 思考与实践 第7章 会话与状态管理 7.1 Web应用中的会话与会话状态 7.2 Cookie 7.3 在...
第6章介绍了几个Java的高级应用,包括多线程、网络编程和GUI编程。多线程,介绍Java如何对多线程提供支持,以及如何使用Java编写多线程应用;网络编程,介绍如何通过HTTP协议访问Web应用,如何通过Socket编程实现C/S...
第7堂课 字符串处理 189 第2部分 提高篇 第8堂课 类的继承与多态特性 219 第9堂课 其他类特性与异常处理 257 第10堂课 swing编程基础 283 第11堂课 多线程编程 319 第12堂课 事件处理的应用 345 第13堂课 ...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
第5章 千里之行始于足下——第一个应用HelloWorld 5.1 HelloWorld应用分析 5.1.1 新建一个Android工程 5.1.2 填写工程的信息 5.1.3 编程实现 5.1.4 运行项目 5.2 调试项目 5.2.1 设置断点 5.2.2 Debug项目 5.2.3 ...
第5章 千里之行始于足下——第一个应用HelloWorld 5.1 HelloWorld应用分析 5.1.1 新建一个Android工程 5.1.2 填写工程的信息 5.1.3 编程实现 5.1.4 运行项目 5.2 调试项目 5.2.1 设置断点 5.2.2 Debug项目 5.2.3 ...
第5章 千里之行 始于足下——第一个应用helloworld 52 5.1 helloworld应用分析 52 5.1.1 新建一个android工程 52 5.1.2 填写工程的信息 52 5.1.3 编程实现 53 5.1.4 运行项目 54 5.2 调试项目 ...
第7章 组织程序 101 7.1 模块 102 7.1.1 导入可用模块 102 7.1.2 通过已有模块创建新模块 102 7.1.3 从命令行开始使用模块 104 7.1.4 改变导入方式 106 7.2 包 106 7.3 模块和包 108 7.3.1 将所有内容引入当前 作用...
14.1.4 豆瓣网API快速入门 14.1.5 豆瓣网APIJava库介绍 14.2 豆瓣网(Web2.0)客户端设计 14.2.1 客户端功能规划设计 14.2.2 UI和交互流程设计 14.2.3 数据存储设计 14.3 豆瓣网(Web2.0)客户端实现 14.3.1 申请APIKey ...
第5章 千里之行始于足下——第一个应用HelloWorld 5.1 HelloWorld应用分析 5.1.1 新建一个Android工程 5.1.2 填写工程的信息 5.1.3 编程实现 5.1.4 运行项目 5.2 调试项目 5.2.1 设置断点 5.2.2 Debug项目 5.2.3 ...
第5章 千里之行 始于足下——第一个应用HelloWorld 52 5.1 HelloWorld应用分析 52 5.1.1 新建一个Android工程 52 5.1.2 填写工程的信息 52 5.1.3 编程实现 53 5.1.4 运行项目 54 5.2 调试项目 ...
第7章 使用SQL查询检索数据 7.1 SELECT语句 7.1.1 使用WHERE子句 7.1.2 格式化SQL命令 7.2 在较复杂的WHRER子句中使用运算符 7.2.1 DISTINCT运算符 7.2.2 TOP运算符 7.2.3 比较运算符 7.2.4 CHAR和VARCHAR...
第7 章 Spring Boot 的Web 开发 170 7.1 Spring Boot 的Web 开发支持 170 7.2 Thymeleaf 模板引擎 171 7.2.1 Thymeleaf 基础知识 171 7.2.2 与Spring MVC 集成 174 7.2.3 Spring Boot 的Thymeleaf 支持 175 7.2.4 ...