struts初识01——加载,配置文件简单属性及编写

struts_配置文件初识_1

对三层架构中表现层进行优化

struts1和struts2的区别是添加了过滤器

struts2执行过程:

前提条件:服务器:启动服务器》加载web.xml(过滤器中配置了加载struts)》加载struts.xml

​ 执行:服务器请求》过滤对应的请求》查找是否有这个动作名称》示例化动作名称》调用动作方法》由执行结果为依据返回对应的结果视图

配置文件加载顺序(6个),web.xml首先加载

配置属性加载顺序,见下面的2.2

struts.devMode的意思:开发者模式

package四个属性的含义

带名称空间的动作的查找方法

action属性意思

result

1.搭建struts环境

  • 下载struts包

  • 导入jar包

  • 编写配置文件,struts.xml,添加约束文件dtd文件

  • 配置核心控制器

2.使用struts配置文件

2.1配置文件属性介绍

  • package:指定struts包,把配置文件以包的形式进行管理(使用面向对象的思想)

    • name:指定包的名称(在配置文件中唯一)

    • extends:指定当前包的父包

    • abstract:包声明为抽象包,只用于继承,只有没有action元素的包,才能被定义为抽象包

    • namespace:名称空间

      指定名称空间后访问路径为:空间名+动作名

      不指定名称空间,则为默认名称空间(默认值为:"",不是"\"根目录)

      名称空间查找顺序

      1.查找名称空间,路径为多级则逐级向上找

      例如:\a\b\c,则先找\a\b\c,然后a\b,最后\a

      2.查找动作名称

      指定名称空间下找,找到则执行要执行的方法,未找到则在_默认_名称空间中找,且只查找动作名称

  • action:用于定义动作名称,动作类,动作方法的映射,也定义了出现不同情况需要前往的结果视图

    属性

    • name:动作名称
    • class:指定动作类
    • method:指定要执行的动作方法

2.2配置文件加载顺序

  • 加载时机:服务器启动
  • 以下文件从上到下加载,存在属性重名,则后一个覆盖前一个

    1.default.properties

    2.struts-default.xml

    3.struts-plugin.xml

    4.struts.xml(web应用默认的struts配置文件)

    5.struts.properties(struts默认配置文件)

    6.web.xml(web应用默认配置文件)

2.3配置文件的作用

  • 自定义结果类型

    • 自定义结果的类型
    • 自定义结果配置
  • 自定义拦截识别后缀

  • 自定义动作类

  • 不同命名空间的转发,重定向

  • 同命名空间的转发,重定向

3.有关视图

3.1属性

  • result

    • name:不写默认success

    • type:前往结果视图的方法,默认dispatcher

      <!-- resulst元素:配置逻辑结果视图 
      name属性:结果视图名称。与动作方法的返回值对应,当一致前往指定的jsp
      type属性:结果视图类型。不写的时候,有默认值,默认值是dispatcher 转发。
      常用取值:
      	dispatcher:请求转发  默认值
      	redirect:重定向
      	chain:转发到另一个动作
      		转发到同包(同名称空间)下的另一个动作
      <result name="success"type="chain">action2</result>
      		转发到不同包(不同名称空间)下的另一个动作
      <result name="success" type="chain">使用的是注入的思想,在执行之重定向之前,会先获取这两个参数的值
      调用的就是setNamespace("/n2") setActionName("action3")
      	<param name="namespace">/n2</param>
      	<param name="actionName">action3</param>
      </result>
      	redirectAction:重定向到另一个动作
      	重定向到同包(同名称空间)下的另一个动作
      <result name="success" type="redirectAction">action2</result>
      	重定向不同包(不同名称空间)下的另一个动作
      <result name="success" type="redirectAction">
      	使用的是注入的思想,在执行之重定向之前,会先获取这两个参数的值调用的就是setNamespace("/n2")和setActionName("action3")
      	<param name="namespace">/n2</param>
      	<param name="actionName">action3</param>
      </result>
      

3.2创建

  • 自定义结果视图方法

    1.创建类,继承StrutsResultSupport,重写doExcute方法

    2.struts.xml中配置

3.3有效范围

  • 全局结果视图
  • 在包中定义结果视图,则在当前包和其子包中有效
  • 在ACTION内部的配置视图,只能在当前动作类中使用

3.4结果视图查找顺序

  • 结果视图的查找顺序
    • 现在动作类中找—>全局结果视图中找

4.获取servletAPI

  • 使用servletActionContext对象(推荐)
  • 使用依赖注入,注入我们想要的类 (拦截器实现)

5.配置文件

5.1配置尝试

  • 文件名:struts.xml

  • 文件约束:

    来源:struts-core的struts-default

    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    
  • 文件内容

    • 导入其它文件(struts.xml)
    <include file="子文件文件路径"></include>
    
    • 配置公共UI(struts.xml)

    分析过程

    <package name="common" namespace="/" extends="struts-default">
            <!--公共jsp-->
            <!--版本1,使用action实现-->
            <action name="UIAction">
                <result></result>
            </action>
            <!--版本2,使用ActionSupport,可省略class,class默认值ActionSupport-->
            <action name="uiAction" class="com.opensymphony.xwork2.ActionSupport">
                <result>top.jsp</result>
            </action>
            <!--版本三,直接使用,通配符-->
            <action name="uiAction_*_*">
                <!--<result>/WEB-INF/pages/{1}.jsp</result>-->
                <!--
                    两个“_*”,第一个指代文件夹名称,第二个指代文件jsp名称
                -->
                <result>/WEB-INF/{1}/{2}.jsp</result>
            </action>
        </package>
    

    最终结果

    两个“_*”,
    	第一个指代文件夹名称,
    	第二个指代文件jsp名称
    前端界面调用时,访问地址写
    其中:frame指代页面文件所在文件夹
    	 top指代文件名
    写法1:
    src="${pageContext.request.contextPath}/uiAction_frame_top.action"
    写法2:
    src="${pageContext.request.contextPath}/uiAction_<kbd>frame</kbd>_<kbd>top</kbd>"
    
    <package>
        <action name="uiAction_*_*">
        	<result>/WEB-INF/{1}/{2}.jsp</result>
        </action>
    </package>
    
  • struts前端控制器(web.xml)

    <!--struts前端控制器-->
    <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>
    

6.分文件编写配置文件

  • 新建配置文件
  • 在struts.xml中引入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值