回顾:
jsp:java服务器页面jsp的脚本jsp的注释html注释java注释jsp注释<%-- --%>jsp的指令page:声明页面一些属性重要的属性:importpageEncodingcontentType了解属性isErrorPage:一旦他的值为true jsp页面就是可以使用exception内置对象include:静态包含,(内容)taglib:导入标签库jsp的内置对象 9个out requestresponsesessionexceptionpageconfigapplicationpageContextjsp的域对象pageContextrequestsessionapplicationjsp的动作标签jsp:forward 请求转发jsp:include 动态包含(运行结果)
el:从jsp2.0使用的内置表达式语言替代<%=...%>作用:1.获取域中的数据简单${域.域中属性名}${域中属性名}:若找不到返回一个""注意:若属性名字中有"."等特殊符号的时候必须使用 ${域["域中属性名"]}复杂数组和list ${域中名称[index]}map    ${域中的名称.键}javabean导航javabean:1.必须公共的类2.私有字段3.提供公共的访问字段的方法  get|set|is一旦提供公共的方法之后,get|set|is后面的名称首字母小写,这个东西称之为bean属性例如:getName()  name就是一个bean属性4.提供一个无参构造器5.一般会实现序列化接口${域中的属性名.bean属性}2.执行运算注意:+empty三元运算符el的内置对象:cookie${cookie.cookie名称.value}pageContext在jsp页面动态的获取项目路径 /day11${pageContext.request.contextPath}
jstl:jsp 标准标签库apache组织使用步骤:1.导入jar包2.在页面上导入标签库core:核心包c:if 判断c:forEach 循环
//
分层和事务
案例-使用mvc思想完成转账操作
需求:在一个页面上有汇款人 收款人 转账金额.一旦转账之后,汇款人金额减少,收款人金额增多.使用事务控制起来.
技术分析:mvc思想事务
///
mvc思想servlet-->缺点:生成html内容太麻烦|jsp--->缺点:阅读起来不方便,维护比较困难|jsp+javabean:jsp的model1:jsp:接受请求,展示数据javabean:和数据打交道 |jsp+javabean+servletjsp的model2:jsp:展示数据javabean:和数据打交道servlet:接受请求,处理业务逻辑就是MVC思想的体现
MVC:就是将业务逻辑,代码,显示相分离的一种思想M:model 模型 作用:主要是封装数据,封装对数据的访问V:view   视图 作用:主要是用来展示数据 一般是jsp担任的C:ctrl 控制 作用:接受请求,找到相应的javabean完成业务逻辑
/
jsp设计模式1 model1:(了解)javabean+jspjavabean在model1使用(了解)<!-- 接受值 --><jsp:useBean id="u" class="com.itheima.domain.User"></jsp:useBean><!--相当于  User u=new User()--><jsp:setProperty property="name" name="u"/><!--相当于  u.setName(...)--><jsp:setProperty property="password" name="u"/><!-- 打印值--><jsp:getProperty property="name" name="u"/>
//
反射:1.获取class对象方式1:Class clazz=Class.forName("全限定名")方式2:Class clazz=类名.class;方式3:Class clazz=对象.getClass;2.可以获取对应类的构造方法(了解)Constructor con = clazz.getConstructor(Class .. paramClass);Person p = (Person) con.newInstance(参数);3.可以通过clazz创建一个对象(了解)clazz.newInstance();//相当于调用的无参构造器4.可以通过clazz获取所有的字段 getFiled()(了解中的了解)5.可以通过clazz获取所有的方法Method m = clazz.getMethod("sleep");//获取公共的方法Method m = clazz.getDeclaredMethod("sleep");//获取任意的方法注意:若是私有的方法 必须让该方法可以访问m.setAccessible(true);6.Method对象的invoke是有返回值,他的返回值就是目标方法执行的返回值
总结:有了class对象之后,无所不能.javabean在model2中使用BeanUtils:可以看作封装数据一个工具类使用步骤:1.导入jar包2.使用BeanUtils.populate(Object bean,Map map);/
分层:javaee的三层架构web作用:展示数据 ----jsp-----servlet-------接受请求找到对应的service,调用方法 完成逻辑操作信息生成或者页面跳转service 业务层作用:完成业务操作调用daodao(data access object 数据访问对象)作用:对数据库的curd操作
/
/
事务:就是一件完整的事情,包含多个操作单元,这些操作要么全部成功,要么全部失败.例如:转账包含转出操作和转入操作.mysql中的事务:mysql中事务默认是自动提交,一条sql语句就是一个事务.开启手动事务方式方式1:关闭自动事务.(了解)set autocommit = off;方式2:手动开启一个事务.(理解)start transaction;-- 开启一个事务commit;-- 事务提交rollback;-- 事务回滚扩展:oracle中事务默认是手动的,必须手动提交才可以.例如:创建数据库和表create database day13;use day13;create table account(name varchar(20),money int);insert into account values('aa','1000');insert into account values('bb','1000');完成 aa给bb转500;update account set money = money - 500 where name='aa';update account set money = money + 500 where name='bb';java中的事务:Connection接口的api:★setAutoCommit(false);//手动开启事务commit():事务提交rollback():事务回滚扩展:了解 Savepoint还原点void rollback(Savepoint savepoint) :还原到那个还原点Savepoint setSavepoint() :设置还原点/步骤分析:1.数据库和表2.新建一个项目 day13013.导入jar包和工具类驱动 jdbcUtilsc3p0及其配置文件和工具类dbutils4.新建一个account.jsp 表单5.accountservlet:接受三个参数调用accountservice.account方法完成转账操作打印信息6.account方法中:使用jdbc不考虑事务调用dao完成转出操作调用dao完成转入操作7.dao中一旦出现异常,钱飞了.要想避免这事情,必须添加事务,在service添加事务.为了保证所有的操作在一个事务中,必须保证使用的是同一个连接在service层我们获取了连接,开启了事务.如何dao层使用此连接呢????方法1:向下传递参数.注意连接应该在service释放方法2:可以将connection对象绑定当前线程上jdk中有一个ThreadLocal类,ThreadLocal 实例通常是类中的 private static 字段,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联。 ThreadLocal的方法:构造:new ThreadLocal()set(Object value):将内容和当前线程绑定Object get():获取和迪昂前线程绑定的内容remove():将当前线程和内容解绑内部维护了map集合map.put(当前线程,内容);map.get(当前线程)map.remove(当前线程)
/
DButils:1.创建queryrunner2.编写sql3.执行sql
QueryRunner:构造:new QueryRunner(DataSource ds):自动事务new QueryRunner():手动事务常用方法:update(Connection conn,String sql,Object ... params):执行的cud操作query(Connection conn....):执行查询操作注意:一旦使用手动事务,调用方法的时候都需要手动传入connection,并且需要手动关闭连接事务总结:事务的特性:★★★ACID原子性:事务里面的操作单元不可切割,要么全部成功,要么全部失败一致性:事务执行前后,业务状态和其他业务状态保持一致.隔离性:一个事务执行的时候最好不要受到其他事务的影响持久性:一旦事务提交或者回滚.这个状态都要持久化到数据库中不考虑隔离性会出现的读问题★★脏读:在一个事务中读取到另一个事务没有提交的数据不可重复读:在一个事务中,两次查询的结果不一致(针对的update操作)虚读(幻读):在一个事务中,两次查询的结果不一致(针对的insert操作)通过设置数据库的隔离级别来避免上面的问题(理解)read uncommitted   读未提交    上面的三个问题都会出现read committed   读已提交    可以避免脏读的发生repeatable read        可重复读    可以避免脏读和不可重复读的发生serializable     串行化     可以避免所有的问题了解演示脏读的发生:将数据库的隔离级别设置成 读未提交set session transaction isolation level read uncommitted;查看数据库的隔离级别select @@tx_isolation;避免脏读的发生,将隔离级别设置成  读已提交set session transaction isolation level read committed;不可避免不可重复读的发生.避免不可重复读的发生 经隔离级别设置成 可重复读set session transaction isolation level  repeatable read;演示串行化 可以避免所有的问题set session transaction isolation level  serializable;锁表的操作.四种隔离级别的效率read uncommitted>read committed>repeatable read>serializable四种隔离级别的安全性read uncommitted<read committed<repeatable read<serializable开发中绝对不允许脏读发生.mysql中默认级别:repeatable readoracle中默认级别:read committedjava中控制隔离级别:(了解)Connection的apivoid setTransactionIsolation(int level) level是常量///
//////
上午回顾:
jsp的设计模式model1:jsp+javabean(了解)model2:jsp+servlet+javabeanjsp:展示数据servlet:接受请求,处理业务逻辑javabean:封装数据,封装对数据的访问
MVC:将业务逻辑 代码 显示相分离M:model 模型    封装数据,封装对数据的访问V:view 视图  展示数据,目前jsp担任C:ctrl  控制  接受请求
三层架构:web:作用:展示数据接受请求调用service页面跳转,信息的生成service作用:处理业务逻辑调用daodao作用:对数据库的curd操作
///
反射:1.获取class对象2.通过class获取构造器3.通过class获取字段4.通过class获取指定的方法5.可以执行方法
/
事务:就是一件完整的事情,可以包含多个操作单元,这些单元要么全部成功,要么全部失败
mysql中的事务(了解)默认自动提交. 控制事务:1.关闭自动事务2.手动打开一个事务start transaction;commit;rollback;
java中事务:(★)Connection的apisetAutoCommit(false):手动开启事务commit():事务提交rollback():事务回滚
/
如何使用同一个connection1.向下传递2.将连接绑定到当前线程ThreadLocalset(Object value)Object get()remove()
//
DBUtils中事务控制QueryRunner:构造:new QueryRunner(Datasource ds)://自动事务.调用方法的不需要传入connection,资源不用我们释放.new QueryRunner()://手动事务.调用方法的必须传入connection,需要手动提交事务或者回滚事务.必须手动的释放资源
/
事务的特性 ★★★ACID原子性 一致性 隔离性 持久性
不考虑隔离性会出现的读问题★★脏读  不可重复度 虚读
数据库的隔离级别read uncommitted 读未提交 不能避免任何问题★read committed   读已提交 避免脏读★repeatable read 可重复度 避免脏读和不可重复读的发生serializable 串行化 避免所有的问题/
servlet会创建一个servlet会更改web.xmlservletContext:全局管理者 上下文资源共享(域对象)获取资源文件getRealPath()getResourceAsStream()获取mimetypegetMimeType()面试题:serlvet的生命周期
rrresponse:往浏览器写东西重定向:response.sendRedirect(绝对路径)定时刷新:refreshsetHeader("refresh","秒数;url=跳转路径")metagetWriter():字符流getOutputStream():字节流文件下载:setContentType(mime类型)setHeader("content-disposition","attachment;filename="+文件名);request:获取浏览器发送过来的数据获取参数:3个中文乱码:通用的方式new String(名字.getBytes("iso-8859-1"),"utf-8");针对post请求request.setCharacterEncoding("utf-8");请求转发(域对象)request.getRequestDispatcher(内部路径).forward(..);cookie和sessioncookie:浏览器端会话技术常用方法:new Cookie(String key,String value);写回浏览器response.addCookie(Cookie c)获取cookierequest.getCookies()cookie的apigetName()getValue()setMaxAge(int 秒)setPath(String path)session:服务器端的会话技术常用方法:获取sessionrequest.getSession域对象:私有的数据创建:销毁:服务器非正常关闭session超时手动删除:session.invalidate()jsp el jstljsp的指令 include taglibjsp的内置对象 面试题jsp:forwardjsp:includeel:全部获取数据执行运算jstl:ifforeach

  

