struts2自带例子mailreader学习(一)

这一系列文章,主要记录学习Struts2过程,主要参考Struts2的reference,还有自带例子。这些都可以从官网http://struts.apache.org/下载源代码即可。

 

1.         index.html 页面中头标签:

<head>

    <META HTTP-EQUIV="Refresh" CONTENT="0;URL=Welcome.do">

</head>

meta 标签的 http-equiv 属性语法格式是:< meta http-equiv=" 参数 " content=" 参数变量值 " ,Refresh 表示自动刷新并指向新页面,其中的 0 是指停留 0 秒钟后自动刷新到 URL 网址,这里直接转向 action 中处理。具体用法见: http://www.it.com.cn/f/edu/052/23/73036.htm

2.    通过struts2的reference系统学习下struts.xml文件配置.

管理元素

  •   Bean 配置

 

一般地, sturts2 框架使用 bean 配置进行容器注入才使用。大部分的应用不需要进行这个配置的, struts-default.xml 默认的配置文件中有 bean 配置,可以参考下。

<struts>

  <bean type="com.opensymphony.xwork2.Object

Factory" name="myfactory" class="com.company.myapp.MyObjectFactory" />

    ...

</struts>

  •   Constant 配置

 

常量配置提供了一种简单的方式(通过设定关键词,即可修改框架插件的行为),通过这种方式可以定制 struts 应用。

<struts>

  <constant name="struts.devMode" value="true" />

  ...

</struts>

  •   Package 配置

 

包是 actions, results, result types, interceptors, 拦截器堆栈的集合,组装成一个逻辑的配置单元。

<struts>

  <package name="employee" extends="struts-default" namespace="/employee">

    <default-interceptor-ref name="crudStack"/>

    <action name="list" method="list"

      class="org.apache.struts2.showcase.action.EmployeeAction" >

        <result>/empmanager/listEmployees.jsp</result>

        <interceptor-ref name="basicStack"/>

</action>

....

  </package>

</struts>

  •   Namespace 配置

 

命名空间主要是把 action 的配置划分成逻辑模块,和 c++ xml 等命名空间一样,都是防止重复的手段。

<package name="default">

    <action name="foo" class="mypackage.simpleAction">

        <result name="success" type="dispatcher">greeting.jsp</result>

    </action>

    <action name="bar" class="mypackage.simpleAction">

        <result name="success" type="dispatcher">bar1.jsp</result>

    </action>

</package>

<package name="mypackage1" namespace="/">

    <action name="moo" class="mypackage.simpleAction">

        <result name="success" type="dispatcher">moo.jsp</result>

    </action>

</package>

<package name="mypackage2" namespace="/barspace">

    <action name="bar" class="mypackage.simpleAction">

        <result name="success" type="dispatcher">bar2.jsp</result>

    </action>

</package>

注意: 如果没有找到命名空间下的 action ,则会默认找到“”即默认命名空间下 action ,例如:查找 /barspace/foo.action ,由于 /barspace 下没有 foo.action ,所有执行 package name=default 下的 foo.action, 因为该 package 命名空间是默认的“”。

  •   Include 配置

 

Include 配置是一种流行的“分而治之”的策略。框架通过这种配置,可以包含多个配置文件,主要用于项目开发中团队分工合作。

<!DOCTYPE struts PUBLIC

  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

  "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <include file="Home.xml"/>

    <include file="Hello.xml"/>

    <include file="Simple.xml"/>

    <include file="/util/POJO.xml"/>

    <include file="/com/initech/admin/admin-struts.xml"/>

</struts>

 

 

请求处理元素

  •   Interceptor 配置

 

拦截器允许用户定义 Action 执行前后的代码,拦截器的主要实现技术:动态代理等。

<interceptors>

  <interceptor name="security" class="com.company.security.SecurityInterceptor"/>

  <interceptor-stack name="secureStack">

    <interceptor-ref name="security"/>

    <interceptor-ref name="defaultStack"/>

  </interceptor-stack>

</interceptors>

  •   Action 配置

 

Action 的配置是整个框架的基础。

<action name="Logon" class="tutorial.Logon">

  <result type="redirectAction">Menu</result>

  <result name="input">/Logon.jsp</result>

</action>

:想在 action 名使用 ’/’ ,如: <action name="admin/home" class="tutorial.Admin"/> ,必须声明: <constant name="struts.enable.SlashesInActionNames" value="true"/>. 一般命名action 最好使用createUsermy_action 方式,不要使用create.usermy-action 形式。

  • Result 配置

 

Action 执行结束后,返回的结果是一个 String 。下面是 ActionSupport 类中自带的 String 的,当然我们也可以自己定义。

String SUCCESS = "success";

String NONE    = "none";

String ERROR   = "error";

String INPUT   = "input";

String LOGIN   = "login";

注: 在配置文件中,当 type name 是“ * ”时,这并不是通配符,这是当 Action 返回的 String 在配置文件中找不到时,就去匹配“ * ”。

  •   Unknown 处理者

 

Unknown 处理是针对 Struts2.1 版本以上的。它实现了 com.opensymphony.xwork2.UnknownHandler 接口 , 并且当找不到 ction, result, or method 执行时候,框架就会去执行这个配置中的类。

<bean type="com.opensymphony.xwork2.Un

knownHandler" name="handler" class="myclasses.SomeUnknownHandler"/>

  错误处理之异常配置

当一个 Action 抛出异常时,异常匹配是一个非常重要的配置。它能根据所配置的异常,转向不同的页面。

<struts>

    <package name="default">

        ...

        <global-results>

            <result name="login" type="redirect">/Login.action</result>

            <result name="Exception">/Exception.jsp</result>

        </global-results>

        <global-exception-mappings>

            <exception-mapping exception="java.sql.SQLException" result="SQLException"/>

            <exception-mapping exception="java.lang.Exception" result="Exception"/>

        </global-exception-mappings>

        ...

        <action name="DataAccess" class="com.company.DataAccess">

            <exception-mapping exception="com.company.SecurityException" result="login"/>

            <result name="SQLException" type="chain">SQLExceptionAction</result>

            <result>/DataAccess.jsp</result>

        </action>

        ...

    </package>

</struts>

 

下一篇文章,将详细分析mailreader例子中语言切换显示功能实现~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值