使用表达式配置切入点: 常用的表达式: execution(“* cn.itcast.aop.Book.add(..)”) execution(“* cn.itcast.aop.Book.(..)”) execution(“ .(..)”) —

配置切面的方法:
<aop:config>
    <aop:poingcut id="pointcut1" expresson="cn...(此处为需要添加前置方法的方法)"></aop:pointcut>
    <aop:aspect ref="beforeMethod"(此处为上面配置过的目标类)>
        <aop:before method="say"(此处为要执行那个前置方法) pointcut-ref="pointcut1"></aop:before>
    </aop:aspect>
</aop:config>
配置环绕的方法
<aop:before method="before1" pointcut-ref="pointcut1"/>
<aop:after-returning method="after1" pointcut-ref="pointcut1"/>
<aop:around method="around" pointcut-ref="pointcut1"/>

public void around1(ProceedingJoinPoint proceedingJoinPoint)  throws Throwable{
    sout("方法之前");
    proceedingJoinPoint.proceed();
    sout("方法之后");
}

导入log4j log4j.properties放到src目录下面 设置日志级别 log4j.rootLogger=info , stdout 基本信息级别 log4j.rootLogger=debug , stdout详细信息级别 —

  1. Struts2框架应用在javaee中web层
  2. Struts2框架在Struts1和webwork基础上发展的全新框架
  3. struts可以解决的问题:

    配置: ```

/hellp.jsp

访问路径:127.0.0.1/struts2_day01/hello.action 配置过滤器: web.xml中配置

strut2 </filter> structs2 /* </filter> result标签: 根据action的方法返回值,配置到不同的路径里面 /hello.jsp 默认转发,地址栏不变 ``` 分模块开发:引入xml文件,开发中最常见的方式 ``` ``` action的编写方式有三种 ``` 第一种:创建普通类,这个类不继承任何类,也不实现任何接口. 第二种:创建类实现Action接口(要实现接口,接口中方法必须实现,所以这种用的不多) 第三种:创建类,继承ActionSupport ``` 访问action的方法: ``` 有三种方式实现,主要前面两种方式 1. 使用action标签中的method属性,在这个属性里写执行的action方法 2. 使用通配符的方式实现 3. 动态访问方式(不用) ``` 演示错误: ``` 如果action中有返回值,在配置文件中没有配置, 出现错误. no result defined for action and result ok 没有返回值,就return Action.NONE ``` ``` Action的方法访问 1.这是第一种实现方式,但不适合方法多的项目 2.第二种,通配符方法:{1}用来去*的值 ``` 基于aspectj的注解 ``` 增强方法,创建对象,jnx;aop配置,配置切面,用注解方式实现 1.创建对象 2.在spring核心配置文件中,开启aop扫描操作 3.在增强的类上面完成注解 @Before(value = "execution(* com.Spring_aop.Book.*(..))") ``` Spring的jdbcTemplate操作 1.spring框架一站式框架 - 1.针对三层,每一层都有解决技术 - 2.在dao层,使用jdbcTemplate 3.jdbcTemplate的使用和dbutils使用很相似,都是对数据库进行crud操作. ``` DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource(); driverManagerDataSource.setDriverClassName("com.mysql.jdbc.Driver"); driverManagerDataSource.setUrl("jdbc:mysql://localhost:3306/spring"); driverManagerDataSource.setUsername("root"); driverManagerDataSource.setPassword("admin"); //2.创建jdbc模板对象 JdbcTemplate jdbcTemplate = new JdbcTemplate(driverManagerDataSource); //3.调用里面的方法 String sql = "insert into test values(?,?)"; //String sql = "update test set password = ? where username=?"; //String sql = "delete from test where username=?"; int rows = jdbcTemplate.update(sql,"lucy","350"); ``` --- ``` QueryRunner qr = new QueryRunner(datasource); 返回对象 runner.query(sql,new BeanHandler.class) 返回list runner.query(sql,new BeanListHandler.class) 在dbutils时候,有接口ResultSetHandler dbutils提供了不同结果实现类 2. jdbcTemplate实现查询,有接口RowMapper jdbcTemplate针对这个接口没有实现类,得到不同的数据需要自己进行数据的封装 ``` ``` 查询的具体实现 1.查询返回某一个值 select count(*) from test String sql = "select count(*) from test"; Integer count = jdbcTemplate.queryForObject(sql,Integer.class); 2.查询返回某一个对象 User user = jdbcTemplate.queryForObject(sql,new MyRowMapper(),"a"); class MyRowMapper implements RowMapper{ @Override public User mapRow(ResultSet resultSet, int i) throws SQLException { String username = resultSet.getString("username"); String password = resultSet.getString("password"); User user = new User(); user.setName(username); user.setPassword(password); return user; } } 3.查询返回list String sql = "select * from test"; List list = jdbcTemplate.query(sql,new MyRowMapper()); ``` --- String配置连接池和dao使用jdbcTemplate ``` 1.Spring配置c3p0连接池 jar:c3p0,mchange-commons 2.创建Spring的配置文件,将一下代码配入配置文件中 ComboPooledDataSource dataSource = new ComboPooledDataSource(); dataSource.setDriverClass("com.mysql.jdbc.Driver"); dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/spring"); dataSource.setUser("root"); dataSource.setPassword("admin"); ``` 将上面的代码用xml实现 ``` </beans> ``` Spring事务管理 ``` 事务相关的概念 1.要么都成功,要么都失败 2.特性:原子性,一致性,隔离性,持久性 3.不考虑隔离性,会产生三个不可读的问题 解决读问题:设置隔离级别 Spring进行事务管理 api: 哪些类,那些接口 两种方式: 1. 编程式事务管理(不用) 2. 声明式事务管理(主要) xml配置和注解实现 2.事务管理中的api: 事务管理器:接口:PlatformTransactionManager Spring为不同的持久化框架都提供了不同的platformTransactionManager接口实现 ``` ``` 搭建转账环境 service又叫做业务逻辑层 1.创建数据库表,添加数据 ```