-
自定义拦截器方法二:继承AbstractInterCeptor类,与InterCeptor接口相比,该类提供了init和destroy方法的空实现,仅需要实现intercept方法查看全部
-
自定义拦截器方法一:实现Interceptor接口查看全部
-
实现拦截器: 继承抽象拦截者 AbstractInterceptor 实现拦截方法 intercept 找着对应的人 然后调用他的方法 实现后如何才能被运用到项目中? struts2配置文件中先注册再调用!查看全部
-
constant:常量查看全部
-
struts拦截器: 考入jar包并build path,jdk设置成1.6的 创建struts2.xml并配置action 在web.xml配置struts2(filterclass:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter),其实就是新建Filter 编写action类,继承ActionSupport,继承execute方法,返回SUCCESS 将action配置到struts2.xml中 编写interceptor,在其中的用ActionInvocation的对象调用invoke方法,可以调用action 在struts2.xml中注册interceptor,并在action标签中引用查看全部
-
4.定义拦截器,判断用户是否已经登录.此拦截器在跳转的action中引用. 在拦截器的intercept(ActionInvocation arg0)方法中通过获取session对象(三种方式其中一种),判断session里面是否存在登录成功的那个属性,即loginsuccess,来判断用户是否登录成功. 如果loginsuccess属性不为空,则直接调用arg0的invoke()方法,此方法返回字符串与在执行action方法中返回的字符串一致.(引用了该拦截器的action),直接返回这个字符串即可. 如果判断用户未登录,则直接返回"login",表示用户需要登录.那么在此action中也要配置一个<result name="login">login.jsp</result>,当直接访问未登录时,便会跳转到登录页面. 拦截器与Action方法里的返回值,即return,都会与struts.xml中的result结果集进行匹配.拦截器可以在访问Action之前,进行一些操作. 整个项目结果:通过login.jsp登录,当登录成功便自动跳转到管理页面,否则跳转到登录页面. 当直接访问跳转到后台的action时,如果用户登录了,便会跳转到后台管理页面,未登录的话则跳转到登录页面.查看全部
-
(案例)开发权限验证的拦截器. 效果:后台有一个管理页面,要求用户必须是已登录的用户才能访问页面,如果用户未登录则不允许访问此页面. 1.首先创建一个管理页面(manager.jsp)与登录页面(login.jsp). 2.创建一个专门用来跳转到后台管理页面的action并配置,跳转方法返回的字符串是对应结果集中的manager.jsp页面,即管理页面.因此当直接访问此action时,就可以跳转到后台管理页面(此时不需要登录). 3.在login.jsp中需要定义表单,用于登录,此表单提交到一个用来处理登录信息的action来接收和处理表单的信息,在action中要获取session对象.action中有一个处理信息的login()方法,表单提交到此action时便执行此login()方法,在方法里通过if语句判断用户输入的用户名与密码是否正确. 如果都正确,便把登录信息保存在Session当中,即session.put("loginsuccess",username)),login()方法直接返回SUCCESS即可. 如果用户登录失败,则保存一个登录失败的信息进入session,即session.put("loginfalse","登录失败!").login()方法返回ERROR. 在strut.xml中配置此验证登录的action(跳转的action已配置),当login()方法返回SUCCESS时,即登录成功,则在<result>的路径返回后台管理页面.否则返回登录页面,即login.jsp. <action name="" class=""> <result>web-inf/manager.jsp</result> <result name="error">/login.jsp</result> </action>查看全部
-
WEB-INF是Java的WEB应用的安全目录,所谓安全就是客户端无法访问,只有服务端可以访问的目录. 在web项目的web-inf文件下的资源是不能够直接访问的.但可以通过action方式来访问此资源.假设web-inf下有一个a.jsp文件,通过访问action,在action的方法中返回一个结果集,此结果集的匹配页面就是a.jsp. 当在<action name="">标签中没有设置class属性,则会调用默认的ActionSupport类.查看全部
-
Struts2内置拦截器 params拦截器 负责将请求参数设置为Action属性. staticParams拦截器 将配置文件中action元素的子元素param参数设置为Action属性. servletConfig拦截器 将源于Servlet API的各种对象注入到Action,必须实现对应的接口. fileUpload拦截器 对文件上传提供支持,将文件和元数据设置到对应的Action属性. exception拦截器 捕获异常,并且将异常映射到用户自定义的错误页面. validation拦截器 调用验证框架进行数据验证. 可以在Struts2的strut-code jar包下的struts-default.xml配置文件查看内建的拦截器,此文件是Struts2的核心配置文件. 此文件中的struts-default包下定义了一个名为defaultStack的拦截器栈,里面定义了很多拦截器,并且设置了默认的拦截器就是此拦截器栈. struts2在启动的时候,会去自动加载此文件. 拦截器栈: <interceptor-stack name=""> <interceptor-ref name="拦截器1"/> <interceptor-ref name="拦截器2"/> </interceptor-stack> 首先在<interceptors>标签下定义所有的拦截器,然后可以通过<interceptor-ref>标签直接在Action标签下引用,或者通过<interceptor-stack>定义拦截器栈,其下引用多个拦截器,最后在Action标签下通过<interceptor-ref>直接引用拦截器栈即可. 可以通过<default-interceptor-ref name="">设置默认执行的拦截器,当没有为Action手动引用拦截器,此时便会调用设置好的默认拦截器.如果为Action指定了拦截器,则默认的拦截器不会起作用. 当action加入了拦截器,用IOC的方式获取不了session,因此当action中有拦截器时应该用ServletActionContext或ActionContext的方式获取session.查看全部
-
struts架构 action运行流程查看全部
-
拦截器实例(统计Action的执行时间) 在拦截器中的intercept()方法实现拦截操作. 其中System.currentTimeMillis();方法可以记录当前时刻的时间.单位是毫秒. 在intercept()方法中的ActionInvocation参数有一个invoke()方法,此方法类似过滤器的doFilter()方法.当有下一个拦截器的时候,便会执行下一个拦截器,否则就直接执行Action.此方法返回字符串类型,此字符串是执行Action的方法时的返回值. 只要在intercept()方法中调用 invoke()方法后,如果能成功的调用了对应Action类中的方法,strtus2就会按照该方法的返回值去找对应的result, 从而忽略拦截器的返回值,如果你不调用invoke()方法,那么页面就会跳转到你在拦截器中指定的result对应的页面.这个方式通常用于权限验证, 当符合权限要求的时候才会调用invoke()方法,执行Action类中的方法,不满足权限的直接返回错误页面,这是就用到了拦截器中的返回值了.查看全部
-
创建完拦截器还需要在struts.xml文件中配置拦截器并在action中引用它. 首先在包下通过<interceptors>标签进行注册拦截器,此标签下还有<interceptor name="" class="">标签,其中name属性指定拦截器的名字,class属性指定拦截器的全限类名.多个拦截器就有多个<interceptor>标签来配置. 然后在action标签下通过<interceptor-ref name="">标签来指明执行此action时要被哪个拦截器拦截.name属性指明要被拦截的拦截器名.查看全部
-
创建拦截器 方式二(常用):继承AbstractInterceptor类(抽象类) 1.创建一个类继承AbstractInterceptor类. 2.只需实现此抽象类的Intercept()抽象方法即可. AbstractInterceptor抽象类本身也是实现了Interceptor接口的.它提供了init()和destroy()方法的空实现.查看全部
-
创建拦截器 方式一:实现Interceptor接口 1.创建一个类,实现Interceptor接口. 2.实现init()、destroy()、intercept()方法 public String intercept(ActionInvocation ai) 方法是在进行拦截的时候会自动调用的方法,进行真正意义的拦截操作. 其中参数ActionInvocation对象包含了Action的信息与拦截器的信息,通过此参数可以获取到Action与拦截器的信息. 同时此方法返回一个字符串,此字符串就是逻辑视图.即return result;查看全部
-
拦截器工作原理 当Struts2执行一个action的时候,会在action执行之前去执行一些拦截器(在action之前的拦截器),如果有多个拦截器会依次进行执行,最后会执行action. 调用action里业务处理的方法,方法会返回一个字符串,之后会进行视图的匹配,返回一个result视图.此时结果并没有正在响应客户端,因为在action执行完之后还要反向执行之前的拦截器,此时才会进行正在的响应. 拦截器的工作原理与过滤器的工作原理相似.查看全部
举报
0/150
提交
取消