论坛首页 入门技术论坛

复习笔记:利用spring AOP管理权限[简单实例]

浏览 20174 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-02-01  
对原文方法理解失误了
先去写写代码证实一下,还不大肯定
0 请登录后投票
   发表时间:2007-02-01  
tear 写道
如果我不是对DAO里的method进行拦截,而是对这样的URL:http://localhost:8080/bookroom/listUser.htm(调用userController里的listUser方法,然后转发到listUser.jsp),那么该怎么用SPRING AOP进行拦截呢?
或者说因为该URL调用了Controller里的方法,所以如果要对该URL进行拦截那么等于去拦截Controller里的方法,又因为Controller里的方法其实又调用了DAO里的方法,所以归根结底我可不可以通过拦截DAO里的方法来最终实现URL的拦截?
(说的很乱,不知道能不能让人看明白 )

你要的是不是拦截器来控制URL路径的转发啊
给一个例子你看一下
import javax.servlet.http.HttpServletRequest;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.apache.struts.action.ActionMapping;

/**
 * 这是一个拦截器,用来验证用户是否通过验证
 *
 */
public class AuthorityInterceptor implements MethodInterceptor {

    public Object invoke(MethodInvocation invocation) throws Throwable
	{
        HttpServletRequest request = null;
        ActionMapping mapping = null;
        Object[] args = invocation.getArguments();
        for (int i = 0 ; i < args.length ; i++ )
        {
            if (args[i] instanceof HttpServletRequest) request = (HttpServletRequest)args[i];
            if (args[i] instanceof ActionMapping) mapping = (ActionMapping)args[i];
        }
        if ( request.getSession().getAttribute("adminname") != null)
        {
            return invocation.proceed();
        }
        else
        {
            return mapping.findForward("login");
        }
    }
}


配置文件:
 
    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
	    <property name="beanNames">
            <list>
               <value>/vaiiduser</value>
                <value>/admin</value>
               <value>/phone</value>
            </list>
	    </property>
        <property name="interceptorNames">
            <list>
                <value>authorityInterceptor</value> 
            </list>
        </property>
    </bean>

	<bean id="authorityInterceptor" class="org.mmc.utils.AuthorityInterceptor"/>
0 请登录后投票
   发表时间:2007-02-01  
如果你用spring的MVC,把上面的ActionMapping替换掉
其实也可能通过写一个过滤器implements Filter来实现你的功能

还有一个简单的代码实例,可以看一下
0 请登录后投票
   发表时间:2007-02-01  
thank you,lighter!
我不仅仅是想实现用户登陆的验证,我想实现这样的功能:
http://www.iteye.com/topic/51623?page=1
(要没熄灯了,例子下下来了还没来得及看)
0 请登录后投票
   发表时间:2007-02-26  
       1. <bean id="user" class="org.test.lighter.User">   
       2.         <property name="username" value="user" />   
       3.     </bean>   
0 请登录后投票
   发表时间:2007-06-11  
简单实用
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics