web.xml
任何一个web应用程序都是基于请求/响应模式进行构建的,无论采用哪种MVC框架,都离不开web.xml文件的配置
Strus 2框架需要在web.xml中配置其核心控制器-----StrutsPrepareAndExecuteFilter,用于对框架进行初始化,
以及处理所有的请求
配置如下:
<!-- 引入struts2的核心过滤器 --> <filter> <!-- 过滤器的名称,可以自定义 --> <filter-name>struts2</filter-name> <!-- 过滤器类 --> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <!-- 过滤器名称 --> <filter-name>struts2</filter-name> <!-- 过滤器映射 --> <url-pattern>/*</url-pattern> </filter-mapping>
StrutsPrepareAndExecuteFilter作为一个Filter在Web应用中运行,它负责拦截所有用户请求,当用户请求到达时,该filter会过滤用户请求.如果请求以.action结尾,该请求将被输入Struts2框架进行处理.
Action
在Struts2框架中,控制器是由两个部分组成
核心控制器(Filter):用于拦截用户请求,对请求进行处理
业务控制器(Action):调用相应的MOdel类实现业务处理,返回结果
编写的Action类不一定要实现Action接口,只要该类该类含有一个返回字符串的无参的public方法即可
在实际开发中,Action类通常都继承自Struts 2提供的com.opensymphny.xwork2.ActionSuppor类,以便简化开发
开发完成一个类,就需要在struts.xml中配置Action
配置如下:
<!-- 定义action --> <action name="hello" class="cn.baby.action.HelloAction"> <!-- 显示成功的jsp页面 --> <result name="success"> /index.jsp </result> <!--登入失败回到的页面--> <result name="error"> /error.jsp </result> </action>
在配置文件中将一个请求的URL对应到Action类上,当一个请求匹配某个Action的名字时,框架就会使用这个Action类处理请求
Action元素中的name属性是必须的
表示action的名字
用于匹配URL
class属性表示Action类的全限定类名
就决定定该action的实现类
Result
result元素的作用是实现结果视图的调用,并决定视图以哪种形式展现给客户端
Struts2请求流程:
浏览器发送请求------StrutsPrepareAndExecuteFilter 调用 execute的方法----到某个Action---调用业务
返回业务结果-----到某个Action------action返回逻辑视图名-------到物理视图----生成相应内容-------输出响应
Struts2的配置文件
他的核心配置文件就是struts.xml配置文件
constant元素用于配置常量,通过常量的配置,可以改变Struts2框架的一些行为
constant元素包含两种属性,其实name属性表示常量的名称,value属性表示常量的值
例子:
<!--决绝中文乱码--> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <!--设置用户界面主题,默认值为XHTML风格--> <constant name="struts.ui.theme" value="simple"/>
namespace属性
它是个可选属性,该属性定义该包中action的命名空间
没有此属性,则action被放入默认命名空间中
Struts 2框架使用action的名称和它所在包的命名空间来表示一个action
默认的命名空间用""表示
也可以使用"/"定义一个根命名空间
两者是有区别的
当请求Web应用程序根路径下的action
框架在根命名空间中查询对应的action
如果没找到
再到默认的的命名空间中去查找
拆分配置文件
Struts 2可以将一个配置文件拆分为多个配置文件
但默认只加载struts.xml文件
一但拆分了可以通过include元素提供的file属性进行包含进来
<!--包含其他的文件--> <include file="xxxx.xml"/>
struts-default.xml
它struts 2框架默认配置文件,为框架提供默认配置,该配置文件会自动加载
struts-plugin.xml
它是struts2插件使用的配置文件,如果不是插件开发,则不需要编写这个文件
Action的配置
Action主要有三个作用:
给请求封装需要做实际的工作
通常使用Action的execute()方法实现
为数据的转移提供场所
帮助框架由哪个结果呈现请求响应
method属性
我们可以在同一action编写不同的方法(必须和execute格式一样)
然后就可以通过action里的method属性来实现
配置默认的action
当找不到页面时
框架会提供一个默认的找不到的页面给你
当然需要你的配置
在每个package下只能有一个<default-action-ref.../>元素
配置如下:
<!-- 生命包 --> <package name="default" namespace="/" extends="struts-default"> <default-action-ref name="defaultAction"/> <action name="defaultAction"> <result>error.jsp</result> </action> </package>