网易云歌单

Strutss 配置详解

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>

 

posted @ 2018-01-07 17:25  给我唆一口  阅读(280)  评论(0编辑  收藏  举报