- 浏览: 1078850 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (399)
- C++ (39)
- Java (74)
- Java界面开发学习笔记 (4)
- Java用户的c++之旅 (0)
- 自言自语 (12)
- DSP (1)
- MCU (0)
- CG (0)
- Jabber (0)
- Gloox (0)
- Linux (11)
- Windows (19)
- Networks (4)
- Jobs (0)
- PHP (1)
- JSP (2)
- 生活 (35)
- C (2)
- Qt4 (2)
- C# (50)
- WPF (5)
- ASP (2)
- FLEX (47)
- SQL (20)
- JavaScript (12)
- SharePoint (6)
- GWT (1)
- Dojo (9)
- HTML (11)
- Others (7)
- 如何安装配置系列 (7)
- UML (2)
- Android (3)
- alibaba (1)
最新评论
-
zxjlwt:
学习了http://surenpi.com
Firefox插件开发: Hello World! -
ylldzz:
楼主知道MVEL怎么调试么
MVEL简介及快速使用 -
blueman2012:
您好,可否提供源码下载,我把您的代码贴过来后,好多报错的,谢谢 ...
Log4J日志解析 -
svygh123:
你的游标都没有关闭呢!
MYSQL游标嵌套循环示例 -
dizh:
写的很好啊
MVEL简介及快速使用
等有空的时候再加上讲解吧,先贴上代码。
1、拦截器Handle类:
package com.shansun.interceptor.test.handler; import org.springframework.aop.TargetSource; import org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import com.shansun.interceptor.test.core.InterceptorAdvisor; /** * @author lanbo.xj */ public class InterceptorHandler extends AbstractAutoProxyCreator implements ApplicationContextAware { private static final long serialVersionUID = 8822145972561113575L; private static ApplicationContext applicationContext; public void setApplicationContext(ApplicationContext aApplicationcontext) throws BeansException { applicationContext = aApplicationcontext; } public static Object getBean(String beanName) { return applicationContext.getBean(beanName); } @Override protected Object[] getAdvicesAndAdvisorsForBean(@SuppressWarnings("rawtypes") Class beanClass, String beanName, TargetSource targetSource) throws BeansException { if(beanName.equals("springLoader")) return null; return new InterceptorAdvisor[] { new InterceptorAdvisor(beanName) }; } }
2、拦截器:在每个方法前后打印一条信息
public class InterceptorAdvisor implements Advisor { Advice advice = null; public InterceptorAdvisor(String beanName) { advice = new InterceptorRoundAdvice(beanName); } public Advice getAdvice() { return advice; } public boolean isPerInstance() { return false; } }
3、方法调用包裹类
public class InterceptorRoundAdvice implements MethodInterceptor, Advice { /** * 被拦截的BEAN的名称 */ private String beanName; public InterceptorRoundAdvice(String aBeanName) { this.beanName = aBeanName; } public Object invoke(MethodInvocation invocation) throws Throwable { String methodName = this.beanName + "." + invocation.getMethod().getName(); // 获取当前调用方法的参数 Object[] arguments = invocation.getArguments(); System.out.println("参数:" + getArguments(arguments)); System.out.println(methodName + ": Before invocation!"); Object result = invocation.proceed(); System.out.println(methodName + ": After invocation!"); return result; } private String getArguments (Object[] arguments) { StringBuilder sb = new StringBuilder(); for(Object arg : arguments) { sb.append("Type:" + arg.getClass().getSimpleName() + " Value:" + arg.toString()); } return sb.toString(); } }
4、工程POM配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>InterceptorTest</groupId> <artifactId>InterceptorTest</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> <version>2.5.4</version> </dependency> <dependency> <groupId>aopalliance</groupId> <artifactId>aopalliance</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.1_3</version> </dependency> </dependencies> </project>
5、测试代码
public interface BusinessInterface { public void doSomething(); }
public class BusinessClass implements BusinessInterface { public void doSomething() { System.out.println("业务组件BusinessClass方法调用:doSomething()"); } }
public class SpringLoader implements ApplicationContextAware{ private BusinessInterface businessInterface; private ApplicationContext applicationContext; public void setBusinessInterface(BusinessInterface businessInterface) { this.businessInterface = businessInterface; } public void doSth() { if(businessInterface == null) { this.businessInterface = (BusinessInterface) applicationContext.getBean("businessInterface"); } businessInterface.doSomething(); } public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } }
public static void main(String[] args) { ApplicationContext ctx = new FileSystemXmlApplicationContext( "bean.xml "); SpringLoader sl = (SpringLoader) ctx.getBean("springLoader"); sl.doSth(); }
Spring配置文件:
<?xml version="1.0" encoding="GB2312"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <bean id="businessInterface" class="com.shansun.interceptor.test.busi.impl.BusinessClass"> </bean> <bean id="interceptorHandler" class="com.shansun.interceptor.test.handler.InterceptorHandler"> </bean> <bean id="springLoader" class="com.shansun.interceptor.test.SpringLoader"> </bean> </beans>
测试结果:
参数:
businessInterface.doSomething: Before invocation!
业务组件BusinessClass方法调用:doSomething()
businessInterface.doSomething: After invocation!
发表评论
-
Interesting interview question…
2011-06-23 19:10 1459Today I was asked this questi ... -
简单易用的Web框架:SummerCool介绍
2011-05-10 19:01 4748SummerCool是国内某大型电子商务平台的架构师自 ... -
[转]Eclipse插件:Java AST View
2011-05-06 16:03 4621转载:http://www.blogjava.net/life ... -
Eclipse之Debug技巧
2011-05-02 15:30 1565你认为你的eclipse debug技能都学会了吗?能够熟 ... -
AccessController.doPrivileged 小记
2011-04-29 20:29 2082原文:http://blog.csdn.net/tea ... -
推荐一个下载源码的网站
2011-04-29 20:26 1255http://olex.openlogic.com/ 这个网 ... -
Java解析xml禁止校验dtd
2011-04-27 21:34 8409今天在做log4j.xml解析的时候,指定了如下的dtd声明: ... -
区分getName、getCanonicalName与getSimpleName
2011-04-27 18:34 5768举例,现有一个类如下: package com.sha ... -
Log4J日志解析
2011-04-25 16:12 7065在有些场景下,需要解析Log4J的日志,以为己用。比如,根据 ... -
分享个不错的网站:看JSON字符串的利器
2011-04-20 20:09 1314分享个不错的网站:看JSON字符串的利器or胸器 http: ... -
Regex:密码验证
2011-04-13 18:45 20134.当且仅当含数字和字母的密码验证 如果密码当且仅当 ... -
JDBC操作数据库时切记关闭资源
2011-04-08 18:14 1882Error: No ManagedConnectio ... -
JDBC:如何将resultset的信息自动封装到pojo里面
2011-04-08 10:32 4315不多说了 直接上代码 Java代码 p ... -
Maven自动升级版本号并打包上传的脚本
2011-04-02 09:52 7530同事写的自动升级版本并打包上传的脚本: echo of ... -
在ibatis中使用$value$引入变量会引入SQLInjection漏洞
2011-04-01 16:26 2317(1)sql语法中的_关键字_.如果sql语句中出现存在用户输 ... -
EqualsBuilder和HashCodeBuilder
2011-03-31 19:30 2225自动化hashCode()和equals() 问题产生:当需 ... -
Eclipse中的Stack Trace Console的使用
2011-03-15 14:47 3029很多的Java程序员(特别是开发Web程序的时候),通常在 ... -
System.out.format的使用
2011-01-21 12:34 4799JDK5.0允许象C语言那样直接用printf()方法来格式化 ... -
jhat的简单使用
2011-01-18 19:41 2895leak一般会发生在容器类保存对象引用而不删除的时候,替代方法 ... -
关于变更eclipse中maven插件的repository路径
2011-01-10 10:02 17041.打开eclipse 2.window-->ref ...
相关推荐
总的来说,对于无Java基础的学习者,快速上手SSM框架需要耐心和实践,通过阅读文档、编写代码,逐步熟悉各个组件的功能和交互方式。MyEclipse作为强大的开发工具,将为你的学习之路提供便利。记住,实践是检验真理的...
它集成了大量常用的第三方库配置,如数据库、MVC、WebSocket等,使得开发者能够快速上手。 2. **Thymeleaf**: Thymeleaf是一个现代的服务器端Java模板引擎,它允许开发者在HTML中直接编写模板,然后在服务器端将...
在快速上手过程中,开发者会学习如何配置Struts2环境,创建Action类,编写struts.xml配置文件,设置拦截器,以及如何在JSP页面中展示Action返回的数据。此外,还会涉及Action的注解方式配置,这简化了XML配置,使得...
本项目标题为“maven整合ssm”,旨在为初学者提供一个清晰易懂的SSM整合示例,帮助快速上手开发。通过Eclipse集成开发环境和Maven构建工具,开发者可以更方便地管理依赖,实现项目的构建和运行。 首先,我们需要...
4章 Struts快速上手 5章 解密Struts之核心文件 6章 Struts之数据校验与GJ化 7章 详解Struts之标签库 8章 Struts之拦截器使用技巧 9章 在Struts中应用Ajax技术 10章 Struts之项目实战 3篇 持久层框架Hibernate...
快速上手 JFinal 需要以下几个步骤: 1. 创建 Dynamic Web Project:首先,你需要在 Eclipse IDE 中创建一个新的动态 Web 项目。确保 Target Runtime 设置为 `<None>`,以便后续配置。 2. 修改 Output Folder:...
3. 简化Web层开发:通过约定优于配置的理念,Spring MVC提供了易于理解的配置和代码组织方式,便于开发者快速上手和维护。 4. 开源和社区支持:Spring MVC是开源项目,拥有庞大的社区支持和丰富的资源,便于开发者...
Apache CXF 是一个开源的Java框架,主要用于构建和部署Web服务。它建立在消息层之上,采用拦截器机制,提供了一种灵活的方式来扩展其功能。CXF 支持多种服务标准,如JAX-WS,使得开发人员可以方便地创建服务提供者和...
对于想要进入Java EE开发领域的学习者来说,这是一份宝贵的资料,可以帮助他们快速上手并提升技能。通过学习,你不仅可以理解每个技术的原理,还能学会如何在实际项目中运用它们,从而提高开发效率和软件质量。
Java WebService 是一种基于开放标准(如SOAP、WSDL和UDDI)的通信协议,用于构建分布式系统中的互操作性。它允许不同平台、语言和技术的系统之间交换...PDF文档应该提供了详细的步骤和实践指导,帮助初学者快速上手。
本框架的核心是利用Java语言的特性,结合其他技术如MySQL数据库、XML配置以及JSON数据交换格式,为开发者提供一个强大而全面的平台。 首先,让我们深入了解Java作为基础的编程语言在框架中的作用。Java以其“一次...
方立勋的Java Web教程可能包含了上述技术的详细讲解,以实践为导向,结合实例帮助学习者快速上手。通过30天的学习,你应该能够掌握基本的Java Web开发技能,具备独立开发简单Web应用的能力。此外,教程可能还会涉及...
Java调用WebAPI是开发过程中常见的任务,尤其是在分布式系统或者微服务架构中,不同服务间通过API进行数据交互。...这个压缩包提供了一个实用的起点,通过示例和文档,可以帮助开发者快速上手并熟练掌握这一技能。
Apache Shiro是一个强大的Java安全框架,它提供了身份验证(Authentication)、授权(Authorization...通过这个demo,开发者能够快速上手Shiro,并将其应用于自己的Java Web项目中,实现高效安全的用户管理和权限控制。
Java EE(Java Platform, Enterprise Edition)是Java编程语言在企业级应用开发中的核心框架,它提供了构建分布式、多层架构的Web应用程序所...对于初学者来说,这是一份宝贵的资源,可以帮助他们快速上手Java EE开发。
- **定义**:Java Web 开发是利用Java技术进行网络应用开发的过程。 - **发展历程**:自Java 2平台发布以来,Java Web 开发经历了多个阶段,从最初的Servlet API到如今广泛使用的Spring框架等。 #### 2. Java Web ...
这对于开发者理解系统的工作原理和快速上手非常有帮助。 6. **MyEclipse集成**:MyEclipse作为流行的Java IDE,支持导入和运行已有的项目。导入这个权限管理系统后,开发者可以进一步调试、修改和扩展代码,以满足...
Java的封装类库使用简单方便,即使是编程初学者,只要对Java编程原理有基本了解,也能快速上手。这些类库为服务器和客户端之间的通信提供了重要平台。在进行客户端编程前,了解TCP/IP协议及其相关技术(如Socket套接...