CP30的演示

  1. package cn.itcast.datasourcejdbc;
  2. import com.mchange.v2.c3p0.ComboPooledDataSource;
  3. import javax.sql.DataSource;
  4. import java.sql.Connection;
  5. import java.sql.SQLException;
  6. public class C3P0Demo2 {
  7. public static void main(String[] args){
  8. //创建连接池对象,使用多态
  9. //不指定配置文件的名称,会连接默认配置
  10. DataSource ds = new ComboPooledDataSource();
  11. //使用getConnection方法获取连接
  12. try{
  13. //归还连接对象演示
  14. //文件默认配置了10个连接
  15. for(int i = 0 ; i <10 ; i++){
  16. Connection c = ds.getConnection();
  17. //i<5个的话不会报错
  18. //i<11的话会报异常 An attempt by a client to checkout a Connection has timed out.
  19. System.out.println(i+""+c);
  20. //现在归连接
  21. if(i==5){
  22. c.close();
  23. //运行正常,并且控制台打印的对象有两个地址是一样的
  24. }
  25. }
  26. }catch(SQLException e){
  27. e.printStackTrace();
  28. }
  29. }
  30. }

Druid

  1. package cn.itcast.druid;
  2. import com.alibaba.druid.pool.DruidDataSourceFactory;
  3. import javax.sql.DataSource;
  4. import java.io.InputStream;
  5. import java.sql.Connection;
  6. import java.util.Properties;
  7. public class DruidDemo1 {
  8. public static void main(String[] args) throws Exception{
  9. //druid包下的类DruidDataSourceFactory有个方法可以获取到连接池对象
  10. // DruidDataSourceFactory需要Properties参数
  11. //创建Properties对象
  12. Properties p = new Properties();
  13. //加载读取文件配置,需要一个参数字节输入流或字符输入流
  14. //获取字节输入流参数,可以先获取字节码文件然后通过方法getClassLoader来获取ClassLoader对象
  15. //通过ClassLoader对象来获取字节输入流
  16. Class aClass=new DruidDemo1().getClass();
  17. ClassLoader aClassClassLoader= aClass.getClassLoader();
  18. InputStream aInputStream = aClassClassLoader.getResourceAsStream("druid.properties");
  19. //有了字节输入流对应的资源,就可以让他加载了
  20. //以上代码都可以通过一行代码来实现
  21. //InputStream aInputStream = DruidDemo1.class.getClassLoader().getResourceAsStream("druid.properties");
  22. p.load(aInputStream);
  23. //获得数据库连接池对象
  24. DataSource ds = DruidDataSourceFactory.createDataSource(p);
  25. //创建连接
  26. Connection aConnection = ds.getConnection();
  27. System.out.println(aConnection);
  28. }
  29. }

