Struts框架_1环境搭建及入门

搭建Struts2的环境:
1、加入jar包:复制struts\apps\struts2-blank\WEB-INF\ib 下的所有jar包到当前web应用的lib目录下.
2、在web.xml文件中配置struts2:复制struts\apps\struts2-blank1\WEB-INF\web.xml文件中的过滤器的配置到当前web应用的web.xml文件中
3、在当前web应用的classpath 下添加struts2的配置文件struts.xml:复制struts1\apps\struts2 -blank\WEB-INF\classes下的struts.xml文件到当前web应用的src目录下.
 

package:包struts2 使用package来组织模块。
name属性:必须。用于其它的包应用当前包。
extends:当前包继承哪个包,继承的,即可以继承其中的所有的配置,通常情况下继承struts- default,struts-default这个包在struts-default.xml文件中定义。

class的默认值为: com.opensymphony.xwork2.ActionSupport
method的默认值为: execute
result:结果。
namespace:可选,如果它没有给出,则以/为默认值。
若namespace有一个非默认值,则要想调用这个包里的Action,就必须把这个属性所定义的命名空间添加到有关的URI字符串里
http://localhost : 8080/ contextPath/ namespace/actionName . action

例子:

工作流程:

2. action VS Action类
1)、action: 代表一个Struts2 的请求。
2)、Action 类:能够处理Struts2请求的类.
属性的名字必须遵守与JavaBeans属性名相同的命名规则.
属性的类型可以是任意类型。从字符串到非字符串(基本数据库类型)之间的数据转换可以自动发生
>必须有一个不带参的构造器: 通过反射创建实例
>至少有一个供struts 在执行这个action时调用的方法
>同一个Action类可以包含多个action方法。
> Struts2会为每一个HTTP 请求创建一一个新的Action 实例,即Action不是单例的,是线程安全的。
2.在Action 中访问WEB资源:
1).什么是WEB资源?
HttpServletRequest, HttpSession, Serv1etContext 等原生的Servlet API.
2).为什么访问WEB资源?
B\S的应用的Controller中必然需要访问WEB资源:向域对象 中读写属性,读写Cookie,获取realPath ....
3).如何访问?
1、servlet API解耦的方式:只能访问有限的Servlet API对象,且只能访问其有限的方法(读取请求参数,读写域对象的属性)
>使用ActionContext
>实现XxxAware接口

>选用的建议:若-个Action 类中有多个action方法,且多个方法都需要使用域对象的Map或parameters, 则建议使用Aware接口的方式
> session对应的Map实际上是SessionMap类型的!强转后若调用其invalidate() 方法,可以使其session失效!
2、Servlet API 耦合的方式:可以访问更多的Serv1et API 对象,且可以调用其原生的方法.

>使用ServletActionContext
>实现ServletXxxAware接口

例子:使用ActionContext

jsp:

java:

例子:实现XxxAware接口

例子:使用ServletActionContext

ServletActionContext:可以从中获取到当前 Action对象需要的一切Servlet API 相关的对象。
常用的方法:

例子:实现ServletXxxAware接口

通过实现ServletXxxAware接口的方式可以由Struts2注入需要的Servlet相关的对象