SSH-框架工作笔记

Spring 的 aop操作:
    
    aop 相当于以前的过滤器,有拦截的功能

这里举个客人购买空调的例子。
    在用户购买之前,输出欢迎信息,在购买之后输出购买的空调信息;若果没有了这个商品,则跳转自定义错误。

1.定义购买之前的before方法;FrigBefore()
    public class FrigBefore {

public  void before(JoinPoint jp) throws Throwable{
        String com=(String)jp.getArgs()[0];//获取在FrigBizImp里面定义的方法的第一个参数,客户的名称
        System.out.println("欢迎光临"+com);
    }
   }
2.定义商品不存在的错误NoThisFrig()
   public class NoThisFrig  extends Exception{
    private static final long serialVersionUID = 3259019719837934771L;
    public  NoThisFrig(String msg){
        super(msg);
    }
   }

3.定义购买方法并抛出自定义异常NoThisFrig

public void buyFrig(String frig, String customer) throws NoThisFrig {
        if("美的".equals(frig)){
            throw new NoThisFrig("对不起没有"+frig+"的货了");
        }
        System.out.println("您已经成功购买一台"+frig);
    }
    
4.定义测试方法
    public class test {
    public static void main(String[] args) throws NoThisFrig {
        ApplicationContext app =
            new ClassPathXmlApplicationContext("applicationContext.xml");
      FrigBiz f=(FrigBiz) app.getBean("frigBizImp");    
        f.buyFrig("美的","李敏");
    }
   }

5.在applicationContext.xml页面里面配置文件
    <bean id="frigBizImp" class="com.zzzy.DaoImp.FrigBizImp"/>
    <bean id="frigBefore" class="com.zzzy.AOP.FrigBefore"/>
    <aop:config>
    <aop:pointcut id="p1" expression="execution(void buyFrig(String,String))"/>
    <aop:aspect id="logAspect" ref="frigBefore">
    <aop:before method="before" pointcut-ref="p1"/>
    </aop:aspect>
    </aop:config>
    
    
        <!-- 打印机 的配置   -->
    <bean id="color" class="com.zzzy.Entity.ColorInk"/>
    <bean id="gark" class="com.zzzy.Entity.GrayInk"/>
    <bean id="a3" class="com.zzzy.Entity.A3Page"/>
    <bean id="a4" class="com.zzzy.Entity.A4Page"/>
    <bean id="pointBefore" class="com.zzzy.AOP.PrintBefore"/>
    
    
    <bean id="printer" class="com.zzzy.DaoImp.Printer">
    <property name="ink" ref="color"/>
    <property name="page" ref="a3"/>
    </bean>
    
    <aop:config>
    <aop:pointcut id="p2" expression="execution(void printInfo())"/>
    <aop:aspect id="printAspect" ref="pointBefore">//这里一定要是pointBefore 而不是pointer
    //切面里面的ref--是before的类
    
    
    <aop:before method="before" pointcut-ref="p2"/>
    </aop:aspect>
    </aop:config>
    
    
    
    //使用注解方式配置切面
    1.启用注解配置  <aop:aspect-autoproxy/>
    
    2.配置目标业务对象
    <bean id="a" class="com.zzzy.DaoImp"></bean>
    3.配置切面
    <bean  class="com.zzzy.LogAspect"></bean>
    4.用注解配置切面的
    @Aspect
public class FrigAspect {
    
    //配置异常通知
    @AfterThrowing(pointcut="execution(void buyFrig(String,String))",throwing="e")
    public void afterThrowing(NoThisFrig e)throws Throwable{
        
        System.out.println("通知仓库,赶紧订货!");
        
    }
}

5.在业务方法的类中注解配置
@Repository
public class FrigBizImp  implements FrigBiz{

public void buyFrig(String frig, String customer) throws NoThisFrig {
        if("美的".equals(frig)){
            throw new NoThisFrig("对不起没有"+frig+"的货了");
        }
        System.out.println("您已经成功购买一台"+frig);
    }
}

时间: 2024-10-13 11:30:15

SSH-框架工作笔记的相关文章

SSH框架搭建 笔记 (含spring注解驱动)

分类: web 开发2014-04-27 12:33 354人阅读 评论(0) 收藏 举报 框架springinterface注解 好久没有搭建框架了,今天整理下以前的知识,整合下SSH,没想到手生了,一时半会各种异常出来,经过一番挣扎后,终于搞出来了雏形, 下面是我做整合框架的笔记,如果大家开发过程中又遇到的情况,可以参考下 首先是包的结构,(命名不算正规哈~,临时写的仓促了点) 框架是基于JAR包的基础上构建的,所以必须必备的jar包必须先下好, 如图: 没有的可以在本文源代码里下: 搭建框

