Struts2框架学习---ONE

来源:互联网 发布:软件配置管理 培训 编辑:程序博客网 时间:2024/06/02 05:22

通过阅读本你将掌握:
                   struts2框架的配置
                   入门程序的实现;
                   配置文件的加载顺序;
                   action标签的默认值;
                   Action类的三种创建方式;
                   Struts2框架中获取servletAPI的三种方式;
                   result标签中type可取的值;
                   全局result与局部result.

一、背景
Struts2是在Struts1和WebWork的技术基础上进行了合并的全新的一个框架,虽然名为Struts2,但是与Struts1的体系相差特别大。核心是WebWork。
二、使用目的
Struts2可以大大的提高web开发的效率,并且降低程序的耦合度。

三、快速入门
开发必备资源:
http://download.csdn.net/download/qq_25343557/10034377
①创建一个动态Web工程
对struts2框架进行配置:
1、需要的jar包:
需要的jar包
2、web.xml文件中配置前端控制器(前端控制器)
目的:为使Struts2能运行。
web.xml的配置
3、struts.xml的配置:
空白的struts.xml文件
一个空白的srtuts2框架项目目录结构如下:
目录结构
通过资源文件查找jar包及配置文件:
jar包:
这里写图片描述
web文件:
这里写图片描述
struts.xml文件
这里写图片描述

配置完毕,创建一个QucikStartAction类:

public String start(){        System.out.println("Quick start fun...");        return "quickStart";}

在struts.xml文件中配置QuickStartAction:
这里写图片描述
在index.jsp页面处编写:<a href=”${pageContext.request.contextPath }/quick”>to quick.jsp</a>
发布项目后点击链接,页面成功跳转至quick.jsp页面,同时控制台上也输出了Quick start fun…
QucikStart程序的流程分析:
这里写图片描述
此时我们其实就可以模仿这一流程,自己实现Struts2的这一流程。
参考博文:http://blog.csdn.net/qq_25343557/article/details/78310943

关于Struts2配置重点:
1、Struts2配置文件的加载顺序:
配置文件的加载顺序
default.properties文件:
作用:定义了struts2中的所有常量
位置:org/apache/struts2/default.properties
此文件以后会经常使用。
struts-default.xml:
作用:配置了bean,interceptor,result等
位置:在struts的核心jar包
注意:后加载文件中的配置会将先加载文件中的配置覆盖。
例如:
default.properties中配置了a=0;
struts-default.xml中配置了a=2;
struts.xml中配置了a=3;
最后a=3;即最后配置的a。

关于Action的配置:
1、<package>作用:用于声明一个包(与java中的package意义相差无几),用于管理action。
包含属性:
①、name:声明一个包名,包名不可以重复。
②、namespace:命名空间,它与action的name属性合并就确定了一个唯一的action访问路径。例如:”/”和”quick”
③、extends:表示此包继承哪个包
④、abstrace:它可以取值为true和false,如果为true,表示这个包是用于被继承的。

2、<action>:用于声明一个action
①、name:action的名称。在同一个包内它是唯一的。
②、class:action类的全类名
③、method:要调用Action中的方法的名称,要求方法无参数,返回值为String类型。

3、<result>:用于确定结果视图
①、name:它与Action中的方法的返回值做对比,确认跳转的结果视图。

关于Action的默认配置:
1、<package namespace=”默认值”>:默认值为“”。空
2、<action class=”默认值” method=”默认值”>:class的默认值为ActionSupport类。method的默认值为execute()方法。
关于action的访问路径:
在QuickStart实例中,我们访问action的路径为:
http://localhost:8080/QuickStart/quick。
现在将路径改为http://localhost:8080/QuickStart/a/b/c/quick。依然可以访问到action。
原因:
struts2中action被访问时它会首先查找
namespace=“/a/b/c” action的name=“quick”的,没有,继续查找
namespace=“/a/b” action的name=“quick”的,没有,继续查找
namespace=“/a” action的name=“quick”的,没有,继续查找
namespace=“/” action的name=“quick”的,有,查找到了。
否则,报404错误。
Struts2中的常量配置及常用常量:
一、常量配置
1.1、Struts.xml中的常量配置(应用最多,切记)

<constant name=”常量名” value=”常量值”>

1.2、Web.xml中的常量配置

<init-param>
     <param-name>常量名</param-name>
     <param-value>常量值</param-value>
</init-param>

应知常量:
指定Struts2框架默认拦截的后缀名:

struts.action.extension=action

设置请求字符的编码:
<constant name=”struts.i18n.encoding” value=”UTF-8”>

设置是否缓存静态内容:

<constant name=”struts.serve.static.browserCache” value=”false”>

提供详细的错误页面,修改struts.xml后不需要重新启动服务器。(话虽如此,其实很挫)

<constant name=”struts.devMode” value=”true”>

struts.xml文件的分离:

<include file=”配置文件路径”>

Action类的创建:
有三种方式创建Action类:
第一种:创建一个POJO类。
POJO:简单的JAVA对象(Plain Old Java Objects)。
优点:解耦合。
缺点:无论什么都要自己实现。
第二种:实现Action接口。
action接口
可见Action中提供了五个视图,还有一个行为方法。
优点:耦合度还是很低的。
缺点:还是什么都要自己完成。
第三种:继承ActionSupport类。
ActionSupport类实现了Action接口。
优点:可以支持表单验证、错误信息设置、读取国际化信息。
缺点:耦合度高了。
第三种用的最多。

Action类的访问:
1、老老实实的把name和method的值填完整。例如QuickStart实例。
2、使用通配符。
<action name=”book_*” class=”全类名” method=”{1}”>
可以实现图书的CRUD四个功能,而不需要写四个action。
3、动态方法的调用
<action name=”book” class=”全类名” ></action>
没有写method。
访问路径:http://localhost:8080/QuickStart/book!add,访问到了add()方法。对于book!add就是动态方法调用。
注意:使用动态方法调用需要配置一个常量。

<constant name=”struts.enable.DynamicMethodInvocation”
value=”true”>

在Struts2框架中获取servletAPI:
事实上,不建议直接使用servletAPI。
获取servletAPI的方式有三种。
第一种:通过ActionContext来获取。
事实上通过ActionContext获得的并不是真正的额ServletAPI,而是一个Map集合。
这里写图片描述

第二种:注入方式来获取(这种方式获得的是真正的servletAPI)。
额外要求:需要实现特定的接口。

ServletContextAware:注入ServletContext对象
ServletRequestAware:注入ServletRequest对象
ServletResponseAware:注入ServletResponse对象
这里写图片描述

这种方法是如何实现的?
答:使用了struts2中的一个拦截器。ServletConfigInterceptor拦截器。

这里写图片描述

第三种:通过ServletActionContext获取。
这里写图片描述

getResponse();
getPageContext();

Result结果类型:
<result>标签:
①、name:与action中的method的返回值进行匹配,确定跳转页面
②、type:用于定义跳转方式。
对于type的值可以在struts-default.xml文件中查找:
type属性的值
重点属性值得含义如下:
重点属性值含义

全局Result和局部Result:

全局result:
<global-results>
      <result name=”xxx”>/xx.jsp</result>
</global-results>
在当前包中的每一个action都可以使用

局部result:
<action name=”xxx” class=”xxx” method=”xxx”>
      <result name=”xxx”>/xx.jsp</result>
</action>

原创粉丝点击