Druid工具类的创建

  1. package cn.itcast.utils;
  2. import com.alibaba.druid.pool.DruidDataSourceFactory;
  3. import javax.sql.DataSource;
  4. import java.io.IOException;
  5. import java.sql.Connection;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.sql.Statement;
  9. import java.util.Properties;
  10. public class JDBCUtils {
  11. //定义成员变量DataSource
  12. private static DataSource ds;
  13. static{
  14. try {
  15. //加载配置文件
  16. Properties pro = new Properties();
  17. pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
  18. //获取连接池
  19. ds = DruidDataSourceFactory.createDataSource(pro);
  20. } catch (Exception e) {
  21. e.printStackTrace();
  22. }
  23. }
  24. //获取连接方法
  25. public static Connection getConnection() throws SQLException {
  26. return ds.getConnection();
  27. }
  28. //释放资源方法
  29. public static void close(Statement stmt, Connection conn){
  30. if(stmt != null){
  31. try {
  32. stmt.close();
  33. } catch (SQLException e) {
  34. e.printStackTrace();
  35. }
  36. }
  37. if(conn != null){
  38. try {
  39. conn.close();
  40. } catch (SQLException e) {
  41. e.printStackTrace();
  42. }
  43. }
  44. }
  45. public static void close(ResultSet rs,Statement stmt, Connection conn){
  46. if(rs != null){
  47. try {
  48. rs.close();
  49. } catch (SQLException e) {
  50. e.printStackTrace();
  51. }
  52. }
  53. if(stmt != null){
  54. try {
  55. stmt.close();
  56. } catch (SQLException e) {
  57. e.printStackTrace();
  58. }
  59. }
  60. if(conn != null){
  61. try {
  62. conn.close();
  63. } catch (SQLException e) {
  64. e.printStackTrace();
  65. }
  66. }
  67. }
  68. //获取连接池方法
  69. public static DataSource getDataSouce(){
  70. return ds;
  71. }
  72. }
  1. package cn.itcast.druid;
  2. import cn.itcast.utils.JDBCUtils;
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.SQLException;
  6. public class DruidDemo2 {
  7. public static void main(String[] args) {
  8. Connection c =null;
  9. PreparedStatement ps =null;
  10. //使用Druid操作数据库
  11. try {
  12. //获取连接
  13. c = JDBCUtils.getConnection();
  14. //要执行sql语句,需要先创建sql语句,sql语句的参数使用?占位符
  15. String sql = "INSERT INTO emp(id,ename,salary)VALUES(?,?,?)";
  16. //要执行sql语句,需要创建prepareStatement对象
  17. //prepareStatement对象可以通过Connection对象的方法来获取
  18. ps = c.prepareStatement(sql);
  19. //调用prepareStatement的方法给占位符赋值
  20. ps.setInt(1,10015);
  21. ps.setString(2,"李白");
  22. ps.setDouble(3,15000.00);
  23. //执行sql语句
  24. int count = ps.executeUpdate();
  25. System.out.println(count);
  26. } catch (SQLException e) {
  27. e.printStackTrace();
  28. }finally {
  29. JDBCUtils.close(ps,c);
  30. }
  31. }
  32. }
  1. package cn.itcast.jdbcTemplate;
  2. import cn.itcast.utils.JDBCUtils;
  3. import org.springframework.jdbc.core.JdbcTemplate;
  4. public class JDBCTemplateDemo {
  5. public static void main(String[] args) {
  6. //创建JDBCTemplate对象
  7. //参数给予数据源,让他连接到数据库
  8. JdbcTemplate jt = new JdbcTemplate(JDBCUtils.getDataSouce());
  9. //定义sql语句
  10. String sql = "UPDATE emp set salary = ? where id = ?";
  11. //调用update方法,参数一个是sql语句,另一个给占位符赋值
  12. //赋值与问好占位符一一对应
  13. int count = jt.update(sql,20000.00,10015);
  14. System.out.println(count);
  15. }
  16. }

Spring JDBC

Spring框架对JDBC的简单封装,提供了一个JDBCTemplate对象简化JDBC的开发

步骤:

  1. 导入jar包
  2. 创建jdbcTemplate对象。依赖于数据源DataSource
  3. 调用jdbcTemplate的方法来完成crud的操作
    1. update():执行DML语句,增删改语句
    2. queryForMap():查询结果将结果集封装为map集合
    3. queryForList();查询结果将结果集封装为list集合
    4. query():查询结果,将结果封装为JavaBeanduixang
    5. queryForObject:查询结果封装为对象
  1. package cn.itcast.test;
  2. import cn.itcast.utils.JDBCUtils;
  3. import org.junit.Test;
  4. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  5. import org.springframework.jdbc.core.JdbcTemplate;
  6. import java.sql.Connection;
  7. import java.sql.SQLException;
  8. import java.util.List;
  9. import java.util.Map;
  10. public class Demo {
  11. private JdbcTemplate jt = new JdbcTemplate(JDBCUtils.getDataSouce());
  12. //单元测试,可以让方法独立执行
  13. @Test
  14. //修改1001号数据salary为15000
  15. public void test1(){
  16. //创建框架对象,参数传递数据源
  17. //创建sql语句
  18. String sql = "Update emp set salary = 15000 where id = ?";
  19. //有了框架,不用创建prepareStatement对象也可以执行sql语句了
  20. int count = jt.update(sql,1001);
  21. System.out.println(count);
  22. }
  23. //添加一条记录
  24. @Test
  25. public void test2(){
  26. String sql = "insert into emp(id,ename,salary) values (?,?,?)";
  27. int count= jt.update(sql,1016,"郭靖",12000);
  28. System.out.println(count);
  29. }
  30. //删除刚刚添加的记录
  31. @Test
  32. public void test(){
  33. String sql = "delete from emp where id = ?";
  34. int count = jt.update(sql,1016);
  35. System.out.println(count);
  36. }
  37. //查询id为1001的记录,将其封装为Map集合
  38. @Test
  39. public void test4(){
  40. String sql = "select * from emp where id = ?";
  41. //查询的结果集长度只能是1,如果要查询两行的数据的话,会报错
  42. Map<String,Object> map = jt.queryForMap(sql,1001);
  43. System.out.println(map);
  44. //{id=1001, ename=孙悟空, job_id=4, mgr=1004, joindate=2000-12-17, salary=15000.00, bonus=null, dept_id=20}
  45. }
  46. @Test
  47. //查询所有记录,将其封装为List集合
  48. public void test5(){
  49. String sql = "select * from emp";
  50. //queryForList方法会把每一天记录封装为map集合,然后再将map集合封装为List集合
  51. List<Map<String,Object>> list = jt.queryForList(sql);
  52. for(Map<String,Object> map : list){
  53. System.out.println(map);
  54. }
  55. }
  56. @Test
  57. //查询所有记录,将其封装成Emp对象的list集合
  58. public void test6(){
  59. String sql = "select * from emp";
  60. //query方法有两个参数,一个是sql语句,一个是RowMapper的实现类,一般我们使用它给我们提供的实现类,BeanPropertyRowMapper,这个实现类可以完成数据到JavaBean的自动封装
  61. List<Emp> list = jt.query(sql,new BeanPropertyRowMapper<Emp>(Emp.class));
  62. for(Emp emp :list){
  63. System.out.println(emp);
  64. }
  65. }
  66. @Test
  67. //查询总记录数
  68. public void test7(){
  69. String sql = "select count(id) from emp";
  70. //第一个参数是sql,第二个参数是class类型,是一个将来要返回的Class类型
  71. //将来要返回Long类型,那么参数就是Long.class
  72. Long l = jt.queryForObject(sql,Long.class);
  73. System.out.println(l);
  74. }
  75. }

