一、bookList.jsp
<
td
><
a
href=
"
<%=
request
.
getContextPath
()%>
/BookDelete?id=
${
bookitem
.
id
}
"
>
删除
</
a
></
td
>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="com.entity.*" %>
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<base href="<%=basePath%>">
<title>图书列表</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="css/bookList.css">
</head>
<form action="" method="post">
<table width="80%" align="center">
<div class="list">图书列表</div>
<li><a href="bookAdd.jsp">新增图书</a> </li>
<li>xxx</li>
<li>xxx</li>
<li>xxx</li>
<td>图书编号</td>
<td>图书名称</td>
<td>图书价格</td>
<td>图书数量</td>
<td>图书作者</td>
<td>图书修改</td>
<td>图书删除</td>
<c:forEach var="bookitem" items="${booklist}">
<td>${bookitem.id}</td>
<td>${bookitem.name}</td>
<td>${bookitem.price}</td>
<td>${bookitem.bookCount}</td>
<td>${bookitem.author}</td>
<td><a href="<%=request.getContextPath()%>/BookUpdate?id=${bookitem.id}">修改</a></td>
<td><a href="<%=request.getContextPath()%>/BookDelete?id=${bookitem.id}">删除</a></td>
</c:forEach>
</table>
</form>
</body>
</html>
二、BookDelete.java
1.根据input标签name属性获取值
2.调用模型---调用查询方法(根据id)
3.request传递值
* Created by Ray on 2018/3/12 0012.
public class BookDelete extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//根据input name获取值
int id = Integer.parseInt(request.getParameter("id"));
//调用模型
BookModel bookModel = new BookModel();
//调用查询方法(根据id),返回booklist集合
List booklist = bookModel.listId(id);
//不同页面间传递,传递一次后,request失去作用
request.setAttribute("booklist",booklist);
//request请求,不会改变路径
request.getRequestDispatcher("/bookDelete.jsp").forward(request,response);
三、bookDelete.jsp
<%@
taglib
uri
="
http://java.sun.com/jsp/jstl/core
"
prefix
="
c
" %>
2.跳转servlet---BookDoDelete.java
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<base href="<%=basePath%>">
<title>删除图书信息</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<form action="<%=request.getContextPath()%>/BookDoDelete" method="post">
<table align="center">
<div align="center" style="font-size: 36px;font-weight: bold;">删除列表</div>
<c:forEach var="bookitem" items="${booklist}">
<td>图书编号:</td>
<td><input type="text" name="id" value="${bookitem.id}" readonly="readonly"></td>
<td>图书名称:</td>
<td><input type="text" name="name" value="${bookitem.name}" readonly="readonly"></td>
<td>图书价格:</td>
<td><input type="text" name="price" value="${bookitem.price}" readonly="readonly"></td>
<td>图书数量:</td>
<td><input type="text" name="bookCount" value="${bookitem.bookCount}" readonly="readonly"></td>
<td>图书作者:</td>
<td><input type="text" name="author" value="${bookitem.author}" readonly="readonly"></td>
</c:forEach>
<td><input type="submit" value="删除"></td>
<button>
<a href="<%=request.getContextPath()%>/BookList" style="text-decoration: none">返回</a>
</button>
</table>
</form>
</body>
</html>
四、BookDoDelete.java
1.根据input标签name属性获取值
2.调用模型---调用删除方法(根据id)
3.response重定向
* Created by Ray on 2018/3/12 0012.
public class BookDoDelete extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//根据input name获取值
int id = Integer.parseInt(request.getParameter("id"));
//调用模型
BookModel bookModel = new BookModel();
//调用删除方法(根据id)
bookModel.deleteBook(id);
//response重定向改变路径
response.sendRedirect(request.getContextPath() + "/BookList");
五、BookModel.java
1.根据Id删除图书信息
* Created by Ray on 2018/3/11 0011.
public class BookModel {
Dbconn Dbconn = new Dbconn();
Connection conn = null;
PreparedStatement ps;
ResultSet rs;
* @Author: Ray
* @Date: 2018/3/11 0011
* @Description: 查询所有图书信息
* @Return: booklist
public List<Book> bookList(){
//创建booklist集合
List booklist = new ArrayList();
Book Book = null;
//创建Connection连接
conn = Dbconn.getConnection();
//查询所有图书信息的sql语句
String sql = "select * from booktable";
//获取PreparedStatement
ps = conn.prepareStatement(sql);
//执行查询
rs = ps.executeQuery();
//判断光标向后移动,并判断是否有效
while (rs.next()){
//实例化Book对象
Book = new Book();
//对id属性赋值
Book.setId(rs.getInt("id"));
//对name属性赋值
Book.setName(rs.getString("name"));
//对price属性赋值
Book.setPrice(rs.getDouble("price"));
//对bookCount属性赋值
Book.setBookCount(rs.getInt("bookCount"));
//对author属性赋值
Book.setAuthor(rs.getString("author"));
//将book对象添加到集合中
booklist.add(Book);
//关闭连接
Dbconn.closeConnection(conn,ps,rs);
}catch (Exception e){
e.printStackTrace();
//返回booklist集合
return booklist;
* @Author: Ray
* @Date: 2018/3/11 0011
* @Description: 新增图书信息
* @Return:
public void addBook(int id,String name,double price,int bookCount,String author){
//创建Connection连接
conn = Dbconn.getConnection();
//添加图书信息的sql语句
String sql = "insert into booktable(id,name,price,bookCount,author) values(?,?,?,?,?)";
//获取PrepareStatement
ps = conn.prepareStatement(sql);
//对占位符进行赋值
ps.setInt(1,id);
ps.setString(2,name);
ps.setDouble(3,price);
ps.setInt(4,bookCount);
ps.setString(5,author);
//执行更新,返回更新锁影响的行数
int row = ps.executeUpdate();
if(row > 0){
System.out.println("添加数据成功");
ps.close();
conn.close();
}catch (Exception e){
System.out.println("添加数据失败");
e.printStackTrace();
* @Author: Ray
* @Date: 2018/3/11 0011
* @Description: 根据Id查询图书信息
* @Return: booklist集合
public List<Book> listId(int id){
//创建booklist集合
List booklist = new ArrayList();
Book Book = null;
//创建Connection 连接
conn = Dbconn.getConnection();
//根据id查询图书信息的sql语句
String sql = "select * from booktable where id = ?";
//创建PreparedStatement
ps = conn.prepareStatement(sql);
//对占位符进行赋值
ps.setInt(1,id);
//执行查询
rs = ps.executeQuery();
//判断光标向后移动,并判断是否有效
while(rs.next()){
Book = new Book();
Book.setId(rs.getInt("id"));
Book.setName(rs.getString("name"));
Book.setPrice(rs.getDouble("price"));
Book.setBookCount(rs.getInt("bookCount"));
Book.setAuthor(rs.getString("author"));
booklist.add(Book);
}catch (Exception e){
e.printStackTrace();
return booklist;
* @Author: Ray
* @Date: 2018/3/11 0011
* @Description: 修改图书信息
* @Return:
public void updateBook(int id,String name,double price,int bookCount,String author){
//创建Connection连接
conn = Dbconn.getConnection();
//更新图书信息的sql语句
String sql = "update booktable set name=?,price=?,bookCount=?,author=? where id=?";
//获取PreparedStatement
ps = conn.prepareStatement(sql);
//对占位符进行赋值
ps.setString(1,name);
ps.setDouble(2,price);
ps.setInt(3,bookCount);
ps.setString(4,author);
ps.setInt(5,id);
//执行更新
int row = ps.executeUpdate();
//判断是否有效
if(row > 0){
System.out.println("修改数据成功");
//关闭连接
ps.close();
conn.close();
}catch (Exception e){
e.printStackTrace();
* @Author: Ray
* @Date: 2018/3/12 0012
* @Description: 根据Id删除图书信息
* @Return:
public void deleteBook(int id){
//创建Connection连接
conn = Dbconn.getConnection();
//删除图书信息的SQL语句
String sql = "delete from booktable where id = ?";
//获取PreparedStatement
ps = conn.prepareStatement(sql);
//对占位符进行赋值
ps.setInt(1,id);
//执行删除
int row = ps.executeUpdate();
//判断是否有效
if(row > 0){
System.out.println("删除数据成功");
ps.close();
conn.close();
}catch (Exception e){
e.printStackTrace();
六、web.xml
这个很关键,不能出错,否则访问会出现404错误
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<servlet>
<servlet-name>BookList</servlet-name>
<servlet-class>com.control.BookList</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BookList</servlet-name>
<url-pattern>/BookList</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>BookAdd</servlet-name>
<servlet-class>com.control.BookAdd</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BookAdd</servlet-name>
<url-pattern>/BookAdd</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>BookUpdate</servlet-name>
<servlet-class>com.control.BookUpdate</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BookUpdate</servlet-name>
<url-pattern>/BookUpdate</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>BookDoUpdate</servlet-name>
<servlet-class>com.control.BookDoUpdate</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BookDoUpdate</servlet-name>
<url-pattern>/BookDoUpdate</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>BookDelete</servlet-name>
<servlet-class>com.control.BookDelete</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BookDelete</servlet-name>
<url-pattern>/BookDelete</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>BookDoDelete</servlet-name>
<servlet-class>com.control.BookDoDelete</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BookDoDelete</servlet-name>
<url-pattern>/BookDoDelete</url-pattern>
</servlet-mapping>
</web-app>
七、页面效果
16.3 使用
JDBC
驱动的JavaMail发送电子邮件信息
16.3.1 使用JSP页面和JavaMail发送电子邮件
16.3.2 使用有SendMailBean的JSP页面
16.3.3 部署
16.4 使用JavaMail API接收电子邮件
16.5 小结
第4部分
数据库
、
JDBC
和XML
第17章 XML文档对象模型和
JDBC
17.1 XML与HTML
17.2 XML和文档对象模型
17.2.1 XML标题
17.2.2 标记和属性
17.2.3 元素和节点
17.3 使用Java XML API——Xerces和JDOM
17.4 将Xbean作为可插入的XML处理模块
17.5 查询
数据库
创建XML文档
17.6 XML
数据
源填充
数据库
17.7 小结
第18章 用RowSet显示
数据
18.1 理解RowSet
18.1.1 创建和应用RowSet
18.1.2 使RowSet可滚动和可更新
18.1.3 更新RowSet
18.1.4 插入新行
18.1.5
删除
行
18.1.6 查看可更新RowSet所做的修改
18.1.7 RowSet事件
18.2 未连接的RowSet
18.2.1 在PDA中使用CachedRowSet
18.2.2 客户端代码
18.3 根据RowSet生成XML
18.4 小结
第19章 用SQL访问XML文档
19.1 用SQL访问XML文档的原因
19.2 创建可访问
JDBC
的XML DBMS
19.2.1 实现基类
19.2.2 实现
JDBC
类
19.2.3 XMLResultSet
19.2.4 实现SQL引擎
19.2.5 测试
JDBC
/XML
数据库
19.3 小结
第5部分 EJB、
数据库
和持久性
第20章 EJB
20.1 EJB简述
20.2 会话bean
20.2.1 无状态会话Bean
20.2.2 无状态会话Bean
20.3 实体Bean
20.3.1 主键
20.3.2 持久性存储
20.4 消息驱动bean
20.5 EJB事务
20.5.1 容器管理的事务
20.5.2 bean管理的事务
20.6 小结
第21章 bean管理的持久性
21.1 实体对象持久性
21.2 bean管理的持久性
21.2.1 主键
21.2.2 通过实体bean创建和
删除
实体对象
Z1.2.3 查找实体对象
21.2.4 bean实例变量的同步和持久性对象的状态
Z1.2.5 业务方法
21.3 BMP实体bean示例——MemberEJB
21.4 使用值对象获得更佳性能
21.5 小结
第22章 容器管理的持久性
22.1 CMP实体bean——EJB 2.0之后的新生品
22.2 CMP EJB开发
22.2.1 主接口和远程接口
22.2.2 用最少的代码实现类
22.3 EJB查询语言
22.4 运行示例应用程序
22.5 容器管理的关系
22.5.1 关系字段
22.5.2 关系的基数和方向
22.5.3 访问关系字段
22.6 小结
第23章 Java
数据
对象和透明持久性
23.1 JDO的透明持久性
23.2 什么使JDO成为独特的持久性机制
23.3 主要的JDO API
23.3.1 PersistenceCapable接口
23.3.2 PersistenceManagerFactory接口
23.3.3 PersistenceManager接口
23.3.4 Query接口
23.3.5 Transaction接口
23.4 测试客户示例
23.5 对复杂域对象模型的支持
23.6 JDO应用程序开发过程
23.7 JDO与J2EE框架集成
23.8 小结
第6部分
数据库
管理
第24章 用户管理和
数据库
的安全性
24.1 组、用户和角色
24.1.1 对组进行
操作
24.1.2 对用户进行
操作
24.2 理解
数据库
模式
24.3 管理模式
24.4 用户权限
24.5 用户角色
24.5.1 所有权限
24.5.2 GRANT命令
24.5.3 REVOKE命令
24.6 小结
第25章 性能调整
25.1
数据库
调整
25.1.1 语句调整
25.1.2 调整连接
25.1.3 调整索引
25.2 修改
数据库
方案
25.2.1 范式化
25.2.2 反向范式化
25.2.3 多
数据
表
25.3 产生冗余
数据
25.4 使用导出列和导出表
25.5
数据
划分
25.5.1 水平划分
25.5.2 垂直划分
25.6 使用视图
25.7 持续监控
25.8 小结
附录A SQL语法简明指南
附录B 安装Apache和Tomcat
JAVA
数据库
课程设计 第 1 页 共 1 页第 1 页 共 1 页 第 1 页 共 1 页 第 1 页 共 1 页 JAVA
数据库
课程设计全文共77页,当前为第1页。JAVA
数据库
课程设计全文共77页,当前为第1页。JV
数据库
课程设计 JAVA
数据库
课程设计全文共77页,当前为第1页。 JAVA
数据库
课程设计全文共77页,当前为第1页。 一、课程设计目的 通过这次的设计,主要是做出一个小型的管理系统,来加强对JV所学学问的稳固和融会贯穿,可以说是对一个学期所学学问的一个小结,加深对JV
数据库
的理解。 二、需求分析 功能需求分析: 该系统具备管理学生信息、课程信息、选课信息的功能:用户通过输入账号和密码进下该系统后,可以进行一些基础维护〔学生信息维护、课程信息维护、选课信息维护〕。全部都可以进行增加、修改、
删除
、模糊查询。 三、
数据
项: 1表dmin〔用户表〕 Field Type Null Key Comment Usernme chr(10) —— PRI 用户名 pssword chr(10) —— —— 密码 Nme Chr(10) —— JAVA
数据库
课程设计全文共77页,当前为第2页。JAVA
数据库
课程设计全文共77页,当前为第2页。 —— 用户昵称 2表S〔学生信息表〕 Field Type Null Key Comment Sno nvrchr(50) —— PRI 学号 Snme nvrchr(50) —— —— 姓名 Sx nvrchr(50) —— —— 系别 3表C〔课程信息表〕 Field Type Null Key Comment Cno nvrchr(50) —— JAVA
数据库
课程设计全文共77页,当前为第3页。JAVA
数据库
课程设计全文共77页,当前为第3页。 PRI 课号 Cnme nvrchr(50) —— —— 课名 4表SC〔学生信息表〕 Field Type Null Key Comment Cno nvrchr(50) —— PRI 课号 Sno nvrchr(50) —— PRI 学号 C nvrchr(50) —— —— 成果 四、系统功能描述 该小型系统主要是用于管理学生及课程的基本信息,主要功能包括四方面的: 1.管理学生信息,其中包括添加,
删除
,修改等
操作
。 JAVA
数据库
课程设计全文共77页,当前为第4页。JAVA
数据库
课程设计全文共77页,当前为第4页。 2.管理课程信息,其中包括添加,
删除
,修改等
操作
。 3.管理选课信息,其中包括添加,
删除
,修改等
操作
。 4.查询信息,其中包括查询学生信息,查询课程信息,查询选课信息等
操作
。 选课信息 课程信息 学生信息
删除
信息 修改信息 添加信息
删除
信息 修改信息 添加信息
删除
信息 修改信息 添加信息 查询管理 选课管理 课程管理 学生管理 学生信息管理系统 五、代码分析 连接
数据库
方法: 这是jv连接
数据库
的驱动,有关
数据库
的
操作
都要用到他。 public sttic Connection CONN(){ String driverNme = com.microsoft.sqlserver.
jdbc
.SQLServerDriver; //加载
JDBC
驱动 String dbURL =
jdbc
:sqlserver://loclhost:1433; DtbseNme=student; //连接服务器和
数据库
test,此处student是
数据库
名 String userNme = s; JAVA
数据库
课程设计全文共77页,当前为第5页。JAVA
数据库
课程设计全文共77页,当前为第5页。 //默认用户名 String userPwd = mim; //密码 Connection dbConn=null; try { Clss.forNme(driverNme); dbConn = DriverMnger.getConnection(dbURL, userNme, userPwd); System.out.println(Connection Successful!); //假如连接胜利 操纵XX输出Connection Successful! } ctch (Exception e) { e.printStckTrce();} return dbConn;} 用户登录界面user.jv: 登录时,凡是账号密码未填写、输入错误账号密码都会提出错误提示框。在填写好账号密码后,会读取
数据库
里dmin表,并查询其输入是否存在,若无误,则登录到用户界面。 public clss User extends JFrme{ privte JLbel use,pssword; privte JTextField k1;//用户名输入框 pr
Jworld@TW技术论坛版主,Java权威技术顾问与专业讲师,Java畅销书作者——林信良全新力作。
国内第一本Java 7,前期版本累计销量5万册。
《Java JDK 7学习笔记》针对Java SE 7新功能全面改版,无论是章节架构或范例程序代码,都做了全面重新编写与翻新。
《Java JDK 7学习笔记》是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇到的概念、
操作
、应用或认证考试上的各种问题及解决方案。
《Java JDK 7学习笔记》详细介绍了JVM、JRE、Java SE API、JDK与IDE之间的对应关系。必须要时从Java SE API的源代码分析,了解各种语法在Java SE API中如何应用。
《Java JDK 7学习笔记》将IDE
操作
纳为教学内容之一,使读者能与实践结合,提供的视频教学能更清楚地帮助读者掌握
操作
步骤。
计算机书籍
《java jdk 7学习笔记》是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习java时遇到的概念、
操作
、应用或认证考试等问题及解决方案。
《java jdk 7学习笔记》针对java se 7新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新。并详细介绍了jvm、jre、java se api、jdk与ide之间的对照关系。必要时从java se api的源代码分析,了解各种语法在java se api中如何应用。对于建议练习的范例提供lab文档,以突出练习重点。此外,本书还将ide
操作
纳为教学内容之一,让读者能与实践相结合,提供的教学视频让读者可以更清楚地掌握
操作
步骤。
《java jdk 7学习笔记》适合java的初中级读者,以及广大java应用开发人员。
林信良(网名:良葛格)
学历:台湾大学电机工程学系
经历:台湾升阳教育训练技术顾问、专业讲师,oracle授权训练中心讲师
著作:《java jdk 5.0学习笔记》、《java se 6技术手册》、《spring技术手册》等
译作:《ajax实战手册》、《jquery实战手册(第2版)》
个人网站:http://openhome.cc
《java jdk 7学习笔记》
chapter1 java平台概论 1
1.1 java不只是语言 2
1.1.1 前世今生 2
1.1.2 三大平台 5
1.1.3 jcp与jsr 6
1.1.4 建议的学习路径 7
1.2 jvm/jre/jdk 11
1.2.1 什么是jvm 11
1.2.2 区分jre与jdk 14
1.2.3 下载、安装jdk 15
1.2.4 认识jdk安装内容 18
1.3 重点复习 19
1.4 课后练习 20
chapter2 从jdk到ide 21
2.1 从hello world开始 22
2.1.1 撰写java原始码 22
2.1.2 path是什么 24
2.1.3 jvm(java)与classpath 27
2.1.4 编译程序(javac)与classpath 30
.2.2 管理原始码与位码文档 31
2.2.1 编译程序(javac)与sourcepath 31
2.2.2 使用package管理类 33
2.2.3 使用import偷懒 36
2.3 使用ide 38
2.3.1 ide项目管理基础 38
2.3.2 使用了哪个jre 43
2.3.3 类文档版本 45
2.4 重点复习 48
2.5 课后练习 49
chapter3 基础语法 53
3.1 类型、变量与运算符 54
3.1.1 类型 54
3.1.2 变量 57
3.1.3 运算符 60
3.1.4 类型转换 66
3.2 流程控制 69
3.2.1 if...else条件式 69
3.2.2 switch条件式 72
3.2.3 for循环 74
3.2.4 while循环 75
3.2.5 break、continue 77
3.3 重点复习 78
3.4 课后练习 79
chapter4 认识对象 83
4.1 类与对象 84
4.1.1 定义类 84
4.1.2 使用标准类 87
4.1.3 对象指定与相等性 90
4.2 基本类型打包器 91
4.2.1 打包基本类型 91
4.2.2 自动装箱、拆箱 92
4.2.3 装箱的内幕 93
4.3 数组对象 96
4.3.1 数组基础 96
4.3.2
操作
数组对象 99
4.3.3 数组复制 105
4.4 字符串对象 108
4.4.1 字符串基础 108
4.4.2 字符串特性 111
4.4.3 字符串编码 115
4.5 查询java api文件 117
4.6 重点复习 119
4.7 课后练习 120
chapter5 对象封装 125
5.1 何谓封装 126
5.1.1 封装对象初始流程 126
5.1.2 封装对象
操作
流程 128
5.1.3 封装对象内部
数据
131
5.2 类语法细节 134
5.2.1 public权限修饰 134
5.2.2 关于构造函数 136
5.2.3 构造函数与方法重载 137
5.2.4 使用this 139
5.2.5 static类成员 142
5.2.6 不定长度自变量 148
5.2.7 内部类 150
5.2.8 传值调用 151
5.3 重点复习 154
5.4 课后练习 155
chapter6 继承与多态 161
6.1 何谓继承 162
6.1.1 继承共同行为 162
6.1.2 多态与is-a 166
6.1.3 重新定义行为 170
6.1.4 抽象方法、抽象类 173
6.2 继承语法细节 174
6.2.1 protected成员 174
6.2.2 重新定义的细节 176
6.2.3 再看构造函数 178
6.2.4 再看final关键字 180
6.2.5 java.lang.object 181
6.2.6 关于垃圾收集 186
6.2.7 再看抽象类 189
6.3 重点复习 191
6.4 课后练习 192
chapter7 接口与多态 199
7.1 何谓接口 200
7.1.1 接口定义行为 200
7.1.2 行为的多态 204
7.1.3 解决需求变化 206
7.2 接口语法细节 213
7.2.1 接口的默认 213
7.2.2 匿名内部类 217
7.2.3 使用enum枚举常数 221
7.3 重点复习 224
7.4 课后练习 224
chapter8 异常处理 231
8.1 语法与继承架构 232
8.1.1 使用try、catch 232
8.1.2 异常继承架构 235
8.1.3 要抓还是要抛 238
8.1.4 认识堆栈追踪 241
8.1.5 关于assert 245
8.2 异常与资源管理 247
8.2.1 使用finally 247
8.2.2 自动尝试关闭资源 249
8.2.3 java.lang.autocloseable接口 251
8.3 重点复习 255
8.4 课后练习 256
chapter8 collection与map 261
9.1 使用collection收集对象 262
9.1.1 认识collection架构 262
9.1.2 具有索引的list 263
9.1.3 内容不重复的set 266
9.1.4 支持队列
操作
的queue 270
9.1.5 访问对象的iterator 273
9.1.6 排序收集的对象 276
9.1.7 使用泛型 280
9.2 键值对应的map 284
9.2.1 常用map
操作
类 284
9.2.2 访问map键值 288
9.3 重点复习 291
9.4 课后练习 292
chapter10 输入输出 299
10.1 inputstream与outputstream 300
10.1.1 串流设计的概念 300
10.1.2 串流继承架构 303
10.1.3 串流处理装饰器 306
10.2 字符处理类 311
10.2.1 reader与writer继承架构 311
10.2.2 字符处理装饰器 313
10.3 重点复习 315
10.4 课后练习 316
10.4.1 选择题 316
10.4.2
操作
题 317
chapter11 线程与并行api 319
11.1 线程 320
11.1.1 线程简介 320
11.1.2 thread与runnable 323
11.1.3 线程生命周期 324
11.1.4 关于threadgroup 331
11.1.5 synchronized与volatile 334
11.1.6 等待与通知 345
11.2 并行api 349
11.2.1 lock、readwritelock与condition 349
11.2.2 使用executor 357
11.2.3 并行collection简介 370
11.3 重点复习 373
11.4 课后练习 375
chapter12 通用api 377
12.1 日志 378
12.1.1 日志api简介 378
12.1.2 指定日志层级 380
12.1.3 使用handler与formatter 382
12.1.4 自定义handler、formatter与
filter 383
12.1.5 使用logging.properties 385
12.2 国际化基础、日期 387
12.2.1 关于i18n 387
12.2.2 使用date与dateformat 390
12.2.3 使用calendar 393
12.3 规则表示式 395
12.3.1 定义规则表示式 396
12.3.2 pattern与matcher 403
12.4 nio2文件系统 405
12.4.1 api架构概述 405
12.4.2
操作
路径 406
12.4.3 属性读取与设定 409
12.4.4
操作
文档与目录 412
12.4.5 读取、访问目录 414
12.4.6 过滤、搜索文档 418
12.5 重点复习 421
12.6 课后练习 422
chapter12 窗口程序设计 425
13.1 swing入门 426
13.1.1 简易需求分析 426
13.1.2 swing组件简介 427
13.1.3 设计主窗口与菜单列 429
13.1.4 关于版面管理 433
13.1.5 事件处理 436
13.2 文档打开、存储与编辑 442
13.2.1
操作
打开文档 442
13.2.2 制作存储、关闭文档 445
13.2.3 文字区编辑、剪切、复制、粘贴 448
13.3 重点复习 449
13.4 课后练习 451
chapter14 整合
数据库
444
14.1
jdbc
入门 454
14.1.1
jdbc
简介 454
14.1.2 连接
数据库
458
14.1.3 使用statement、resultset 464
14.1.4 使用preparedstatement、callablestatement 469
14.2
jdbc
进阶 472
14.2.1 使用datasource取得联机 472
14.2.2 使用resultset卷动、更新
数据
476
14.2.3 批次更新 479
14.2.4 blob与clob 480
14.2.5 交易简介 481
14.2.6 metadata简介 489
14.2.7 rowset简介 492
14.3 重点复习 496
14.4 课后练习 497
chapter15 反射与类加载器 499
15.1 运用反射 500
15.1.1 class与.class文档 500
15.1.2 使用class.forname() 502
15.1.3 从class获得信息 503
15.1.4 从class建立对象 506
15.1.5
操作
对象方法与成员 509
15.1.6 动态代理 512
15.2 了解类加载器 515
15.2.1 类加载器层级架构 515
15.2.2 建立classloader实例 518
15.3 重点复习 520
15.4 课后练习 521
chapter16 自定义泛型、枚举与标注 523
16.1 自定义泛型 524
16.1.1 定义泛型方法 524
16.1.2 使用extends与? 525
16.1.3 使用super与? 530
16.2 自定义枚举 533
16.2.1 了解java.lang.enum类 533
16.3 关于注释 542
16.3.1 常用标准注释 542
16.3.2 自定义注释类型 545
16.3.3 执行时期读取注释信息 549
16.4 重点复习 551
16.5 课后练习 551
appendixa 如何使用本书项目 553
a.1 项目环境配置 554
a.2 打开案例 554
appendixb mysql入门 557
b.1 安装、设定mysql 558
b.2 mysql的
数据
类型 560
b.3 建立
数据库
、
数据
表 561
b.4 进行crud
操作
562
16.3 使用
JDBC
驱动的JavaMail发送电子邮件信息
16.3.1 使用JSP页面和JavaMail发送电子邮件
16.3.2 使用有SendMailBean的JSP页面
16.3.3 部署
16.4 使用JavaMail API接收电子邮件
16.5 小结
第4部分
数据库
、
JDBC
和XML
第17章 XML文档对象模型和
JDBC
17.1 XML与HTML
17.2 XML和文档对象模型
17.2.1 XML标题
17.2.2 标记和属性
17.2.3 元素和节点
17.3 使用Java XML API——Xerces和JDOM
17.4 将Xbean作为可插入的XML处理模块
17.5 查询
数据库
创建XML文档
17.6 XML
数据
源填充
数据库
17.7 小结
第18章 用RowSet显示
数据
18.1 理解RowSet
18.1.1 创建和应用RowSet
18.1.2 使RowSet可滚动和可更新
18.1.3 更新RowSet
18.1.4 插入新行
18.1.5
删除
行
18.1.6 查看可更新RowSet所做的修改
18.1.7 RowSet事件
18.2 未连接的RowSet
18.2.1 在PDA中使用CachedRowSet
18.2.2 客户端代码
18.3 根据RowSet生成XML
18.4 小结
第19章 用SQL访问XML文档
19.1 用SQL访问XML文档的原因
19.2 创建可访问
JDBC
的XML DBMS
19.2.1 实现基类
19.2.2 实现
JDBC
类
19.2.3 XMLResultSet
19.2.4 实现SQL引擎
19.2.5 测试
JDBC
/XML
数据库
19.3 小结
第5部分 EJB、
数据库
和持久性
第20章 EJB
20.1 EJB简述
20.2 会话bean
20.2.1 无状态会话Bean
20.2.2 无状态会话Bean
20.3 实体Bean
20.3.1 主键
20.3.2 持久性存储
20.4 消息驱动bean
20.5 EJB事务
20.5.1 容器管理的事务
20.5.2 bean管理的事务
20.6 小结
第21章 bean管理的持久性
21.1 实体对象持久性
21.2 bean管理的持久性
21.2.1 主键
21.2.2 通过实体bean创建和
删除
实体对象
Z1.2.3 查找实体对象
21.2.4 bean实例变量的同步和持久性对象的状态
Z1.2.5 业务方法
21.3 BMP实体bean示例——MemberEJB
21.4 使用值对象获得更佳性能
21.5 小结
第22章 容器管理的持久性
22.1 CMP实体bean——EJB 2.0之后的新生品
22.2 CMP EJB开发
22.2.1 主接口和远程接口
22.2.2 用最少的代码实现类
22.3 EJB查询语言
22.4 运行示例应用程序
22.5 容器管理的关系
22.5.1 关系字段
22.5.2 关系的基数和方向
22.5.3 访问关系字段
22.6 小结
第23章 Java
数据
对象和透明持久性
23.1 JDO的透明持久性
23.2 什么使JDO成为独特的持久性机制
23.3 主要的JDO API
23.3.1 PersistenceCapable接口
23.3.2 PersistenceManagerFactory接口
23.3.3 PersistenceManager接口
23.3.4 Query接口
23.3.5 Transaction接口
23.4 测试客户示例
23.5 对复杂域对象模型的支持
23.6 JDO应用程序开发过程
23.7 JDO与J2EE框架集成
23.8 小结
第6部分
数据库
管理
第24章 用户管理和
数据库
的安全性
24.1 组、用户和角色
24.1.1 对组进行
操作
24.1.2 对用户进行
操作
24.2 理解
数据库
模式
24.3 管理模式
24.4 用户权限
24.5 用户角色
24.5.1 所有权限
24.5.2 GRANT命令
24.5.3 REVOKE命令
24.6 小结
第25章 性能调整
25.1
数据库
调整
25.1.1 语句调整
25.1.2 调整连接
25.1.3 调整索引
25.2 修改
数据库
方案
25.2.1 范式化
25.2.2 反向范式化
25.2.3 多
数据
表
25.3 产生冗余
数据
25.4 使用导出列和导出表
25.5
数据
划分
25.5.1 水平划分
25.5.2 垂直划分
25.6 使用视图
25.7 持续监控
25.8 小结
附录A SQL语法简明指南
附录B 安装Apache和Tomcat
这次同样运用之前写过的部分代码进行改变,实现一个
删除
功能,这个功能很好添加,表单中只要form一个参数到DeleteServlet中,所以重点的代码还是在DeleteServlet中实现业务逻辑。
我们运用到的SQL语句是.
String sql = "delete from tb_book where id=?";
所以需要表单form的时候要传进一个id值。然后我们根据id
public class
JDBC
Test2 {
public static void main(String[] args) {
Connection conn = null;
操作
数据库
:mysql
操作
目的:通过
JDBC
在
数据库
中
删除
某表的
数据
记录。在
删除
表
数据
记录之前,我们来看下当前的
数据库
情况,有一条ID为5,name为codignwhy的
数据
记录。如下图所示:
JDBC
删除
表
数据
记录的核心代码如下:String
jdbc
URL="
jdbc
:mysql://localhost:3306/codingwhy?useUnicode=true&character...
import com.mysql.cj.protocol.Resultset;
import com.mysql.cj.x.protobuf.MysqlxCrud.Collection;
public class
jdbc
2 {
public static void main(String[] args) throws Exception {
// TODO 自动生成的方法存根
String url = "
jdbc
:mysq
import java.sql.Statement;
public class
JDBC
Test01{
public static void main(String[] args){
Statement stmt = null;
Connection conn