【SSH】---【Struts2、Hibernate5、Spring4】【SSH框架整合笔记 】

一.为什么要使用接口? 三层体系架构上层调用下层的时候最好使用接口,比如action层调用service的时候,private IUserDAO userDAO;这里将属性定义为接口,调用DAO的时候都是调用接口里面的方法,实现了这个接口的类就有很多种实现方法了,既可以用hibernate的实现,也可以用JDBC的实现,这样在应用的时候就可以轻松切换了,大大提高了程序的灵活性. 二.Hibernate工作原理及为什么要用? 原理:1.通过Configuration().configure();读

SSH框架搭建笔记

1.建立一个web项目,设置编码格式,建立src下的包,建立资源文件夹 2.加入Spring运行必须的jar包(5个jar包) spring-beans-4.1.4.RELEASE.jar spring-context-4.1.4.RELEASE.jar spring-core-4.1.4.RELEASE.jar spring-expression-4.1.4.RELEASE.jar commons-logging-1.2.jar 3.建立Spring的配置文件 3.1 applicationC

SSH框架学习笔记(一)----JSP/servlet相关技术

开发自定义标签步骤: 开发自定义处理类: 继承javax.servlet.jsp.tagext.SimpleTagSupport类 如果有属性,每个属性都必须实现getter,setter方法 重写doTag方法 建立TLD文件: 文件放在WEB-INF目录下 定义<uri>标签 定义<tag>标签 <tag> <name>标签名</name> <tag-class>标签处理类</tag-class> <body-c

SSH框架学习笔记(二)----Filter,Listener以及JSP的新特性

Fileter:对用户请求进行预处理,接着讲请求交给Servlet进行处理并生成响应,最后在对服务器响应进行后处理. 用处: 在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest 根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据 在HttpServletResponse到达客户端之前,拦截HttpServletResponse 根据需要检查HttpServletResponse,也可以

工作笔记3.手把手教你搭建SSH(struts2+hibernate+spring)环境

上文中我们介绍<工作笔记2.软件开发常用工具> 从今天开始本文将教大家如何进行开发?本文以搭建SSH(struts2+hibernate+spring)框架为例,共分为3步: 1)3个独立配置:struts2. Hibernate. Spring 2)2个整合:整合Sring和struts2. 整合Spring和Hibernate 3)资源分类 开发包.软件.框架源码,已经共享到百度网盘:http://pan.baidu.com/s/1o6FkbA6 一.3个独立配置 1.Struts2: 1

[Java] SSH框架笔记_1_框架分析+环境搭建+实例源码下载

首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框架的系统从职责上分为四层:表示层.业务逻辑层.数据持久层和域模块层(实体层). Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持.Spring一方面作为一个轻量级的IoC容器,负责查找.定位.创建和管理对象及

[JavaEE] SSH框架笔记_eclipse搭建SSH框架详解

SSH框架是最常用的框架之一,在搭建SSH框架的时候总有人遇到这样,那样的问题.下面我介绍一下SSH框架搭建的全过程. 第一步:准备工作. 下载好eclipse,Struts2,Spring,Hibernate. 1.eclipse:eclipse下载的时候建议下载JavaEE版的eclipse. 当然你也可以下载eclipse-SDK.(下载eclipse-SDK需要下载Web,Tomcat等plugins) 2.Struts2:http://struts.apache.org/downloa

[Java] SSH框架笔记_2_框架整合示例(一)

本文描述的是框架SSH集成的示例,由于在这个过程中有一些小的细节容易被遗忘,特别撰写了一篇小的博文来记录这个过程,希望对自己以及后来者能够起到积极意义. 本文中使用的框架和版本号为: struts-2.3.1.2.hibernate-3.6.10.spring-3.1.1 其下载地址分别为: http://struts.apache.org/download.cgi#struts2312 http://sourceforge.net/projects/hibernate/files/hibern

windows下scrapy框架学习笔记—&#39;scrapy&#39; 不是内部或外部命令

最近几天在深入的学习scrapy框架,但是装完各种需要的基础包之后却发现scrapy命令在别的路径下都用不了,我一开始是把python安装在F:\Python路径下的,安装了scrapy后它默认都会安装在这个路径下,scrapy在路径F:\Python\Scripts路径下,我的scrapy命令只能在此路径下用,因此创建什么工程也都只能在此文件下. 想了一下它的工作原理:它在F:\Python\Scripts路径下,就会在Scripts文件下存在一个scrapy批处理文件,那么在DOS下想要命令