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>
分享到:
相关推荐
### Java Web快速入门——全十讲 #### 一、Java与Web开发的融合:JavaEE标准框架 在探讨Java Web开发之前,我们首先要理解Java在Web领域的定位。Java不仅仅是一种编程语言,它还是一套完整的生态系统,适用于各种...
**第七讲:JSP错误处理和调试** 学习如何处理JSP运行时错误和异常,以及使用日志和调试工具进行问题排查,是成为合格JSP开发者的关键步骤。 **第八讲:MVC设计模式与JSP** MVC(Model-View-Controller)设计模式常...
第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语法等内容;第二篇为“核心篇”,主要包括程序开发效率之利器...
* 第7课:实体关系映射(ORM) + 单表映射——家庭信息实例 + 一对一映射——省与省会城市关联实例 + 一对多与多对一映射——论坛主题与回帖关联实体 + 多对多映射——老师与课程关联实例 * 第8课:实体查询...
6.7 获取请求消息的实体内容 6.8 利用请求域属性传递信息 6.9 请求参数的中文读取问题 6.10 思考与实践 第7章 会话与状态管理 7.1 Web应用中的会话与会话状态 7.2 Cookie 7.3 在...
《Java Web编程宝典——十年典藏版》是一本深入探讨Java Web开发的权威书籍,其源码提供了丰富的实例,帮助读者深入理解并实践相关技术。这本书覆盖了从基础到高级的Java Web开发各个方面,包括Servlet、JSP、Java...
《Go Web编程实战派从入门到精通》是一本专注于Go语言在Web开发领域的专著,其开源的随书源码库名为"Go语言-Web-goWebActualCombat",压缩包内的主要内容是goWebActualCombat-master目录,这代表了一个完整的Go语言...
### 云应用开发 ——Google App Engine & Google Web Toolkit入门指南 #### 第1章 应该了解下 ##### 1.1 云基本知识 云计算是一种通过互联网提供按需计算资源和服务的方式,包括网络、服务器、存储、应用程序和...
第6章介绍了几个Java的高级应用,包括多线程、网络编程和GUI编程。多线程,介绍Java如何对多线程提供支持,以及如何使用Java编写多线程应用;网络编程,介绍如何通过HTTP协议访问Web应用,如何通过Socket编程实现C/S...
### JAVA入门教程21天学通JAVA2第三版——关键知识点解析 #### 一、JAVA入门书籍推荐 - **《Java语言》**:适合初学者,全面覆盖Java基础语法及面向对象的基本概念。 - **《Thinking in Java》**:虽然内容深入且...
还会介绍如何编写并运行第一个Java程序——经典的"Hello, World!"示例。 3. **JAVA基本程序实践**:在理论知识的基础上,这部分将深入到实际编程中,涵盖类和对象的概念,这是面向对象编程的基础。学习者会了解如何...
【Java基础培训教程】是为初学者设计的一套详尽的学习资源,涵盖了从入门到进阶的各个环节。在这个教程中,我们将深入理解Java语言的基本概念,掌握编程技巧,并熟悉常用的开发工具,如Eclipse、NetBeans和Struts。...
在“Java Web开发教程——入门与提高篇(JSP+Servlet)”这个教程中,你将系统学习这些知识点,逐步掌握如何使用Java进行Web开发,建立起从零到一的实战能力。无论是对HTTP协议的理解,还是对Java Web组件的运用,都...
#### 第7章 Struts开发实例——在线留言板 通过开发一个在线留言板,详细讲解了如何使用Struts框架进行MVC架构的Web应用开发。这一章节不仅包含了Struts框架的安装和配置,还深入探讨了如何使用JSP实现视图层、如何...
这份资料集主要涵盖Java基础知识、初学者入门指南以及常见的Java面试题,旨在帮助学习者系统地理解和掌握Java的核心概念。 首先,Java基础知识是理解任何Java程序的基础。这包括: 1. **Java环境搭建**:学习如何...
**:介绍第一个Java程序——打印“Hello, World!”,这是所有编程语言的入门起点,用于熟悉基本的代码结构和编译执行流程。 4. **语法基础**: - **数据类型**:包括基本数据类型(如整型、浮点型、字符型和布尔型...