当前位置: 首页 > 工具软件 > Orion SSH2 > 使用案例 >

【SSH】struts.xml

巢德华
2023-12-01

  对于ssh的学习而已,对我来说,配置文件们真的是很难理解的一部分内容,貌似理解,实则说不出来什么。为了更好的学习相关内容,因此写下本篇博文,本篇博文的内容是struts.xml的相关知识。

一.struts核心文件

文件主要作用关键元素
web.xml1.初始化配置信息:比如Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等
2.在服务器启动时将配置的文件加载到内存
3.它不是一个Web的必要文件,没有它,网站也可以正常工作的
1.欢迎页面:welcome-file-list ; welcome-file
2.过滤器:filter ; filter-mapping
3.错误处理:error-page
4.监听器:listener
5.会话过期时间:session-config
6.定义参数:init-param
struts.xml1.核心配置文件,主要负责管理应用中的Action映射,以及该Action包含的result定义等。
2.主要内容:(1)全局属性
(2)用户请求和相应Action之间的对应关系,可能用到的参数和返回结果
(3)导入其他配置文件
(4)拦截器配置
1.配置包:package
2.全局结果:global-results
3.拦截器:interceptors
4.include
5.action
6.result
struts.properties1.struts2框架的全局属性文件,自动加载,可用来管理struts的大量常量
2.包含很多key-value对,该文件可以使用constant完全配置在struts.xml中
1.默认编码集:struts.il8n.encoding
2.是否使用开发模式:struts.devMode
3.指定配置管理器:struts.configuration
4….

二.struts.xml

1.基本配置

<!-- 设置编码格式为utf-8,解决乱码问题 -->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<!-- 根元素 -->    
<struts>
    <!-- 配置包,包名为default,该包继承了struts2框架的默认包struts-default,命名空间为“/” -->
    <package name="default" extends="struts-default" namespace="/">

        <!--配置名为的x的Action,实现类为yAction,视图为z.jsp-->
        <action name="x" class="yAction">
            <result name="index">/z.jsp</result>
        </action>

    </package>
</struts>

注:
1.struts是根标签,其他所有的标签都放在它的中间。
2.package元素定义了一个包,在struts2框架中,用包来组织Action和拦截器,每个包由零到多个拦截器及Action组成。
3.action元素定义了一个Action和其对应的类。
4.result元素定义了Action返回结果对应的视图。

2.关键元素详解

(1)package

实例:

<!--配置包,包名为default,该包继承了struts2框架的默认包struts-default,命名空间为“/” -->
<package name="shop" extends="struts-default" namespace="/">      
    <!--配置首页访问的Action-->
    <action name="index" class="indexAction">
        <result name="index">/WEB-INF/jsp/index.jsp</result>
    </action>
</package>

package元素属性:

属性说明
name必选属性,标识包的名字,方便在其他包中被引用
extends可选属性,指定该包继承其他包
namespace可选属性,指定命名空间,标识此包下的action的访问路径
abstract可选属性,指定该包为抽象包

  package元素用来配置包,name属性用来唯一标识包,还可以通过指定extends属性让一个包继承另一个包,继承包可以从被继承包那里继承到拦截器、action等。
  namespace可以指定包对应的命名空间,当指定后,该包所包含的action处理的url是:命名空间+action。以如上代码举例:url是http://localhost:8080/indexaction

(2)global-results

实例:

<struts>
    <package name="shop" extends="struts-default" namespace="/">
        <global-results>
            <result name="msg">/WEB-INF/jsp/msg.jsp</result>
        </global-results>
    </package>
</struts>

  该元素配置包中的全局结果,当一个action处理用户请求后返回时,会首先在该action本身的局部结果中进行搜索,如果局部结果中没有对应的结果,则会查找全局结果。

(3)interceptors

实例:

<struts>
    <package name="shop" extends="struts-default" namespace="/">
        <interceptors>
            <interceptor name="privilegeInterceptor" class="cn.itcast.shop.interceptor.PrivilegeInterceptor"/>      
        </interceptors>
    </package>