转载于:https://www.cnblogs.com/chenyanlong/p/9986190.html

day13-(事务mvc反射补充)相关推荐

  1. MVC事务补充反射补充

    1.MVC是什么: M:model 模型 作用:主要是封装数据,封装对数据的访问     V:view     视图 作用:主要是用来展示数据 一般是jsp担任的     C:ctrl    控制 作 ...

  2. 13-Javaweb-JSPmvc模式 JDBC事务 反射补充

    目录 一.分层和事务 1-0 案例-使用mvc思想完成转账操作 1-1 mvc思想 1-2 MVC 1-3 jsp设计模式1 model1:(了解,已过时) 1-4 反射 1-4-1 获取class对 ...

  3. Spring MVC 反射对象和依赖注入

    今天,上班写接口的时候,和同事讨论, 是否所有接口能调用同一个地址,通过key作为参数,把模块名和方法名传入,把模块名称和方法名通过反射机制,获取到对应模块名下的方法,通过对应的参数返回想要的结果 讨 ...

  4. jsp 事务 反射 基础基础知识

        如果我的博客能够帮到大家能够点个赞,关注一下,以后还会更新更过JavaWeb的高级技术,大家的支持就是我继续更新的动力.谢谢. 为了方便之后的复习,将学习笔记发布到博客中,供大家使用. jsp ...

  5. Spring事务原理详解

    一.使用 spring事务开启和使用比较简单,需要有数据源和事务管理器,然后在启动门面类上开启事务,在需要使用事务的地方添加注解就可以了,我们简单做一下回顾. 1.配置数据源 spring.datas ...

  6. Web框架之Django_06 模型层了解(F查询、Q查询、事务、update和save、only和defer、choice属性、bulk_create)

    阅读目录 一.F查询 二. Q查询 三.事务 四.补充的一些常用的操作 摘要: F查询 Q查询 事务 一.F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个我们自己设定的常量做比较.如果 ...

  7. spring事务环境搭建

    Spring事务里面主要是分为两种事务,一种是叫做编程事务,编程事务我们叫做手动事务,自己去begin,commit,rollback回滚,这个是编程事务的,而起我刚才也讲过的,声明事务本质是使用编程 ...

  8. spring声明事务与编程事务概述

    刚才扯了这么多AOP技术,为什么呢,就是为了引入到我们事务里面去的,首先在这里要说一下几个点,在Spring的事务里面,记住一点,Spring的事务一般有几种方式去实现呢,第一种事务叫编程事务,第二种 ...

  9. Spring MVC初见面

    >简介 SpringMVC是Spring框架的一个模块,SpringMVC和Spring无需通过中间整合层进行整合.SpringMVC是一个基于MVC的web框架,即Spring Web MVC ...

