(转)structs2的相关配置问题

1.配置Action.

在struts.xml文件中,使用包来管理Action,定义一个Action节点时,必须指定name属性,且值为请求url的前半部分.class可以不写,默认为ActionSupport类.

Action只是一个控制器,并不能对客户端产生任何响应,只能将指定的视图资源返回给用户.通过配置其子节点<result>来定义逻辑视图和物理视图的关系.

<action name="add" class="com.action.myAction">

       <result name="input" type="redirect">/input.jsp</result>

</action>

2.动态方法调用.

要使用此功能,要在struts.properties文件中指定:

struts.enable.DynamicMethodInvocation=true

将请求url定义为 actionName!methodName.action 如,FruitAction!add.action.stust.xml配置文件

不需要改动,但在Action里必须定义一个add方法.这样就能访问FruitAction的add方法.

3.为action指定method属性.

同动态方法调用的功能一样,但此种方法,在struts.xml文件中,将一个Action处理类定义成了多个逻辑Action

<action name="login" class="com.ac.UserAction" method="loginM"/></action>

<action name="regist" class="com.ac.UserAction" method="registM"/></action>

这样,Action类的每个方法都被映射成一个Action.

但,这中方法让action的定义相当冗余,所以struts2.0提供了另一种形式的方法调用,即使用通配符.

4.使用通配符.

     <Action>的name,class,method三个属性都能使用通配符.

        <action name="*Action" class="com.ac.UserAction" method="{1}">

    这种定义方式就好比定义了多个action,method="{1}",表示"*"的值.

       <action name="*Action" class="com.ac.{1}Action" method="{1}">

       <action name="*_*" class="com.ac.{1}Action" method="{2}">

struts2还允许<result>中使用表达式.如<result>/{1}.jsp</result>

<action name="*Page">

     <result>/{1}.jsp</result>

</action>

由于没有指定class,则默认有ActionSupport处理,而ActionSupport的execute方法返回success,所以会跳到*.jsp页面.

问题来了,如果有一个这样的请求,aaaAction.action,在Struts.xml文件中定义了三个<action>

<action name="*">

<action name="*Action">

<action name="aaaAction">

那么将会匹配哪个<action>呢.

首先,如果有一个<action>的name与请求完全匹配,那么就一定匹配该<action>,如果没有,则按顺序从上至下查找,如果能匹配,就映射该<action>,

例如,如果有一个aaaAction请求,则会匹配<action name="aaaAction">如果请求是aaAction,则会匹配<action name="*">,因为它在最先匹配.所以,一般将<action name="*">放到最后,范围最小的放前面.

5.默认Action

       struts2允许你定义一个默认的Action,当容器找不到与请求Url相匹配的<action>是,将使用此默认action.

          <default-action-ref name="aAction" >

          <action name="aAction" class=......./>

6.属性驱动和模型驱动.

属性驱动,将需要从页面获取的属性和传递给下一个视图的属性定义为action的实例变量,并提供getter和setter方法.

模型驱动,则是向struts1.x那样,使用一个Pojo类来封装属性,但此pojo类不需要继承ActionForm,它就是一个普通的Pojo类.在Action中要实现ModelDriven接口,定义Pojo实例变量,并给其赋值(new),然后实现getModel()方法,返回pojo对象.

7.异常机制

Struts2.0提供了一种声明式的异常处理方式.

public String execute() throws Exception

Action中的execute()能抛出所有Exception,将异常抛给了框架来处理,我们甚至不需要使用繁琐的try{}catch(){},我们只需要在struts.xml中配置<exception-mapping>异常映射,就能方便的处理各类异常.

它有两个属性,

exception:指定该异常映射所设置的异常类型

result:出现指定异常后,返回的结果.

全局异常:将<exception-mapping>元素作为<global-exception-mapping>元素的子元素

局部异常:将<exception-mapping>元素作为<action>的子元素.

在页面输出异常信息:

<s:property value="exception"/> 如<s:property value="exception.message"/>

<s:property value="exceptionStack"/>
时间: 2024-08-10 02:10:19

(转)structs2的相关配置问题的相关文章

[flask实践] 解决qq邮箱/mysql的相关配置问题

笔者经过flask web(Miguel著,封面是一条狗)一书的学习,打算实现一个旅游类网站,在此过程中发现,相对于书中的flasky博客程序,需要作出一些改变: 1. 注册邮箱:国内要使用126,qq等邮箱.默认读者了解过flasky邮件的实现方式,而使用126.qq邮箱的不同之处有: 第一,邮箱端口 ['MAIL_PORT'] = 465 不同于gmail的587端口 第二,使用协议 ['MAIL_USE_SSL'] = True 不同于gmail的TLS协议        第三,用户名  

