`
mr_wangjq
  • 浏览: 39310 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2中对于default-action-ref配置的解析思路

阅读更多

对于package中default-action-ref的用法很多人有着不同的意见

 

有一部份的朋友在某个自定义的action中定义default-action-ref这个配置的时候,

认为在地址栏中输入地址如http://localhost:8080/project的时候(project为项目名),如果该项目后面不输入任何名字,则会自动进入default-action-ref定义的action并进入对应的类方法中进行操作并根据result返回页面,但是很多人发现结果并不是这样,而不管怎样都返回进入到index.jsp页面。

 

实际上这一点从原理上来讲可以理解,default-action-ref这个配置的意思是当用户在点击了没有定义的action时,如果struts没有找到用户定义的action名称,则会自动跳转到该默认定义的action中。

个人觉得地址栏中项目后不写名称和名称不存在是两个概念。 


如果此时地址栏输入http://localhost:8080/project/aaa或通过链接进入该地址栏,配置文件中并没有定义name为aaa的action,该路径会自动转入default-action中。

 

但是如果用户输入http://localhost:8080/project,该请求会首先被项目中web.xml来进行接收,由于web.xml中默认指定的页面是index.jsp,因此无论struts.xml中如何设置,服务器都会先跳转至index.jsp。原因其实很简单,因为在一个web project中,web.xml为整个项目的入口。

 

其实大家可以做一个实验,就可以证明这块的运行过程:

大家可以把index.jsp修改为其他名称,比如aaa,bbb.jsp等。此时在服务器启动并进行加载的时候,会根据web.xml去寻找所谓的index.jsp,但是由于index.jsp已被我们修改名称,那么肯定会找不到,并进入到strtus.xml中,这时我们定义的default-action-ref就可以起作用了,此时由于没有对应的主页配置,浏览器会进入default的引用中进行操作,也就可以实现直接进入action的操作了。

分享到:
评论

相关推荐

    jfreechar 整合struts2.1.8版本生成线图,饼图,柱形图

    -- include节点是struts2中组件化的方式 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用 --> <include file="struts-default.xml"> <!-- package提供了将多个Action组织为一个模块的方式 ...

    Struts2(4)拦截器与验证框架

    在struts2框架中主配置文件struts-defalut.xml 文件中定义了大量的拦截器和拦截器栈。通过 default-interceptor-ref元素定义了 当前应用的默认拦截器栈,对用户的每次请求都需要调用拦截器栈中的每个拦截器来拦截...

    struts2文件上传

    在struts2中实现文件上传。 <struts> <include file="struts-default.xml"> <constant name="struts.i18n.encoding" value="GBK"> <!--设置临时上传目录--> <constant name="struts.multipart.saveDir" value="d:\...

    拦截器和控制器的区别

    3、starts2的使用思路 1、jar 2、配置文件 3、常用类 servletActionContext 4、访问流程 url -> filter -> struts.xml -> package -> action -> name="userAction_*" -> class -> method="{1}" 5、核心struts.xml...

    struts2拦截器

    <package name="mySturtsInterceptor" extends="struts-default"> <interceptor name="MyInterceptor" class="com.cn.system.interceptor.MyInterceptor"></interceptor> <interceptor-stack name=...

    spring3.2+strut2+hibernate4

    -- 更改struts2请求Action的后缀名,默认为action。若想去掉后缀,设为","即可 --> <constant name="struts.action.extension" value=","/> <!-- 当配置文件修改后,系统自动加载该文件。开发阶段建议打开此功能...

    拦截器的验证

    <package name="front" extends="struts-default" > <!-- 部署自定义拦截器!! --> <interceptor-stack name="myStack"> <interceptor-ref name="defaultStack" /> <interceptor-ref name=...

    客户关系管理系统框架搭建(二)

    * struts2需要的jar包 * jstl 需要的jar包 * junit需要的jar包 * 包的介绍 * cn.itcast.crm.container:重新封装spring容器 * cn.itcast.crm.dao:放置的是dao接口 * cn.itcast.crm.dao.impl:放置的是dao接口...

    freemarker总结

    1-2、raw字符串: 有一种特殊的字符串称为raw字符串,被认为是纯文本,其中的\和{等不具有特殊含义,该类字符串在引号前面加r,下面是一个例子: ${r"/${data}"year""}屏幕输出结果为:/${data}"year" 转义 含义 ...

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...

Global site tag (gtag.js) - Google Analytics