struts2学习2
拦截器
- //拦截器:第一种创建方式
- //拦截器生命周期:随项目的启动而创建,随项目关闭而销毁
- public class MyInterceptor implements Interceptor {
- @Override
- //初始化方法
- public void init() {
- }
- @Override
- //拦截方法
- public String intercept(ActionInvocation arg0) throws Exception {
- return null;
- }
- @Override
- //销毁方法
- public void destroy() {
- }
- }
- //创建方式2: 继承AbstractInterceptor -> struts2的体贴
- //帮我们空实现了init 和 destory方法. 我们如果不需要实现这两个方法,就可以只实现intercept方法
- public class MyInterceptor2 extends AbstractInterceptor {
- @Override
- public String intercept(ActionInvocation arg0) throws Exception {
- return null;
- }
- }
- //继承:MethodFilterInterceptor 方法过滤拦截器
- //功能: 定制拦截器拦截的方法.
- // 定制哪些方法需要拦截.
- // 定制哪些方法不需要拦截
- public class MyInterceptor3 extends MethodFilterInterceptor{
- @Override
- protected String doIntercept(ActionInvocation invocation) throws Exception {
- //前处理
- System.out.println("MyInterceptor3 的前处理!");
- //放行
- String result = invocation.invoke();
- //后处理
- System.out.println("MyInterceptor3 的后处理!");
- return result;
- }
- }
- <package name="inter" namespace="/" extends="struts-default" >
- <interceptors>
- <!-- 1.注册拦截器 -->
- <interceptor name="myInter3" class="cn.itcast.a_interceptor.MyInterceptor3"></interceptor>
- <!-- 2.注册拦截器栈 -->
- <interceptor-stack name="myStack">
- <!-- 自定义拦截器引入(建议放在20个拦截器之前) -->
- <interceptor-ref name="myInter3">
- <!-- 指定哪些方法不拦截
- <param name="excludeMethods">add,delete</param> -->
- <!-- 指定哪些方法需要拦截 -->
- <param name="includeMethods">add,delete</param>
- </interceptor-ref>
- <!-- 引用默认的拦截器栈(20个) -->
- <interceptor-ref name="defaultStack"></interceptor-ref>
- </interceptor-stack>
- </interceptors>
- <!-- 3.指定包中的默认拦截器栈 -->
- <default-interceptor-ref name="myStack"></default-interceptor-ref>
- <action name="Demo1Action_*" class="cn.itcast.a_interceptor.Demo1Action" method="{1}" >
- <!-- 为Action单独指定走哪个拦截器(栈)
- <interceptor-ref name="myStack"></interceptor-ref>-->
- <result name="success" type="dispatcher" >/index.jsp</result>
- </action>
- </package>
- <package name="tag" namespace="/" extends="struts-default" >
- <action name="Demo2Action" class="cn.itcast.b_tag.Demo2Action" method="execute" >
- <result name="success" type="dispatcher" >/tag1.jsp</result>
- </action>
- <action name="Demo3Action" class="cn.itcast.b_tag.Demo3Action" method="execute" >
- <result name="success" type="dispatcher" >/tag2.jsp</result>
- </action>
- </package>
标签
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <!-- 遍历标签 iterator -->
- <!-- ------------------------------------- -->
- <s:iterator value="#list" >
- <s:property /><br>
- </s:iterator>
- <!-- ------------------------------------- --><hr>
- <s:iterator value="#list" var="name" >
- <s:property value="#name" /><br>
- </s:iterator>
- <!-- ------------------------------------- --><hr>
- <s:iterator begin="1" end="100" step="1" >
- <s:property />|
- </s:iterator>
- <!-- ------------------if else elseif------------------- --><hr>
- <s:if test="#list.size()==4">
- list长度为4!
- </s:if>
- <s:elseif test="#list.size()==3">
- list长度为3!
- </s:elseif>
- <s:else>
- list不3不4!
- </s:else>
- <!-- ------------------property 配合ognl表达式页面取值 ------------------- --><hr>
- <s:property value="#list.size()" />
- <s:property value="#session.user.name" />
- <!-- struts2表单标签 -->
- <!-- 好处1: 内置了一套样式. -->
- <!-- 好处2: 自动回显,根据栈中的属性 -->
- <!-- theme:指定表单的主题
- xhtml:默认
- simple:没有主题
- -->
- <s:form action="Demo3Action" namespace="/" theme="xhtml" >
- <s:textfield name="name" label="用户名" ></s:textfield>
- <s:password name="password" label="密码" ></s:password>
- <s:radio list="{'男','女'}" name="gender" label="性别" ></s:radio>
- <s:radio list="#{1:'男',0:'女'}" name="gender" label="性别" ></s:radio>
- <s:checkboxlist list="#{2:'抽烟',1:'喝酒',0:'烫头'}" name="habits" label="爱好" ></s:checkboxlist>
- <s:select list="#{2:'大专',1:'本科',0:'硕士'}" headerKey="" headerValue="---请选择---" name="edu" label="学历" >
- </s:select>
- <s:file name="photo" label="近照" ></s:file>
- <s:textarea name="desc" label="个人简介" ></s:textarea>
- <s:submit value="提交" ></s:submit>
- </s:form>
- <s:actionerror/>
struts2学习2的更多相关文章
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Struts2学习笔记⑧
今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...
- Struts2学习笔记①
Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...
- Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)
Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...
- Struts2学习:interceptor(拦截器)的使用
对于需要登陆验证.权限验证等功能的网站,每一次请求,每一个action都写一段验证的代码,未免显得冗余且不易维护.struts2提供了拦截器interceptor,为这些页面提供一个切面,或者说公共组 ...
- Struts2 学习笔记(概述)
Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...
- Java后台处理框架之struts2学习总结
Java后台处理框架之struts2学习总结 最近我在网上了解到,在实际的开发项目中struts2的使用率在不断降低,取而代之的是springMVC.可能有很多的朋友看到这里就会说,那还不如不学str ...
- struts2学习之旅三 权限管理和导航设计
1,权限管理的db设计和dao实现,尽量简单快速有效: db的设计如下:权限按照角色来赋给用户: 权限对应每一个具体的功能,有菜单级别的,有导航级别的,还有页面级别的功能: 涉及到权限的敏感操作一般都 ...
- struts2 学习记录 过滤器 国际化
struts2接触不是一天两天了,但是一直没有用它做什么项目,但老师确一直说它有很大的学习价值,所以还是把我学习到的东西给记录一下,记录的东西没有规律,只是给自己留个备份, struts2中最关键的是 ...
随机推荐
- [原创]浅谈在创业公司对MVP的理解
[原创]浅谈在创业公司对MVP的理解 目前自已所处的公司类似一个创业平台,我们内部会不断的去孵化不同方向的产品,产品经理经常谈到的一个词就是MVP,所以有必需要去了解下什么是MVP? 1 什么是MVP ...
- Serverless 与容器决战在即?有了弹性伸缩就不一样了
作者 | 阿里云容器技术专家 莫源 本文整理自莫源于 8 月 31 日 K8s & cloudnative meetup 深圳场的演讲内容.****关注"阿里巴巴云原生" ...
- Python连载31-threading的使用
一. 例子:我们对传参是有要求的必须传入一个元组,否则报错 二. import _thread as thread import time def loop1(in1): print("St ...
- Java8 新特性 Data Time API
Java8新的日期类型 在Java8以前,Date日期API对我们非常的不友好,它无法表示日期,只能以毫秒的精试来表示时间,并且可以修改,他的线程还不是安全的.所以Java8中引入了全新的日期和时间A ...
- ReentrantLock和Condition实现生产者和消费者
一个生产者和一个消费者 public class ConditionTest { private static ReentrantLock lock = new ReentrantLock(); pr ...
- .net core - 配置管理 - json文件配置
Json 文件配置 public class Startup { public Startup(IHostingEnvironment env) { var builder = new Configu ...
- [世预赛] 中国vs关岛,关岛实力有限 国足或许可以赢其10个球,比分预测 10:0,8:0,13:0
[世预赛] 中国vs关岛 开赛时间:2019-10-10 20:00 继5比0大胜马尔代夫之后,国足迎来世预赛40强赛的第二场比赛,再次向世界杯发起冲击.10月10日,国足在广州迎战神秘之旅关岛. 1 ...
- JDK相关目录介绍
JDK安装后会在硬盘生成一个目录,这个目录被成为JDK安装目录 bin目录: 该目录里用于存放一些可执行文件 .例如:javac.exe(java编译器),java.exe(java运行工具),jar ...
- Java 9新特性
1.jdk 目录结构 JDK9 具体目录结构如下所示: bin: 该目录包含所有的命令. conf: 包含用户可以编辑的配置文件,例如以前位于 jre\lib 目录中的.properties 和 .p ...
- 高德地图的JSAPI学习笔记【一】
高德地图的项目要做 学习笔记记录下来 一.注册账号并申请Key 二.准备页面写好 1.在页面添加 JS API 的入口脚本标签,并将其中「您申请的key值」替换为您刚刚申请的 key: <sc ...