-
String result = invocation.invoke(); 这行代码去执行action并获得返回结果查看全部
-
使用拦截器进行用户权限验证1.创建被访问的资源如后台管理页面manager.jsp将其放到WEB-INF下外部不能直接访问 2.创建authAction将请求转发到被访问资源manager.jsp 3.创建登陆页面login.jsp接收用户登录信息 4.创建loginAction处理登陆请求校验登录信息并将有效登陆信息或错误信息放到session中 其中有效登录信息loginInfo用于步骤5拦截器校验会话信息错误信息用于前台页面展示 5.创建拦截器authInterceptor对访问authAction的请求进行拦截处理通过ActionContext获取会话session并校验session的登陆信息如果不为空即获取权限放行否则拦截并转发到登陆界面 总结如果只是一次登陆的话这里的2和5确实看起来很多余但是这个功能实际是为了多页面访问时校验同一个session下是否有权限因此使用了两个action进行请求转发当第一次登陆之后用户只需要直接访问authAction就可以访问到后台资源无需再次登陆。查看全部
-
拦截器实例(统计Action的执行时间) 在拦截器中的intercept()方法实现拦截操作. 其中System.currentTimeMillis();方法可以记录当前时刻的时间.单位是毫秒. 在intercept()方法中的ActionInvocation参数有一个invoke()方法,此方法类似过滤器的doFilter()方法.当有下一个拦截器的时候,便会执行下一个拦截器,否则就直接执行Action.此方法返回字符串类型,此字符串是执行Action的方法时的返回值. 只要在intercept()方法中调用 invoke()方法后,如果能成功的调用了对应Action类中的方法,strtus2就会按照该方法的返回值去找对应的result, 从而忽略拦截器的返回值,如果你不调用invoke()方法,那么页面就会跳转到你在拦截器中指定的result对应的页面.这个方式通常用于权限验证, 当符合权限要求的时候才会调用invoke()方法,执行Action类中的方法,不满足权限的直接返回错误页面,这是就用到了拦截器中的返回值了.查看全部
-
自定义拦截器: 1.方法一:实现Interceptor接口 -void init():初始化拦截器所需资源 -void destroy() :释放在init()中分配的资源 -String intercept(ActionInvocation ai)throws Exception 实现拦截器功能,利用ActionInvocation参数获取Action状态,返回result字符串作为逻辑视图。 2.方式二:继承AbstractInterceptor类 -提供了init()和destroy() 方法的空实现 -只需要实现intercept方法即可 实际开发当中一般会去继承AbstractInterceptor这个父类查看全部
-
defaultStack,默认拦截器栈,定义在Struts-defaults.xml中,很重要!!查看全部
-
struts-core jar包的struts-defaults.xml中190行左右(Struts2.5)有默认包,内置拦截器定义在这里面查看全部
-
拦截器实现权限控制 1.将资源放到WEB-INF目录下(禁止直接访问) 2.使用Action转发到资源(建立访问资源的唯一通道) 3.为Action添加拦截器,若权限符合则调用Action并返回其逻辑视图,否则不调用拦截器,返回一个错误的逻辑视图(如跳转到登陆页)查看全部
-
为action显式指定拦截器后,默认拦截器不起作用,要显示指定 拦截器引用顺序很重要查看全部
-
内建拦截器2查看全部
-
内建拦截器1查看全部
-
3.Action引用拦截器查看全部
-
2.配置文件定义拦截器查看全部
-
1.创建拦截器类 继承AbstractInterceptor 实现String intercept(ActionInvocation invocation)方法查看全部
-
使用自定义拦截器 1. 创建拦截器类 2.在配置文件中定义拦截器 3.在配置文件中引用拦截器查看全部
-
自定义拦截器方式二:继承AbstractIntercepter类查看全部
举报
0/150
提交
取消