Struts2学习笔记整理(二)
这里是重点.
Action接口
- struts2 的Action可以是POJO
- 为了让用户开发的Action更加规范struts2提供了一个Action接口

ActionSupport基类
- Struts2为Action接口提供了一个实现类 ActionSupport,定义了 表单域校验、错误信息设置和获得国际化信息相关一些方法

我们写的action可以有以下几种选择:
- Action 可以是 POJO
- 用户编写Action 可以实现Action接口 可以使用结果集常量字符串
- 用户编写Action 可以继承ActionSupport基类 对请求参数进行校验 设置错误信息 读取国际化信息
- execute方法编写注意细节 public 修饰符 String 返回值 无参数
通过method属性指定action的执行方法
- 没有指定method属性,默认执行execute方法
- 通过method属性,指定调用Action相应方法处理请求
使用通配符配置Action
- 在配置<action...>元素时,允许在指定name属性时,使用模式字符串(用"*"代表一个或多个任意字符)
- 在class、method属性及<result>子元素中通过 {N} 形式代表前面地N个* 匹配子串

- 这里一个使用通配符的更复杂案例

- *_*代表匹配两个字符串
- {1} 匹配UserAction 用于执行class
- {2} 匹配login用于指定method执行方法 和结果页面
- 通过url动态指定调用Action哪个方法而无需配置<action>的method属性
- 通过 !方法名 指定调用Action哪个方法

- struts.xml没有指定method属性
- 但是product!add.action 就会执行ProductAction的add方法
配置默认Action和 配置Action默认处理类
- 用户可以为每个package定义一个默认的Action,如果访问路径在package没有匹配<action> 就会执行默认action

- 如果配置<action> 没有指定class属性,就会执行Action的默认处理类,在struts-default.xml中

- Action处理完用户请求后,将返回一个普通字符串
- 整个普通字符串就是一个逻辑视图名
- Struts2根据逻辑视图名,决定响应哪个结果
- Struts2处理结果使用<result>元素配置局部结果:将<result>作为<action>子元素配置 全局结果:将<result>作为<global-results>元素的子元素配置
- 配置<result>元素通常需要指定两个属性 name 该属性指定配置逻辑视图名 type 该属性指定结果类型
当多个action中都使用到了相同result,这时我们应该把result定义为全局结果。struts1中提供了全局forward,struts2中也提供了相似功能:
<package ....>
<global-results>
<result name="message">/message.jsp</result>
</global-results>
</package>
注:局部的会覆盖全局
Struts1中应用范围内action的实例 action是单实例(执行时,现在缓存中查找实例,有用,没有创建新的实例)
Struts2中 应用范围内action的实例,每个请求都会创建一个action实例
Servlet属于单实例多线程的应用,实例只在初始化时被加载
多实例比单实例的优点,不会产生并发问题,但执行速度不如单实例
重点结果类型(经常使用到的)
- struts-default.xml 配置常用结果类型

结果类型: dispatcher
- ldispatcher 结果类型是最常用的结果类型, 也是 struts 框架默认的结果类型
- 该结果类型有一个 location 参数, 它是一个默认参数
- ldispatcher 结果类型将把控制权转发给应用程序里的某个资源.
- ldispatcher 结果类型不能把控制权转发给一个外部资源. 若需要把控制权重定向到一个外部资源, 应该使用 redirect 结果类型
结果类型: redirect
- lredirect 结果类型将把响应重定向到另一个资源, 而不是转发给该资源.
- lredirect 结果类型接受下面这些参数: location: 用来给出重定向的目的地 param: 用来表明是否把 location 参数的值视为一个 OGNL 表达式来解释. 默认值为 true
- lredirect 结果类型可以把响应重定向到一个外部资源
结果类型: redirectAction
- lredirectAction 结果类型把响应重定向到另一个 Action
- redirectAction 结果类型接受下面这些参数 actionName: 指定 “目的地” 动作的名字. 它是默认属性 namespace: 用来指定 “目的地” 动作的命名空间. 如果没有配置该参数, Struts 会把当前 Action 所在的命名空间作为 “目的地” 的命名空间
Struts2 Action接受请求参数
- 作为MVC框架,必须要负责解析HTTP请求参数,并将其封装到Model对象中
- Struts2提供了非常强大的类型转换机制用于请求数据 到 model对象的封装
- Struts2 提供三种数据封装的方式 1Action 本身作为model对象,通过成员setter封装2创建独立model对象,页面通过ognl表达式封装3.使用ModelDriven接口,对请求数据进行封装
Action类成员变量setter接收参数

创建单独model对象,页面OGNL


