JavaEE总结(4)——JDBC&Tomcat

6 篇文章 0 订阅

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

 

部署项目

    1. 在server.xml中配置<Context  docBase="部署项目的路径【webContent文件夹】"  path="项目名称"  />

手动创建web项目

    1. 建立一个JAVA工程
    2. 新建一个普通文件夹【自定义命名】
      • 网页
      • WEB-INF文件夹
        1. classes文件夹【将字节码文件的输出路径】
        2. lib文件夹【引入第三方jar包】
        3. web.xml【项目的配置文件】

实现servlet程序

    1. servlet的实现类
      • 实现servlet接口
      • 继承GenericServlet类
      • 继承HttpServlet类
    2. web.xml中进行配置

<servlet>

<servlet-name>自定义名【不能是数字、汉字】

<servlet-class>完全限定名

</servlet>

<servlet-mapping>

<servlet-name>和上面的servlet-name保持一致

<url-pattern>/路径

</servlet-mapping>

常见报错:

问题:404

路径问题

ip:端口/项目名/网页名称【网页路径】

  1. html

问题:500【突然的自我】

ClassNotFound:字节码文件没找到

项目结构正常的情况

  1. eclipse没生成   清除clean也没用
  2. 直接去workspace中去删除classes文件夹

项目有问题:

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>

<!-- Servlet的名称 -->

    <servlet-name>test1</servlet-name>

    <!-- Servlet的全路径 -->

    <servlet-class>com.itsource.servlet.ServletDemo1</servlet-class>

  </servlet>

  

  <!-- Servlet的映射 -->

  <servlet-mapping>

   <!-- Servlet的名称,注意不要和tomcat的web.xml冲突 -->

   <servlet-name>test1</servlet-name>

   <!-- Servlet的访问路径 -->

   <url-pattern>/ServletDemo1</url-pattern>

  </servlet-mapping>

访问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

<servlet>

<!-- Servlet的名称 -->

    <servlet-name>test1</servlet-name>

    <!-- Servlet的全路径 -->

    <servlet-class>com.itsource.servlet.ServletDemo1</servlet-class>

  </servlet>

  

  <!-- Servlet的映射 -->

  <servlet-mapping>

   <!-- Servlet的名称,注意不要和tomcat的web.xml冲突 -->

   <servlet-name>test1</servlet-name>

   <!-- Servlet的访问路径 -->

   <url-pattern>/ServletDemo1</url-pattern>

  </servlet-mapping>

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再总结一次

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值