Web概念概述

JavaWeb:使用Java语言开发基于互联网的项目

软件架构:

  1. C/S:Client/Server 客户端/服务器端

    在用户本地有一个客户端程序,在远程有一个服务器端程序

    如QQ,迅雷....

    优点:1.用户体验号

    缺点:开发,安装,部署,维护麻烦

  2. B/S:Browser/Server 浏览器/服务器端

    只需要一个浏览器,用户通过不同的网址(URL),客户访问不同的服务器端程序

    优点:1.开发,安装,部署,维护,简单

    缺点:如果应用过大,用户体验可能会受影响

    ​ 对硬件要求过高

B/S架构详解
资源分类:

1.静态资源:使用静态网页开发技术发布的资源,特点:所有用户访问,得到结果是一样的,比如,文本,图片,视频,HTML,CSS,JavaScript。如果用户请求的是静态资源,那么服务器会直接将静态资源放送给浏览器。浏览器中内置了静态资源的解析引擎,可以展示静态资源

2.动态资源:使用动态网页及时发布的资源,特点所有用户访问,得到的结果可能不一样,如:JSP/servlet,php,asp....。如果用户请求的是动态资源,那么服务器就会执行动态资源,转换为静态资源,在发送给浏览器

我们要学习动态资源你,就必须先学习静态资源

静态资源(三剑客):

HTML:用于搭建基础网页,展示网页的内容

CSS:用于美化页面,布局页面

JavaScript:控制页面的元素,让页面有一些动态的效果

HTML快速入门

语法:

  1. html文档后缀名.html 或者.htm
  2. 标签分为
    1. 围堵标签:有开始标签和结束标签如
    2. 自闭和标签:开始标签和结束标签在一起
  3. 标签可以嵌套:
  4. 在开始标签中可以定义属性。属性是由键值对构成,值需要用引号引起来
  5. html的标签不区分大小写,但是建议小写。
  1. <html>
  2. <head>
  3. <title>title</title>
  4. </head>
  5. <body>
  6. <font color='red'>Hello World</font><br/>
  7. <font color='green'>Hello World</font>
  8. </body>
  9. </html>

