拦截器是基于java反射机制是什么意思?
如果说拦截器是基于反射机制,也就是说拦截器 我们在xml文件中定义,但是创建不需要我们创建;每次当要执行到拦截器相关代码的时候 可以动态的执行Class.forName("类名") 创建拦截器对象,而不需要我们再去创建 和操作~~~这些都是封装好了的,我们只管定义好拦截器就行,那个应该属于拦截器的一个底层实现原理!struts2当中的拦截器是通过struts.xml配置实现的,比如
2097152
/success.jsp
/token-error.jsp
可以看到class属性就是类的全名,那么struts2是怎么为每个action请求都创建interceptor的呢?
当然是通过反射的方法通过类名加载并创建对象的方式。
谁给说一下 java框架struts2 的拦截器工作流程是什么?
Struts2的拦截器的实现原理和过滤器的实现差不多,对你真正想执行的 Action里面某方法进行拦截,然后插入一些自己的逻辑。如果没有拦截器,这些要插入的逻辑就得写在你自己的 Action实现中,而且每个 Action实现都要写这些功能逻辑,这样的实现非常繁琐。而 Struts2的设计者们把这些共有的逻辑独立出来,实现成一个个拦截器,既体现了软件复用的思想,又方便程序员使用。 Struts2中提供了大量的拦截器,多个拦截器可以组成一个拦截器栈,系统为我们配置了一个默认的拦截器栈 defaultStack,具体包括那些拦截器以及他们的顺序可以在 Struts2的开发包的 struts-default.xml中找到
说简单点:就是你的服务请求request 要穿过struts2的拦截器,满足条件的就通过,不然就被拦截
一下是流程图加上自己的理解仔细看吧
Struts2的拦截器的实现原理和过滤器的实现差不多,对你真正想执行的 Action里面某方法进行拦截,然后插入一些自己的逻辑。如果没有拦截器,这些要插入的逻辑就得写在你自己的 Action实现中,而且每个 Action实现都要写这些功能逻辑,这样的实现非常繁琐。而 Struts2的设计者们把这些共有的逻辑独立出来,实现成一个个拦截器,既体现了软件复用的思想,又方便程序员使用。 Struts2中提供了大量的拦截器,多个拦截器可以组成一个拦截器栈,系统为我们配置了一个默认的拦截器栈 defaultStack,具体包括那些拦截器以及他们的顺序可以在 Struts2的开发包的 struts-default.xml中找到
说简单点:就是你的服务请求request 要穿过struts2的拦截器,满足条件的就通过,不然就被拦截
一下是流程图加上自己的理解仔细看吧
最好导入src包断点调试去