Sqlserver2008相关配置问题

一:ReportServices  无法连接Report Services 数据库服务 SSRS连接不了ReportServer (安装数据库的时候默认安装的一个报表服务数据库) 原因:装系统之后改了电脑的名字 解决办法: step1:修改SSRS中的数据库服务地址 step2:改为和当前计算机名一致的名称 二:访问报表管理器URL或者在部署SSRS项目的时候报用户权限不足 解决办法:需要去控制面板修改[用户账户控制](UAC)级别如下图所示调到最低,而后重启计算机让UAC配置修改生效,启动SQ

mybatis 的第一个 HelloWorld 程序学习

1.准备工作: a.在 MYSQL 中新建一个 mybatis 数据库,并且创建一个 table,在这个表格中录入一条记录. 注:我使用的是 SQLyog,你们也可以使用命令行直接创建库和表. 2.在 eclipse 中创建一个 java 工程: - 创建一个名为 Employee 的 bean 类,并且在这个工程的路径下创建一个 lib 文件夹,用于存放需要的 jar 包. (需要的 jar 包为 mybatis-3.4.1.jar .mysql-connector-java-5.1.37-b

SpringBoot | 第二十三章:日志管理之整合篇

前言 在本系列<第四章:日志管理>中,由于工作中日志这块都是走默认配置,也没有深入了解过,因为部署过程中直接使用了linux中的输出重定向功能,如java -jar xx.jar > app.log 2>&1 &,直接输出到某个日志文件了.所以也就没有认真关心过默认的日志格式了.系列文章出来后,也看见有网友反馈说如何进行日志的相关配置,或者配置失效问题.本着负责的原则,本文就来详细介绍下SpringBoot中日志管理相关配置问题.也是最近熟悉了下,有不足之处,还望指

Docker pull下载出现 error pulling image configuration:

出现这个问题,并且在错误信息的最后附带 net/http: TLS handshake timeout: 猜测是docker的相关配置问题,导致无法通过TLS握手 执行如下命令修改配置 echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=http://f2d6cb40.m.daocloud.io\"" | sudo tee -a /etc/default/docker 然后就能使用docker pull 拉取镜像了

2017前端现状--答题救不了前端新人

众所周知,前端近几年闹了一场革命.前端在编程领域也掀起了学习潮.至少在中国,从2013年下半年至今,在搜索指数上,有着爆炸式的增长.可以看下数据:百度指数,Google指数. 一边是日新月异的新知识不断的冲击着前端,一边是各种新人疯狂涌入前端领域.这两股新流冲击下,倒是火了很多技术社区.问答网站,如:SegmentFault. 打开SegmentFault,首页问答流上,前端相关的题目(包括Node),不说占十之八九,那也是半壁江山.即使是在老牌问答网站StackOverflow上,javasc

SPring+Structs2实现的项目中进行Spring AOP时的相关小记

 SPring+Structs2实现的项目中进行Spring AOP时的相关小记 1.一般为了方便开发Structs2的项目中的action都会建立一个BaseAction如果继承了BaseAction中的子类进行AOP时,只能指定AOP中的PointCut为BaseAction 如果对应的BaseAction如果继承于ActionSupport的话,就只能定义AOP中的PointCut为ActionSupport了 因为Spring生成的代理类中,对同名的方法,只有一个,即子类重写父类的方

Third Day(上班第四天):Android开发环境配置问题相关

换公司新电脑了,重新安装Android开发环境,并配置,具体流程如下:1.百度JDK,访问Oracle官网:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html Downloads最新版Java SE,注意在设定保存安装的过程中确保路径为全英文,本次:F:\Java\JDK2.打开下载好的安装文件,进行JDK的安装,在安装的过程中会跳出提示进行JRE的顺带安装,同样选好 路径为:F:\Java\

关于iredmail的相关安装配置问题

安装环境:系统:CentOS 6.3 Iredmail:iRedMail-0.8.7 在执行get_all.sh时,国内用户需要修改"iredmail.org"为"173.254.22.21",不然因为域名被屏蔽,无法安装.当然挂个VPN翻墙的除外. 安装完成后,需要做好公网DNS的解析,不然公网邮件无法发送到服务器. 修改dovecot主配置文件/etc/dovecot/dovecot.conf 添加行login_trusted_networks = 0.0.0.