Struts2框架拦截器怎么在Java中使用

  介绍

这篇文章将为大家详细讲解有关Struts2框架拦截器怎么在Java中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

具体内容如下

在看拦截器的小例子的前我们先来看看sturts2的原理

,  Struts2框架拦截器怎么在Java中使用“> </p> <p> Struts2自己是有拦截器的,通过拦截器可以拦截用户请求,并作出处理</p> <p>拦截器作用有很多,譬如:</p> <p> 1.行动里面有个属性,这个属性我想在行动执行之前改成别的值,可以用拦截器解决。</p> <p> 2。比如每个人执行行动之前,我可以查看他们有没有这个权限执行这个行动。<br/>如果不设置拦截器,你要在每种行动方法之前设置判定程序,非常繁琐。</p> <p>拦截器拦截体现了一种编程理念,叫做AOP(面向切面编程)</p> <p> <强>实例1:使用令牌拦截器控制重复提交</强> </p> <p>标记是用来解决下面的问题:</p> <p>一旦有人通过表单提交数据,在提交表单的时候页面提交速度太慢,用户一直不停的刷新,如果不做一种机制防止他刷新的话,那么数据库中就会多出好多垃圾数据。</p> <p>表单提交一般都要写成文章(第一种解决方式,浏览器会提醒你是否重复提交)</p> <p>拦截器解决方法:</p> <p> Struts2定义了一个拦截器(拦截器)叫——令牌</p> <p>标记的意思是“令牌”,你要提交数据,我先发给你一个令牌,你的令牌要是和我能对上,你就提交,对不上就不允许提交</p> <p>标记为什么可以防止重复提交? </p> <p>答:当访问界面时,在服务器那边的会话里面,生成一个随机数,然后再把随机数写到表单里,提交数据时会话就会被带到服务器去。提交完成后会话里面的值被清空,再次重复提交的时候,发现此令牌值在会话不存在,说明已经被提交过了,这个时候就会显示友好界面提示用户。</p> <p>实现代码:</p> <p> struts。xml: <br/> </p> <pre类= & lt; package  name=皌est",名称空间=?javaee",延伸=皊truts-default"祝辞,   ,& lt; action  name=皃input",类=癱n.edu.hpu.action.PinputAction"祝辞,   ,& lt; result>/input.jsp,   & lt;/action>大敌;   ,   ,& lt; action  name=皃erson",类=癱n.edu.hpu.action.PersonAction"祝辞,   ,& lt; result>/addOK.jsp,   ,   ,& lt; interceptor-ref  name=癲efaultStack"祝辞& lt;/interceptor-ref>,   ,& lt; interceptor-ref  name=皌oken"祝辞& lt;/interceptor-ref>,   ,& lt; result  name=癷nvalid.token"祝辞/error.jsp,   & lt;/action>大敌;   & lt;/package>

PersonAction。java:

package  cn.edu.hpu.action;,   import  com.opensymphony.xwork2.ActionSupport,   public  class  PersonAction  extends  ActionSupport  {,   ,private  String 名称;   ,private  int 年龄;   ,   ,@Override    ,public  String  execute (), throws  Exception  {,   ,System.out.println (“a  person 添加!“),,   ,return  super.execute (),,   }大敌;   ,public  String  getName (), {,   ,return 名称;   }大敌;   ,   ,public  void  setName (String 名称),{,   ,this.name =,名字,,   }大敌;   ,   ,public  int  getAge (), {,   ,return 年龄;   }大敌;   ,   ,public  void  setAge (int 年龄),{,=,this.age 年龄;,   }大敌;   }

输入。jsp:

& lt; % @  page 语言=癹ava",进口=癹ava.util。*“, pageEncoding=皍tf-8" %祝辞,   % & lt;   String  path =, request.getContextPath (),,   String  basePath =, request.getScheme () +“://? request.getServerName () +“:“+ request.getServerPort() +路径“/?,   %的在,   & lt; ! DOCTYPE  HTML  PUBLIC “-//W3C//DTD  HTML  4.01,过渡//EN"祝辞,   & lt; html>,   & lt; head>大敌;   ,& lt; base  href=https://www.yisu.com/zixun/薄皉el="外部nofollow”>   <标题> JSP的输入。jsp的起始页   头      身体<>   <表单动作=" javaee/人”方法=" post ">   名称:<输入name="名称">   年龄:<输入name="年龄">      
     

addOK。jsp:

& lt; ! DOCTYPE  HTML  PUBLIC “-//W3C//DTD  HTML  4.01,过渡//EN"祝辞,   & lt; html>,   & lt; head>大敌;   ,& lt; title> My  JSP  & # 39; addOK.jsp& # 39;, starting  page

Struts2框架拦截器怎么在Java中使用