拦截器

  1. //拦截器:第一种创建方式
  2. //拦截器生命周期:随项目的启动而创建,随项目关闭而销毁
  3. public class MyInterceptor implements Interceptor {
  4. @Override
  5. //初始化方法
  6. public void init() {
  7.  
  8. }
  9. @Override
  10. //拦截方法
  11. public String intercept(ActionInvocation arg0) throws Exception {
  12. return null;
  13. }
  14.  
  15. @Override
  16. //销毁方法
  17. public void destroy() {
  18.  
  19. }
  20. }
  1. //创建方式2: 继承AbstractInterceptor -> struts2的体贴
  2. //帮我们空实现了init 和 destory方法. 我们如果不需要实现这两个方法,就可以只实现intercept方法
  3. public class MyInterceptor2 extends AbstractInterceptor {
  4.  
  5. @Override
  6. public String intercept(ActionInvocation arg0) throws Exception {
  7.  
  8. return null;
  9. }
  10. }
  1. //继承:MethodFilterInterceptor 方法过滤拦截器
  2. //功能: 定制拦截器拦截的方法.
  3. // 定制哪些方法需要拦截.
  4. // 定制哪些方法不需要拦截
  5. public class MyInterceptor3 extends MethodFilterInterceptor{
  6.  
  7. @Override
  8. protected String doIntercept(ActionInvocation invocation) throws Exception {
  9. //前处理
  10. System.out.println("MyInterceptor3 的前处理!");
  11. //放行
  12. String result = invocation.invoke();
  13. //后处理
  14. System.out.println("MyInterceptor3 的后处理!");
  15.  
  16. return result;
  17. }
  18.  
  19. }
  1. <package name="inter" namespace="/" extends="struts-default" >
  2. <interceptors>
  3. <!-- 1.注册拦截器 -->
  4. <interceptor name="myInter3" class="cn.itcast.a_interceptor.MyInterceptor3"></interceptor>
  5. <!-- 2.注册拦截器栈 -->
  6. <interceptor-stack name="myStack">
  7. <!-- 自定义拦截器引入(建议放在20个拦截器之前) -->
  8. <interceptor-ref name="myInter3">
  9. <!-- 指定哪些方法不拦截
  10. <param name="excludeMethods">add,delete</param> -->
  11. <!-- 指定哪些方法需要拦截 -->
  12. <param name="includeMethods">add,delete</param>
  13. </interceptor-ref>
  14. <!-- 引用默认的拦截器栈(20个) -->
  15. <interceptor-ref name="defaultStack"></interceptor-ref>
  16. </interceptor-stack>
  17. </interceptors>
  18. <!-- 3.指定包中的默认拦截器栈 -->
  19. <default-interceptor-ref name="myStack"></default-interceptor-ref>
  20. <action name="Demo1Action_*" class="cn.itcast.a_interceptor.Demo1Action" method="{1}" >
  21. <!-- 为Action单独指定走哪个拦截器(栈)
  22. <interceptor-ref name="myStack"></interceptor-ref>-->
  23. <result name="success" type="dispatcher" >/index.jsp</result>
  24. </action>
  25. </package>
  26. <package name="tag" namespace="/" extends="struts-default" >
  27. <action name="Demo2Action" class="cn.itcast.b_tag.Demo2Action" method="execute" >
  28. <result name="success" type="dispatcher" >/tag1.jsp</result>
  29. </action>
  30. <action name="Demo3Action" class="cn.itcast.b_tag.Demo3Action" method="execute" >
  31. <result name="success" type="dispatcher" >/tag2.jsp</result>
  32. </action>
  33. </package>

标签

  1. <%@ taglib prefix="s" uri="/struts-tags" %>
  2.  
  3. <!-- 遍历标签 iterator -->
  4. <!-- ------------------------------------- -->
  5. <s:iterator value="#list" >
  6. <s:property /><br>
  7. </s:iterator>
  8. <!-- ------------------------------------- --><hr>
  9. <s:iterator value="#list" var="name" >
  10. <s:property value="#name" /><br>
  11. </s:iterator>
  12. <!-- ------------------------------------- --><hr>
  13. <s:iterator begin="1" end="100" step="1" >
  14. <s:property />|
  15. </s:iterator>
  16. <!-- ------------------if else elseif------------------- --><hr>
  17.  
  18. <s:if test="#list.size()==4">
  19. list长度为4!
  20. </s:if>
  21. <s:elseif test="#list.size()==3">
  22. list长度为3!
  23. </s:elseif>
  24. <s:else>
  25. list不3不4!
  26. </s:else>
  27.  
  28. <!-- ------------------property 配合ognl表达式页面取值 ------------------- --><hr>
  29.  
  30. <s:property value="#list.size()" />
  31. <s:property value="#session.user.name" />
  1. <!-- struts2表单标签 -->
  2. <!-- 好处1: 内置了一套样式. -->
  3. <!-- 好处2: 自动回显,根据栈中的属性 -->
  4. <!-- theme:指定表单的主题
  5. xhtml:默认
  6. simple:没有主题
  7. -->
  8. <s:form action="Demo3Action" namespace="/" theme="xhtml" >
  9. <s:textfield name="name" label="用户名" ></s:textfield>
  10. <s:password name="password" label="密码" ></s:password>
  11. <s:radio list="{'男','女'}" name="gender" label="性别" ></s:radio>
  12. <s:radio list="#{1:'男',0:'女'}" name="gender" label="性别" ></s:radio>
  13. <s:checkboxlist list="#{2:'抽烟',1:'喝酒',0:'烫头'}" name="habits" label="爱好" ></s:checkboxlist>
  14. <s:select list="#{2:'大专',1:'本科',0:'硕士'}" headerKey="" headerValue="---请选择---" name="edu" label="学历" >
  15. </s:select>
  16. <s:file name="photo" label="近照" ></s:file>
  17. <s:textarea name="desc" label="个人简介" ></s:textarea>
  18. <s:submit value="提交" ></s:submit>
  19. </s:form>
  20.  
  21. <s:actionerror/>

