JDBC
什么是JDBC
JDBC是接口 是规范,本身sun公司没有实现 需要各大数据库厂商实现;
持久化概念
把数据保存到可掉电的设备里面存储;
JDBC版本认识
属于 java.sql包 jdbc4.0 (java6以后)
JDBC增删改查建立DAO
实现步骤:
1. 创建一个domain包,专门用于建立普通的class类,便于增删改查
2. 定义接口,便于面向接口编程,主要基于OCP思想【对扩展开放,对修改封闭】
3. 针对接口的实现类,真正的DAO包
4. 针对实现类进行测试。
一般要建立3个包
DAO包:接口包,写接口方法的包
DAO.Impl包:DAO包的实现包
Domian包:写JavaBean类的包(set、get、toString)
小结
1.使用JDBC完成CRUD
2.贾(加载注册驱动) Class.forName(“com.mysql.jdbc.Driver”)
3.链:(获取连接) DriverManager.getConnection(url,username,password)
4、欲(获取语句对象) Statement st = conn.createStatement();
5、执(执行) st.executeUpdate/executeQuery(sql)
6、事(释放资源) st.close()/rs.close()/conn.close()
JDBC优化
事务API
JAVA中事务对象的处理由连接对象而来
1. 在JDBC中,事务是默认提交的.必须先设置事务为手动提交。
2. 手动的提交事务。
3. 若出现异常必须回滚事务,若不回滚事务,不会释放数据库资源。
Connection接口:
void setAutoCommit(Boolean autoCommit)
设定是否自动提交数据,在执行操作之前
void commit()
提交事务,在执行操作之后
void rollback()
回滚事务
查询结果&增删改优化
通常JDBC查询出的结果在Java代码中需要封装为对象,传统的封装方式是创建对象然后调用set方法进行封装。如果查询出的结果中字段过多,就需要反复大量的调用set方法,本节将使用beanuitls针对此类封装进行优化。
beanutils
BeanUtils工具由Apache软件基金组织编写,提供给我们使用,主要解决的问题是:把对象的属性数据封装到对象中。BeanUtils工具本身也是一种内省的实现方法,所以也是借助于底层的getter和setter方法进行转换的。
使用BeanUtils编程步骤:
1. 导入jar包
a) commons-beanutils-1.9.2.jar
b) commons-logging-1.2.jar
c) commons-collections-3.1.jar
2. 使用BeanUtils类
API
BeanUtils类:
void populate(Object bean,Map properties)
将Map类型的数据,封装到一个bean之中
数据库元数据
元数据(MetaData),即定义数据的数据。打个比方,就好像我们要想搜索一首歌(歌本身是数据),而我们可以通过歌名,作者,专辑等信息来搜索,那么这些歌名,作者,专辑等等就是这首歌的元数据。因此数据库的元数据就是一些注明数据库信息的数据。
1.由Connection对象的getMetaData()方法获取的是DatabaseMetaData对象。
2.由PreparedStatement对象的getParameterMetaData ()方法获取的是ParameterMetaData对象。
3.由ResultSet对象的getMetaData()方法获取的是ResultSetMetaData对象。
Tomcat&Servlet
常见的服务器
Apache、Tomcat都可以属于Web服务器,Weblogic、WebSphere都属于应用服务器。
Web服务器
Apache:
在Web服务器中,Apache是纯粹的Web服务器,经常与Tomcat配对使用。它对HTML页面具有强大的解释能力,但是不能解释嵌入页面内的服务器端脚本代码(JSP/Servlet)。
Tomcat:
早期的Tomcat是一个嵌入Apache内的JSP/Servlet解释引擎。后来的Tomcat已不再嵌入Apache内,Tomcat进程独立于Apache进程运行。而且Tomcat已经是一个独立的Servlet和JSP容器,业务逻辑层代码和界面交互层代码可以分离了。因此,有人把Tomcat叫做轻量级应用服务器。
应用服务器
实现了J2EE的各种规范。WebSphere(IBM)、WebLogic(Oracle)、JBoss(red hat)。
安装&访问&配置
配置JDK环境变量
2. 解压缩TOMCAT的安装包,在不包含中文的路径中
3.Tomcat,浏览器中访问:http://localhost:8080/
详解部分
配置JDK环境变量
1.JAVA_HOME:若Java_HOME不存在,则”新建”,输入变量名、变量值,变量值末不需要分号
值:D:\Program Files\Java\jdk1.6.0_29
2.CLASSPATH:环境变量中若不存在,则”新建”,变量值末不需要分号
值:D:\Program Files\Java\jdk1.6.0_29\lib\dt.jar;D:\Program Files\Java\
jdk1.6.0_29\lib\tools.jar
3.Path:”编辑”,变量值使用英文分号隔开,变量值末不需要分号
值: D:\Program Files\Java\jdk1.6.0_29\bin
4.“开始”->“运行”->输入cmd,在命令提示符中输入“java -version”,“java”,“javac”几个命令,出现画面,说明环境变量配置成功
若JDK配置环境变量之后,仍然不能正常启动Tomcat,可配置Tomcat的环境变量,一般不用,以TOMCAT7为例:
1.CATALINA_BASE
值: D:\Program Files\apache-tomcat-7.0.22(Tomcat解压到的目录)
2.CATALINA_HOME
值: D:\Program Files\apache-tomcat-7.0.22
3.CATALINA_TMPDIR
值: D:\Program Files\apache-tomcat-7.0.22\temp
4.Path
值:D:\Program Files\apache-tomcat-7.0.22\bin
部署项目
手动创建web项目
实现servlet程序
常见报错:
问题:404
路径问题
ip:端口/项目名/网页名称【网页路径】
问题:500【突然的自我】
ClassNotFound:字节码文件没找到
项目结构正常的情况
项目有问题:
WEB-INF名字没写对
classes文件夹地方没放对
Servlet概述
Servlet 是运行在 Web 服务器中的小型 Java 程序。Servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。
Servlet实现
1. 定义类,实现servlet接口或者继承GenericServlet或者继承HTTPServlet
2. 在web.xml中针对实现的servlet进行配置
3. 浏览器上访问servlet
Servlet :接口
|
GenericServlet :通用的Servlet
|
HttpServlet :HttpServlet
实现servlet接口
public class ServletDemo1 implements Servlet{
@Override
/**
* 为用户处理请求和响应的方法.
*/
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
res.getWriter().println("Hello Servlet...");
}
...
}
web.xml中配置servlet
访问servlet
http://localhost:8080/demo/ServletDemo1
Servlet生命周期
Servlet生命周期:Servlet程序从创建到销毁的过程
1:init方法创建Servlet
2: 调用service方法启动服务
3: 关闭服务,destroy方法
ServletConfig
ServletConfig是servlet 容器使用的 servlet 配置对象,该对象在初始化期间将信息传递给servlet。
API
String getInitParameter(String name)
返回根据web.xml中配置的参数名获取参数值
Enumeration getInitParameterNames()
获取配置的所有参数名称,返回为一个Enumeration对象
String getServletName()
获取Servlet名称
ServletContext getServletContext()
返回一个ServletContext对象用于服务器和Servlet程序之间交互时使用的对象,该对象
在服务器启动时就存在
Tomcat7接收数据乱码
req.getParameter(“name”).getBytes(“ISO-8859-1”);
HttpServletResponse
HttpServletResponse是ServletResponse接口的子接口,表示HTTP协议的响应对象。既然HttpServletResPonse是HTTP的响应对象,那么该接口中包含了针对各自请求进行响应的方法。响应无非就是将数据输出到客户端,在IO中流的输出无非就是两种:字节输出流和字符输出流。
Servlet实现
Servlet :接口
|
GenericServlet :通用的Servlet
|
HttpServlet :HttpServlet
Servlet的注解:
修改web.xml中metadata-complete修改为false
@WebServlet("/路径")
web.xml中配置servlet
WEB不同之间传值:
1.GET方式提交数据
ip:端口/项目名/访问路径?参数=值&参数2=值
自定义GET方式去提交数据
2.Cookie:浏览器上的
一个服务器最多在浏览器上能存储20个
浏览器总共能存储300个cookie
cookie中不能存储对象,只能存储字符串,而且中文字符串不能直接被存储
URLEncoder.encode(数据,UTF-8)
URLDecoder.decode(数据,UTF-8)
cookie定义一个路径和名称:
1.浏览器中根据路径和名称来确定cookie文件是否是一个
2.在代码中读取cookie的数据的时,根据cookie定义的路径决定的
/项目名/ServletA
/项目名
需求:给浏览器添加一个cookie
问题:cookie是在浏览器,添加的代码在服务器
响应对象
需求:从浏览器中读取cookie的数据
请求对象.getCookies,返回一个Cookie[]
获取cookie的信息【名称、路径、值】
Cookie再总结一次