</struts>

  拦截器可以在用户请求Struts的Action时的前或后,进行一些业务处理。例如,在进行网上购物时,将商品加入购物车的前提是,用户必须登陆成功。

(4)include

实例:

<struts>
    <include file="a.xml"/>
</struts>

  该元素用来在一个struts.xml配置文件中包含其他的配置文件。这样做的目的是解耦合,将action以模块的方式来加以管理,即将存在相关性的action放在同一个xml文件中,然后通过在struts.xml文件中配置标签include进行实现(模块化的xml文件也必须是标准的struts2配置文件)。

(5)action

实例:

<action name="user_*" class="userAction" method="{1}">
    <result name="registPage">/WEB-INF/jsp/regist.jsp</result>
</action>

action元素属性:

属性说明
name必选属性,标识action,指定该action所处理的请求的url
class可选属性,指定action对象对应的实现类
method可选属性,指定请求action时调用的方法
converter可选属性,指定类型转换器的类

  在配置action元素时,如果没有指定class属性值,则其默认值为类com.opensymphony.xwork2.ActionSupport,该默认类会使用默认的处理方法execute()来处理请求;如果指定method属性值,则该action可以调用method属性中指定的方法,而不是默认的execute()。
  实例代码中method={1}中的{1}代表user_*中的,即如果加入你访问路径是/user_regist .action,则此刻访问的是该Action中的regist方法。

(6)result

实例:

<action name="order_*" class="orderAction" method="{1}">
    <result name="saveSuccess">/WEB-INF/jsp/order.jsp</result>
    <result name="updateStateSuccess" type="redirectAction">order_findByUid.action?page=1</result>
</action>

struts2支持的结果类型:

结果类型说明
dispatcher将请求转发到指定的jsp页面
redirect将请求重定向到指定的视图
redirectaction直接跳转到其他action
chain处理action链
freemarker指定使用Freemarker模板作为视图
httpheader控制特殊的http行为
stream向浏览器返回一个inputstream(一般用于文件下载)
velocity指定使用velocity模板作为视图
xslt用于xml/xslt整合
plainText显示某个页面的原始代码

  当调用action方法处理结束返回后,下一步就是使用result元素来设置返回给浏览器的视图。配置result元素是常需指定name和type两个属性。name属性对应从action方法返回的值,success为其默认值。type属性指定结果类型,默认的类型是dispatcher。

(7)constant

  constant用于设置一些struts2的常量,这些常量用于控制struts2的某些特性。通过对它的属性的配置,可以改变Struts 2 框架的一些默认行为,struts.properties不是必须的文件,它的内容可以在struts.xml中完成同样的功能配置。
常用设置:

<struts>
    <!-- 所有匹配*.action的请求都由struts2处理 -->
    <constant name="struts.action.extension" value="action" />
    <!-- 是否启用开发模式 -->
    <constant name="struts.devMode" value="true" />
    <!-- struts配置文件改动后,是否重新加载 -->
    <constant name="struts.configuration.xml.reload" value="true" />
    <!-- 设置浏览器是否缓存静态内容 -->
    <constant name="struts.serve.static.browserCache" value="false" />
    <!-- 请求参数的编码方式 -->
    <constant name="struts.i18n.encoding" value="utf-8" />
    <!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 -->
    <constant name="struts.i18n.reload" value="true" />
    <!-- 文件上传最大值 -->
    <constant name="struts.multipart.maxSize" value="104857600" />
    <!-- 让struts2支持动态方法调用 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <!-- Action名称中是否还是用斜线 -->
    <constant name="struts.enable.SlashesInActionNames" value="false" />
    <!-- 允许标签中使用表达式语法 -->
    <constant name="struts.tag.altSyntax" value="true" />
    <!-- 对于WebLogic,Orion,OC4J此属性应该设置成true -->
    <constant name="struts.dispatcher.parametersWorkaround" value="false" />
    <package name="shop" extends="struts-default">
    </package>
</struts>

小结
  一分耕耘一分收获~~~

 类似资料: