学习方法:
特点:内容多,比较散。做好笔记。
多做实验,证明你的结论。或者查看Struts2自带的文档。增加印像。
实际开发时:用得相对较少。
一:模型:
二:MVC 理解
MVC:
M:模型。封装数据
V:视图。展现结果。之前用的是JSP
C:控制器。接收用户的请求,根据不同的请求执行不同的代码,转向不同的页面。之前用的是Servlet。
规律:用户什么请求?-----------执行哪个方法?--------------方法执行完转向哪个视图?
三:Servlet VS Filter 比较
Servlet可以作为控制器,Filter也可以作为控制器,而且功能比Servlet要强大,强大在Filter能根据条件决定是否放行。
四:Struts2优点:
允许POJO(Plain Old Java Objects)对象作为Action
Action的execute方法不再与Servlet API耦合,更易测试
支持更多视图技术(JSP、FreeMarker、Velocity)
基于Spring AOP思想的拦截器机制,更易扩展
更强大、更易用输入校验功能
五:开发所需要的包
小技巧:从Struts2发行包\apps\struts2-blank\WEB-INF\lib
核心控制器
web.xml
建立Struts2的配置文件:指挥过滤器如何工作
小技巧:从Struts2发行包\apps\struts2-blank\WEB-INF\classes\struts.xml拷贝
验证是否成功,加载到Tomcat 启动 没报错则成功。
六 :执行过程
七:Struts.xml配置文件详解
package元素:
作用:方便分模块化开发
属性:
name:必须有。唯一。作用标示一个包。最好有一定的含义。
extends:继承。一般要求必须继承struts-default的包。不继承该包,将无法使用struts2提供的一些核心功能。struts-default包在
struts-default.xml中有配置,加载自己的struts.xml文件之前,框架就已经加载了struts-default.xml配置文件,
所有我们可以使用。
abstract:是否是抽象包。让别人继承用的。没有任何action子元素的包就可以声明为抽象包。
namespace:名称空间。默认值是"",称之为默认名称空间。(很多其他的都讲错了,默认的名称空间是/)。取值一般以/开头
重点:namespace和动作的name共同组成了用户访问的URI。
action元素:
action:定义一个动作。
name:动作名称。对应着用户的请求名称,默认的后缀是action或没有后缀。
class:框架要实例化的动作类名称,全名称。默认值是com.opensymphony.xwork2.ActionSupport。在struts-default.xml中有定义。
method:执行的动作类的动作方法。默认值是execute
八:多个struts配置文件
九:在动作类中使用Servlet的API
方式一:特简单,记住。建议使用的
使用ServletActionContext。可以在任何地方都可以获取到
方式二:了解
实现原理:Struts2的拦截器。servletConfig做的。
十:结果视图
result元素:
作用:配置逻辑结果视图。一个动作可以对应多个逻辑视图。
属性:
name:逻辑视图名称,和动作类方法的返回值对应。默认是success。
type:转向实际视图的方式。默认是dispatcher,转发,目标是一个页面。
type的取值:从struts-default.xml找
dispatcher:目标是一个页面,请求转发。
redirect:目标是一个页面,请求重定向。
chain:目标是另外一个动作,请求转发。
redirectAction:目标是另外一个动作,请求重定向。
如何设置参数
和下面写法一样
转发的目标动作不在同一个包下,而且包有着不同的namespace