浅谈Struts2(二)
一、struts2的跳转
1、action跳转JSP
a、默认为forward
<action name="action1" class="com.liquidxu.struts2.FirstAction">
<result name="success" type="dispatcher">/admin/index.jsp</result>
</action>
<result>节点中的type属性,表明的该跳转为forward(默认值,可不写)。
b、redirect跳转
<action name="action1" class="com.liquidxu.struts2.FirstAction">
<result name="success" type="redirect">/admin/index.jsp</result>
</action>
在<result>节点中,将type属性设置为redirect,表明该跳转为redirect跳转。
2、action跳转action
a、forward跳转
<action name="action1" class="com.liquidxu.struts2.FirstAction">
<result name="success" type="chain">action2</result>
</action>
<action name="action2" class="com.liquidxu.struts2.SecAction">
<result name="success">/admin/index.jsp</result>
</action>
<result>节点中的内容填写的为跳转的action的那么属性。<result>节点中设置属性type="chain"。
b、redirect跳转
<action name="action1" class="com.liquidxu.struts2.FirstAction">
<result name="success" type="redirectAction">action2</result>
</action>
<action name="action2" class="com.liquidxu.struts2.SecAction">
<result name="success">/admin/index.jsp</result>
</action>
在<result>节点中设置属性type="redirectAction"即可。
二、包(package)
作用:按照功能模块管理<action>节点、功能的复用。
1、namespace命名空间
在用户的访问路径上,对不同的功能模块进行划分。
目的:可能通过filter对不同模块的Action进行额外处理。
//仅为示意代码
//http://localhost:8080/struts_app/user/addUser
<package name="user" extends="struts-default" namespace="/user">
<action name="addUser" class="">XXX</action>
<action name="deleteUser" class="">XXX</action>
<action name="updateUser" class="">XXX</action>
</package>
加了<package>节点之后,访问路径变为namespace+action.name。
2、action间的跨包跳转(type=chain|redirectAction)
<package name="p1" extends="struts-default" namespace="/p1">
<action name="action1" class="com.liquidxu.struts2.FirstAction">
<result name="success" type="chain">
<param name="namespace">/p2</param>
<param name="actionName">action2</param>
</result>
</action>
</package>
<package name="p2" extends="struts-default" namespace="/p2">
<action name="action2" class="com.liquidxu.struts3.SecAction">
<result name="success">/admin/index.jsp</result>
</action>
</package>
<resulte>节点下多了两个<param>节点,一个填写要跨的包的namespace,一个填写要跳转到的那个action的name。
3、全局跳转
目的:解决struts配置文件,跳转路径冗余的问题。
//代码仅为示例
<package name="p1" extends="struts-default" namespace="/p1">
<global-results>
<result name="success">/admin/index.jsp</result>
</global-results>
<aciton name="action1" class="XXXXX">
<result name="success">/admin/result.jsp</result>
</action>
<action name="action2" class="XXXXX"></action>
<action name="action3" class="XXXXX"></action>
</package>
此示例中,action1会跳转到/admin/result.jsp(局部优先)。action2、action3均会跳转到上面所设置的全局跳转的路径。
ps、(1)全局跳转一定是在开发的后期,重构时使用的。
(2)局部跳转优先。
(3)跳转只在本包中有效。
浅谈Struts2(二)的更多相关文章
- 浅谈struts2之chain
转自:http://blog.csdn.net/randomnet/article/details/8656759 前一段时间,有关chain的机制着实困绕了许久.尽管网上有许多关于chain的解说, ...
- Android开发-浅谈架构(二)
写在前面的话 我记得有一期罗胖的<罗辑思维>中他提到 我们在这个碎片化 充满焦虑的时代该怎么学习--用30%的时间 了解70%该领域的知识然后迅速转移芳草鲜美的地方 像游牧民族那样.原话应 ...
- 浅谈 Struts2 面试题收藏
Struts2面试题 一.工作原理 一个请求在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Fi ...
- 浅谈Struts2拦截器的原理与实现
拦截器与过滤器 拦截器是对调用的Action起作用,它提供了一种机制可以使开发者定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行.同时也是提供了 ...
- [SSH 2] 以网站主页面浅谈Struts2配置
导读:前面总体的介绍了一下SSH框架,那么作为Struts这一支,具体是怎么配置的呢?本篇博客则主要是以自己做过的实例中的登录一条线,简单介绍一下struts2的配置,如有不妥之处,还请大家多提点提点 ...
- 浅谈Struts2(三)
一.Struts2收集client的参数 核心思路: <form method="post" action="XXXX"> <input ty ...
- 浅谈Struts2
学过SSH框架很长一段时间了,一直没有很系统的总结一下,这里先简单谈谈Struts2. 为什么要用Struts2? 这里列举一些Servlet的缺点: 1.每写一个servlet在web.xml中都要 ...
- 小学生之浅谈Struts2与struts1的运行机制
Struts1工作原理图: 1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(s ...
- Qt浅谈之二十七进程间通信之QtDBus
一.简介 DBus的出现,使得Linux进程间通信更加便捷,不仅可以和用户空间应用程序进行通信,而且还可以和内核的程序进行通信,DBus使得Linux变得更加智能,更加具有交互性. DB ...
随机推荐
- DRAM与NAND Flash产业六大趋势预测分析
集邦科技(TrendForce)旗下的分析部门DRAMeXchange的研究,针对对DRAM与NANDFlash产业的长久观察下,提出了对2012-2015年间产业发展的六大趋势预测: 趋势一 ...
- Android4: Write Storage权限问题
原文:Android4: Write Storage权限问题 2.3中声明 <uses-permission android:name="android.permission.WRIT ...
- 使用hibernate 分表做增删改查
公司项目有一张表的数据量特别大.而且时间越长累积的数据量就越大. 后来DBA决定分表来解决性能问题. 分表是指 一个母体表 一群子表(结构和字段与母体表完全一样) 我们程序对母表操作其实就是对子 ...
- 在OC项目工程中混编Swift
1.创建一个OC项目工程,然后在Build Settings中找到如下字段,修改. 2.然后在项目中创建swift文件,如果系统提示是否需要创建桥接文件的时候,点击确定. 然后在Build Setti ...
- JSP简单练习-获取表单数据
在JSP中,server端程序与client交互最经常使用的方法就是採用表单提交数据.表单提交的方法主要有两种,一种是get方法.还有一种是post方法.两者最大的差别:使用get方法提交的数据会显示 ...
- POJ 2342 树形DP入门题
有一个大学的庆典晚会,想邀请一些在大学任职的人来參加,每一个人有自己的搞笑值,可是如今遇到一个问题就是假设两个人之间有直接的上下级关系,那么他们中仅仅能有一个来參加,求请来一部分人之后,搞笑值的最大是 ...
- 母版页中ContentPlaceHolder 控件的作用
文章转自 http://wenku.baidu.com/link?url=7sLN0ihgZQ1XfX47b_y8qbpIVjS5T75Q1xvaoyIQ6OiKIgvzyVyRccnU9e9fqo ...
- Hadoop 架构初探
对流行Hadoop做了一些最基本的了解,暂时没太大感觉,恩先记点笔记吧. = = Hadoop 基本命令及环境安装 一.下载虚拟机镜像 目前比较流行的有以下三个: (CHD) http://www.c ...
- 算法——A*——HDOJ:1813
Escape from Tetris Time Limit: 12000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- codeforces 632C. The Smallest String Concatenation 排序
题目链接 给出n个字符串, 将他们连在一起, 求连玩之后字典序最小的那种情况. 按a+b<b+a排序.... #include <iostream> #include <vec ...