3.标签学习

  1. 文件标签:构成html最基本的标签

    1. html:html文档的根标签
    2. head:头标签。用于指定html文档的一些属性。引入外部资源
    3. title:标题标签
    4. body:体标签
    5. (): html5中定义该文档是html文档
  2. 文本标签:和文本有关的标签

    1. 注释:

    2. .

      to

      :标题标签

    3. .

      :段落标签

    4. 换行标签

    5. 展示水平线


      ;拥有属性可以改变水平线的样式color:颜色,width:宽度,size:高度,align:对齐方式(center:居中对齐,left:左对齐,right:右对齐)

    6. 字体加粗:

    7. 字体斜体

    8. 字体标签有颜色(color),大小(size),字体样式的属性(face)

      属性定义:

      1. color

        1. 英文单词:red,green,blue
        2. rge(值1,值2 ,值3),值得范围0~255,如 rgb(0,0,255),表示红色绿色为0,蓝色为255

        width:

        1. 数值:width='20',数值的单位,默认是px(像素)
        2. 数值%:占比相对于父元素的比列
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>文本标签</title>
  6. </head>
  7. <body>
  8. <!-- 注释 -->
  9. <!-- br 换行-->
  10. <!--h1~h6标题标签-->
  11. 云想衣裳花想容<br>
  12. 春风扶槛露华浓<br>
  13. 若非群玉山头见<br>
  14. 会向瑶台月下逢<br>
  15. <!-- 段落标签 p-->
  16. <p>
  17. 黄河远上白云间
  18. <p/>
  19. <p>
  20. 一片孤城万仞山
  21. <p/>
  22. <p>
  23. 羌笛何须怨杨柳
  24. <p/>
  25. <p>
  26. 春风不度玉门关
  27. </p>
  28. <!--hr显示一条水平线 是自闭和标签-->
  29. <hr color = 'red'/>
  30. <!--加粗b-->
  31. 春风不度玉门关<br>
  32. <b>春风不度玉门关</b>
  33. <!--斜体i-->
  34. <i>羌笛何须怨杨柳</i>
  35. <hr>
  36. <!--字体font-->
  37. <font color="red" size ="5" face="楷体">云想衣裳花想容</font><br>
  38. </body>
  39. </html>
  1. 图片标签:

    1. src:指定图片的位置
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>图片标签</title>
  6. </head>
  7. <body>
  8. <!--alt 代表找不到图片的话就用指定的文字代替-->
  9. <img src="3.jpg" width="500" align="right" alt="图片挂了">
  10. </body>
  11. </html>
  1. 列表标签:

    ​ 有序列表:ol , li代表每一项

    ​ 无序列表ul ,li代表每一项

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Title</title>
    6. </head>
    7. <body>
    8. <!--有序列表ol-->
    9. 早上起床干的事情
    10. <ol>
    11. <li>睁眼</li>
    12. <li>看手机</li>
    13. <li>洗衣服</li>
    14. <li>洗漱</li>
    15. </ol>
    16. <!--有无列表ul-->
    17. <ul>
    18. <li>睁眼</li>
    19. <li>看手机</li>
    20. <li>洗衣服</li>
    21. <li>洗漱</li>
    22. </ul>
    23. </body>
    24. </html>
  2. 链接标签:

    a:定义以超链接

    ​ 属性:href:指定访问资源的URL(统一资源定位符)

    ​ target :指定打开资源的方式

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>链接标签</title>
  6. </head>
  7. <body>
  8. <!--超链接a-->
  9. <a href="https://www.cnblogs.com/train99999/">点击在本页面进入我的博客</a><br>
  10. <!--点击在新的页面打开选项卡-->
  11. <a href="https://www.cnblogs.com/train99999/" target="_blank">点击在新的选项卡中打开</a><br>
  12. <!--访问本地的资源-->
  13. <a href="3.jpg">点击加载本地图片</a><br>
  14. <!--打开会打开本地邮箱-->
  15. <a href="mailto:123456@train.com">点击联系我</a>
  16. <!--点击图片加载链接-->
  17. <a href="https://www.cnblogs.com/train99999/"><img src="3.jpg"></a>
  18. </body>
  19. </html>

div和span:

div:每一个div占满一整行,块级标签

span:文本信息在一行展示,行内标签,内联标签

语义化标签:html5中为了提高程序的可读性,提供了一些标签(header,footer)这些标签对页面没有任何的样式。