最新文章

  1. Linux下tcpdump用法
  2. Implement strStr()
  3. java 线程安全_Java创建线程安全的方法
  4. 数据库表初始化,删除所有数据后主键ID从1开始
  5. [Asp.Net Core轻量级Aop解决方案]AspectCore Project 介绍
  6. [css] 怎么让body高度自适应屏幕?为什么?
  7. 倒序存放数组java_Java集合大全Map,Set,List
  8. Android Audio Focus的应用(requestAudioFocus)
  9. BMC REDFISH
  10. DSP程序nbsp;调试总结
  11. 探索者易打软件--实现AutoCAD批量打印和自动命名
  12. mybatis基础(上)
  13. mysql 分区表如何恢复_如何恢复mysql 单个innodb 分区表
  14. 鹿晗关晓彤公布恋情微博服务器崩了,程序员结婚当天加班
  15. 蓝牙耳机什么样式最舒服?推荐一款好用的蓝牙耳机
  16. Google Pay 初步集成
  17. 安卓应用加固壳判断java厂商_Android APK加固(加壳)工具
  18. Java生鲜电商平台-商品中心的架构设计与源码解析
  19. ASUS 华硕 NX580V 飞行堡垒 安装WIN7系统教程
  20. [512大地震]今日图说:四川汶川地震涌现出的16个最牛

热门文章

  1. Hadoop作业提交分析(三)
  2. ZOJ-1610-Count the Colors
  3. 看似无参却有参-----JS中的函数传参
  4. “+=”消除格式的强转问题
  5. 两种方式实现js, ajax跨域
  6. SharePoint自动化系列——Solution auto-redeploy using Selenium(C#)
  7. 页面排序(上下元素对换)
  8. HDU4666 Hyperspace(数学推理+数据结构)
  9. windows 7下用SaveFileDialog弹不出对话框问题
  10. android 使用photoshop 裁剪图片