Action,其BaseAction继承了ActionSupport@Controller
public class UserAction extends BaseAction<User> { private int id;
private int pageNo;
private User user;
private Pages<User> pages;

@Resource
private UserService userService;
/**
 * 登录
 * @return
 * @throws Exception
 */
@Action(description="用户登录")  
public String login()throws Exception{
User u=userService.findUser(user);

if(u!=null){
saveToSession("USER", u);
}
pages=userService.findAllPageUser(pageNo);
return SUCCESS;

}
自定义的注解 /**
  * description 类的方法描述注解 
  * @author archie2010
  * since 2011-3-16 下午02:05:55
  */
 @Target(ElementType.METHOD)     
 @Retention(RetentionPolicy.RUNTIME)     
 @Documented    
 @Inherited    
 public @interface Action {  
     /** 
      * 方法描述 
      * @return 
      */  
     public String description() default "no description";   
 }  
切面@After("@annotation(com.tq365.samples.util.Action)")
public void doAfter(JoinPoint jp) throws Throwable{
System.out.println("----------后置通知");
System.out.println("方法所在类:" + jp.getTarget().getClass().getName());
System.out.println("" + jp.getSignature().getName()
+ "方法");
//获得Session
String methodName=jp.getSignature().getName();

        HttpSession session=ServletActionContext.getRequest().getSession();
        //取到当前的操作用户  
        User appUser=(User) session.getAttribute("USER");
        
        SystemLog sysLog=new SystemLog();  
        if(appUser!=null){  
         System.out.println("用户已经存在Session中");
          //操作日志对象
            
            sysLog.setUid(appUser.getId());
            sysLog.setUsername(appUser.getUsername());
     
        }
        HttpServletRequest request=ServletActionContext.getRequest();
        String ip=request.getRemoteAddr();
        sysLog.setOperateTime(DateUtil.getCurrentTime());
        sysLog.setOperateDes(methodName+"操作");
        sysLog.setIp(ip);
        
        systemLogService.save(sysLog);
        System.out.println("----------保存操作日志"); 
}
执行登录
页面上会报错
java.lang.NullPointerException
com.tq365.samples.ibatis.action.UserAction.login(UserAction.java:44)
com.tq365.samples.ibatis.action.UserAction$$FastClassByCGLIB$$b1b5758c.invoke(<generated>)
net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:700)

这是嘛意思???