笔记-JavaWeb学习之旅5的更多相关文章

  1. 笔记-JavaWeb学习之旅7

    JavaScript基础 概念:一门客户端脚本语言,运行在客户端浏览器中,每一个浏览器都有JavaScript的解析引擎,是一个脚本语言,不需要编译,直接就可以被浏览器解析执行. JavaScript ...

  2. 笔记-JavaWeb学习之旅19

    Redis:redis是一款高性能的NOSQL系列的非关系型数据库 NOSQL: Not Only SQL ,意即"不仅仅是SQL",是一项全新的数据库理念,泛指非关系型数据库 r ...

  3. 笔记-JavaWeb学习之旅18

    AJAX:ASynchronous JavaScript And XML 异步的JavaScript 和XML 异步和同步:客户端和服务器端相互通信的基础上 同步:客户端操作后必须等待服务器端的响应, ...

  4. 笔记-JavaWeb学习之旅17

    1.过滤选择器 首元素选择器:first 获得选择的元素中的第一个元素 尾元素选择器:last获得选择元素中的最后一个元素 非元素选择器:not(selector) 不包括指定内容的元素 偶数选择器: ...

  5. 笔记-JavaWeb学习之旅16

    增强对象的功能 动态代理:在内存中形成代理类 实现步骤: 代理对象和真实对象实现相同的接口 代理对象 = Proxy.newProxyInstance(); 使用代理对象调用真实对象的方法 增强方法 ...

  6. 笔记-JavaWeb学习之旅15

    Filter:过滤器 概念:当访问服务器的资源是,过滤器可以将请求拦截下来,完成一些特殊的功能 快速入门: 步骤: 定义一个类,实现接口Filter 复写方法 配置拦截路径 package com.d ...

  7. 笔记-JavaWeb学习之旅14

    JSTL:JavaServer Pages Tag Library JSP标准标签库 if标签 <%@ page import="java.util.ArrayList" % ...

  8. 笔记-JavaWeb学习之旅10

    Servlet server applet运行在服务器端的小程序,servlet就是一个接口,定义了Java类被浏览器访问到的规则(Java类重写这个接口,就可以被浏览器(tomcat)识别) Ser ...

  9. 笔记-JavaWeb学习之旅13

    验证码案列 昨天晚上出现的500错误原因在于验证码没有获取到,获取验证码是应该获取的是共享域中的验证码,而我把获取值得键给写成了jsp中的键,而不是内存生成图片中,然后把图片上传到共享域中的键.这两个 ...

随机推荐

  1. 我的前端之旅-nodejs 安装静态的文件服务器 (1)

    一个最简单的 Web Server 之功能包含下列三个步骤:步骤一 : 接收浏览器所传来的网址:步骤二 : 取出相对应的文件:步骤三 : 将文件内容传回给浏览器.然而.在这个接收与传回的过程中,所有的 ...

  2. 云计算系列——HIVE1.2.1 环境搭建

    hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过 ...

  3. TMS320C6478+MCP2515

    调一个驱动,将看过的资料记录下来. 这个驱动写得比较直观:http://www.51hei.com/bbs/dpj-114085-1.html

  4. charles刷分微信跳一跳小程序对https的理解

    以前以为只要安装了https 客户端与服务端的数据会被加密就安全了 事实上 只要任意一款抓包工具 并伪造证书  就可以解密这个被所谓https加密的数据 如  可以下载charles的根证书  作为伪 ...

  5. POJ2406 Power Strings —— KMP or 后缀数组 最小循环节

    题目链接:https://vjudge.net/problem/POJ-2406 Power Strings Time Limit: 3000MS   Memory Limit: 65536K Tot ...

  6. 基于BASYS2的VHDL程序——交通灯(状态机版)

    请尊重作者版权,转载注明源地址:http://www.cnblogs.com/connorzx/p/3694618.html 使用了状态机,增加了可读性和用户体验. library IEEE; use ...

  7. w3C盒子模型和IE的盒子模型

    W3C 盒子模型的范围包括 margin.border.padding.content,并且 content 部分不包含其他部分IE 盒子模型的范围也包括 margin.border.padding. ...

  8. 怎样安装CentOS 6.6之三:磁盘分区的划分和修改

    安装 CentOS(或Linux)系统,最难的就是磁盘分区.磁盘分区需要根据自己的实际使用需要来规划,以达到最优的效果. 工具/原料   CentOS 6.6 安装包 VMware 虚拟机 一.划分方 ...

  9. HDU2222(AC自动机入门题)

    Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others ...

  10. 全民nib

    1.为任何组件创建nib文件 那么如何通过XIB来创建自己的个性化的class呢. 1.Add----New Filss---Cocoa Touch Classes---Object-C  Class ...