struts2学习2的更多相关文章

  1. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. Struts2学习笔记⑧

    今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...

  4. Struts2学习笔记①

    Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...

  5. Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)

    Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...

  6. Struts2学习:interceptor(拦截器)的使用

    对于需要登陆验证.权限验证等功能的网站,每一次请求,每一个action都写一段验证的代码,未免显得冗余且不易维护.struts2提供了拦截器interceptor,为这些页面提供一个切面,或者说公共组 ...

  7. Struts2 学习笔记(概述)

    Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...

  8. Java后台处理框架之struts2学习总结

    Java后台处理框架之struts2学习总结 最近我在网上了解到,在实际的开发项目中struts2的使用率在不断降低,取而代之的是springMVC.可能有很多的朋友看到这里就会说,那还不如不学str ...

  9. struts2学习之旅三 权限管理和导航设计

    1,权限管理的db设计和dao实现,尽量简单快速有效: db的设计如下:权限按照角色来赋给用户: 权限对应每一个具体的功能,有菜单级别的,有导航级别的,还有页面级别的功能: 涉及到权限的敏感操作一般都 ...

  10. struts2 学习记录 过滤器 国际化

    struts2接触不是一天两天了,但是一直没有用它做什么项目,但老师确一直说它有很大的学习价值,所以还是把我学习到的东西给记录一下,记录的东西没有规律,只是给自己留个备份, struts2中最关键的是 ...

随机推荐

  1. [原创]浅谈在创业公司对MVP的理解

    [原创]浅谈在创业公司对MVP的理解 目前自已所处的公司类似一个创业平台,我们内部会不断的去孵化不同方向的产品,产品经理经常谈到的一个词就是MVP,所以有必需要去了解下什么是MVP? 1 什么是MVP ...

  2. Serverless 与容器决战在即?有了弹性伸缩就不一样了

    作者 | 阿里云容器技术专家 莫源  本文整理自莫源于 8 月 31 日 K8s & cloudnative meetup 深圳场的演讲内容.****关注"阿里巴巴云原生" ...

  3. Python连载31-threading的使用

    一. 例子:我们对传参是有要求的必须传入一个元组,否则报错 二. import _thread as thread import time def loop1(in1): print("St ...

  4. Java8 新特性 Data Time API

    Java8新的日期类型 在Java8以前,Date日期API对我们非常的不友好,它无法表示日期,只能以毫秒的精试来表示时间,并且可以修改,他的线程还不是安全的.所以Java8中引入了全新的日期和时间A ...

  5. ReentrantLock和Condition实现生产者和消费者

    一个生产者和一个消费者 public class ConditionTest { private static ReentrantLock lock = new ReentrantLock(); pr ...

  6. .net core - 配置管理 - json文件配置

    Json 文件配置 public class Startup { public Startup(IHostingEnvironment env) { var builder = new Configu ...

  7. [世预赛] 中国vs关岛,关岛实力有限 国足或许可以赢其10个球,比分预测 10:0,8:0,13:0

    [世预赛] 中国vs关岛 开赛时间:2019-10-10 20:00 继5比0大胜马尔代夫之后,国足迎来世预赛40强赛的第二场比赛,再次向世界杯发起冲击.10月10日,国足在广州迎战神秘之旅关岛. 1 ...

  8. JDK相关目录介绍

    JDK安装后会在硬盘生成一个目录,这个目录被成为JDK安装目录 bin目录: 该目录里用于存放一些可执行文件 .例如:javac.exe(java编译器),java.exe(java运行工具),jar ...

  9. Java 9新特性

    1.jdk 目录结构 JDK9 具体目录结构如下所示: bin: 该目录包含所有的命令. conf: 包含用户可以编辑的配置文件,例如以前位于 jre\lib 目录中的.properties 和 .p ...

  10. 高德地图的JSAPI学习笔记【一】

    高德地图的项目要做 学习笔记记录下来 一.注册账号并申请Key  二.准备页面写好 1.在页面添加 JS API 的入口脚本标签,并将其中「您申请的key值」替换为您刚刚申请的 key: <sc ...