Struts2学习笔记整理(二)的更多相关文章
- Deep Learning(深度学习)学习笔记整理(二)
本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep learning简介 [2]Deep Learning训练过程 [3]Deep Learning模型之 ...
- struts2学习笔记之二:基本环境搭建
学习struts2有一段时间了,作为一个运维人员学习的时间还是挺紧张的,写这篇文件为了方便以后复习时使用 环境: MyEclipse 10 tomcat6 jdk1.6 首先建立一个web项目,并 ...
- Struts2学习笔记整理(一)
最近在学习框架,很多人建议我直接学SSM,SSM看了一段时间后发现很多东西虽然可以用了,但是并不是很了解,所以我打算重新来过.从SSH开始学习,前面已经大致的学习了Hibernate,对于Hibern ...
- Struts2学习笔记整理(三)
Struts2的输入校验 之前对请求参数的输入校验一般分为两部分:1.客户端校验,也就是我们写js代码去对客户的误操作进行过滤 2.服务端校验, 这是整个应用组织非法数据的最后防线. Struts2 ...
- struts2学习笔记(二)—— struts2的架构【转】
一.系统架构 Struts2的官方文档附带了Struts2的架构图. 从这张图能够非常好的去理解Struts2 关于图中的Key: Servlet Filters:过滤器链,client的全部请求 ...
- Struts2学习笔记整理(四)
Struts2上传下载 文件上传 如果想使用HTML表单上传文件(一个或多个),那么必须把HTML表单的enctype属性设置成multipart/form-data,且method=post, 且使 ...
- struts2学习笔记(二)
一. 国际化的目标 1). 如何配置国际化资源文件 I. Action 范围资源文件: 在Action类文件所在的路径建立名为 ActionName_language_country.properti ...
- struts2学习笔记(二)—— 获取登录信息及计算在线人数
实现目的: 1.点击"Login"的超链接.进入登录页面 2.填写登录信息.提交表单,将用户信息保存进Session 3.显示用户名,并计算在线 ...
- Struts2学习笔记《二》
struts.xml配置文件的全部配置元素:
随机推荐
- selenium-iframe操作
iframe,又叫浮动帧标记,是内嵌的网页元素,可以将一个html文件嵌入到另一个html文件中显示. 最典型的案例就是163邮箱登录:http://mail.163.com/,被绿色覆盖的部分即为i ...
- Python入门学习(二)
1 字典 1.1 字典的创建和访问 字典不同于前述的序列类型,它是一种映射类型.它的引入是为了简化定义索引值和元素值存在特定关系的定义和访问问题. 字典的定义形式为:字典变量名 = {key1:val ...
- 如何部署Java_web项目到云服务器上
步骤 1:购买 Linux 实例(略) 步骤2:安装JDK 本节介绍如何安装java jdk. 软件包中包含的软件及版本如下: Tomcat:1.8.0_121 说明:这是写文档时参考的软件版本.您下 ...
- Struts2-整理笔记(三)结果处理跳转、获得servletAPI原生
在struts2中有很多种跳转方式如下是在struts-default.xml截取的一段源码,常用的跳转有 转发:dispatcher.重定向:redirect.转发到Action:chain.重定向 ...
- window下安装Apache+PHP
本地系统为windows 10,Apache选择httpd-2.4.25-x64-vc14-r1,PHP选择php7.1_x64线程安全版. 1.安装Apache 将apache解压到c:/serve ...
- 2017-11-22 Intall Ubuntu Log
重启之后进入不了系统,安装工具check defect也不好用(问题尚不清楚),决定重做系统 直接用u盘(Universal_USB_Installer制作的安装工具,之前用都没有问题)安装,前面一起 ...
- 第一份开发工作,边学边做android
我刚刚毕业,在培训学校学的Java web开发,虽然学的没有大学生那么丰富细致,没有他们理论基础扎实,但是这是我学习软件开发的唯一方式了. 从小学我学习就是倒数2.3等,所有人都认为我是个没法学习的孩 ...
- 开始python成长之路
因为某种特殊原因很不幸的得了脱髓鞘 正要去实习 大展身手 甚至公司都选好了 可就在这个节骨眼..得了传说中的脱髓鞘.经过一年的修养 我决定还是要站起来 毕竟一生的时间很长 这一段时间 我都在玩游戏赚钱 ...
- kafka 集群搭建
环境:ubuntu14.04 版本:jdk1.8,zookeeper 3.4.10,kafka 2.11 搭建步骤: 1. 搭建zookeeper集群 参考链接:zookeeper集群搭建 2. 下载 ...
- 常用接口简析2---IComparable和IComparer接口的简析
常用接口的解析(链接) 1.IEnumerable深入解析 2.IEnumerable.IEnumerator接口解析 3.IList.IList接口解析 默认情况下,对象的Equals(object ...