spring mvc 拦截器:
dispatcherServlet-Spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:property-placeholder location="${property.path}"/>
<!-- Scans within the base package of the application for @Components to configure as beans -->
<!-- @Controller, @Service, @Configuration, etc. -->
<context:component-scan base-package="com.cn.net.web"/>
<!-- Enables the Spring MVC @Controller programming model -->
<mvc:annotation-driven/>
<!-- Resources or statics mapping -->
<mvc:default-servlet-handler/>
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截="/user/login请求 -->
<mvc:mapping path="/user/login" />
<bean class="com.cn.net.web.test.MyInteceptor" />
</mvc:interceptor>
</mvc:interceptors>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
MyInteceptor 拦截类
/*
package com.cn.net.web.test;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.cn.net.model.User;
/**
* <Use one sentence to describe the function> <Detailed function description>
*
* @author name
* @version [version, 2014-3-18]
* @see [related class/method]
* @since [product/module version]
*/
public class MyInteceptor implements HandlerInterceptor {
/**
* override methods
*
* @param arg0
* @param arg1
* @param arg2
* @param arg3
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
System.out.println("afterCompletion_________________________");
// TODO Auto-generated method stub
}
/**
* override methods
*
* @param arg0
* @param arg1
* @param arg2
* @param arg3
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
System.out.println("postHandle_________________________");
// TODO Auto-generated method stub
}
/**
* override methods
*
* @param arg0
* @param arg1
* @param arg2
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
System.out.println("preHandle_________________________");
User user = new User();
String userName = arg0.getParameter("userName");
System.out.println("userName:" + userName);
String password = arg0.getParameter("password");
if (!userName.equals("root") || !password.equals("root")) {
arg1.sendRedirect("error");
} else {
user.setPassWord(password);
user.setUserName(userName);
arg0.getSession().setAttribute("user", user);
}
return true;
}
}
--------------------------------------------------------------------------------------------------------------------------------
spring aop 日志与定时器
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- 视图 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 使用标签库,暂时可不用 -->
<!-- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> -->
<property name="prefix" value="/WEB-INF/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 映射 -->
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="login.do">login</prop>
</props>
</property>
</bean>
<!--login action -->
<bean id="login" class="com.web.LoginController">
<property name="loginService">
<ref local="loginService" />
</property>
</bean>
<bean id="logService" class="com.service.impl.LogServiceImpl"></bean>
<bean id="loginService" class="com.service.impl.LoginServiceImpl"></bean>
<aop:config>
<!-- 切入点 -->
<aop:pointcut expression="execution(* com.service.impl.Login*.*(..))"
id="myPointcut" />
<!-- 切面: 将哪个对象中的哪个方法,织入到哪个切入点 -->
<aop:aspect id="dd" ref="logService">
<aop:before method="log" pointcut-ref="myPointcut" />
<aop:after method="logArg" pointcut-ref="myPointcut" />
<aop:after-returning method="logArgAndReturn"
returning="returnObj" pointcut-ref="myPointcut" />
</aop:aspect>
</aop:config>
<!-- /spring Aop -->
<!-- spring timer -->
<bean id="spideSiteTime"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<ref bean="cronSpideSiteTrigger" />
</property>
</bean>
<bean id="spideSiteBean" class="com.web.SpideSiteTimerTask"></bean>
<bean id="scheduledSpideJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="spideSiteBean" />
</property>
<property name="targetMethod">
<value>run</value>
</property>
</bean>
<bean id="cronSpideSiteTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="scheduledSpideJobDetail" />
</property>
<property name="cronExpression">
<value>0 * 16 * * ?" </value>
</property>
</bean>
<!-- /spring timer -->
</beans>
-----------------------------------------------------------------------------------
spring aop
public interface ILoginService {
public boolean login(String userName, String password, List list);
}
public interface ILogService {
public void log();
public void logArg(JoinPoint point);
public void logArgAndReturn(JoinPoint point, Object returnObj);
}
public class LoginServiceImpl implements ILoginService {
public boolean login(String userName, String password, List list) {
StringBuffer sb = new StringBuffer();
sb.append("Target:").append("login:").append(userName).append(",").append(password);
System.out.println(sb.toString());
if (userName.equals("root") && password.equals("root")) {
return true;
} else {
return false;
}
}
}
public class LogServiceImpl implements ILogService {
public void log() {
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + " *******Log*********");
}
/**
*
* <p>
* 功能实现描述:有参无返回值的方法
* </p>
*
* @see com.bruceyang.login.service.ILogService#logArg(org.aspectj.lang.JoinPoint)
* @author: bruce.yang
* @date: Created on 2013-8-13 下午1:43:43
*/
public void logArg(JoinPoint point) {
StringBuffer sb = new StringBuffer();
// 获取连接点所在的目标对象
Object obj = point.getTarget();
// 获取连接点的方法签名对象
String method = point.getSignature().getName();
// 获取连接点方法运行时的入参列表
Object[] args = point.getArgs();
sb.append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())).append(" ");
System.out.println("obj.toString():" + obj.toString());
sb.append(obj.toString().substring(0, obj.toString().indexOf('@')));
sb.append(".").append(method).append(" ");
sb.append("Args:[");
if (args != null) {
for (int i = 0; i < args.length; i++) {
Object o = args[i];
sb.append(o);
if (i < args.length - 1) {
sb.append(",");
}
}
}
sb.append("]");
System.out.println(sb.toString());
}
/**
*
* <p>
* 功能实现描述:有参并有返回值的方法
* </p>
*
* @see com.bruceyang.login.service.ILogService#logArgAndReturn(org.aspectj.lang.JoinPoint,
* java.lang.Object)
* @author: bruce.yang
* @date: Created on 2013-8-13 下午1:43:17
*/
public void logArgAndReturn(JoinPoint point, Object returnObj) {
StringBuffer sb = new StringBuffer();
// 获取连接点所在的目标对象
Object obj = point.getTarget();
// 获取连接点的方法签名对象
String method = point.getSignature().getName();
// 获取连接点方法运行时的入参列表
Object[] args = point.getArgs();
sb.append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())).append(" ");
sb.append(obj.toString().substring(0, obj.toString().indexOf('@')));
sb.append(".").append(method).append(" ");
sb.append("Args:[");
if (args != null) {
for (int i = 0; i < args.length; i++) {
Object o = args[i];
sb.append(o);
if (i < args.length - 1) {
sb.append(",");
}
}
}
sb.append("]").append(" ");
sb.append("Ret:[").append(returnObj).append("]");
System.out.println(sb.toString());
}
}
-------------------------------------------------------------------------
spring 定时器
/*
* filename: SpideSiteTimerTask.java
* copyright: CMRI. Copyright YYYY-YYYY, All rights reserved
* description: <you can write your description>
* modify user: yangshuai
* modify date: 2014-3-11
* track number: <you can write your track number>
* modify number: <you can modify your number>
* modify content: <you can write your modified content>
*/
package com.web;
import java.util.TimerTask;
/**
* <Use one sentence to describe the function> <Detailed function description>
*
* @author name
* @version [version, 2014-3-11]
* @see [related class/method]
* @since [product/module version]
*/
public class SpideSiteTimerTask extends TimerTask {
/**
* override methods
*/
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("------------------------");
}
}