文档章节

Struts2---->result

小强斋太
 小强斋太
发布于 2016/11/09 20:07
字数 1069
阅读 6
收藏 0
点赞 0
评论 0

result

一、result类型  
     <result type="dispatcher">/r1.jsp</result>  服务器端跳转 跳转到视图
     <result type="redirect">/r2.jsp</result>       客户端跳转 跳转到视图
     <result type="chain">r1</result>                 服务器端跳转 跳转到action
     <result type="redirectAction">r2</result>   客户端跳转 跳转到action

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

		<action name="r1">
			<result type="dispatcher">
				/r1.jsp
            </result>
		</action>

		<action name="r2">
			<result type="redirect">
				/r2.jsp
            </result>
		</action>

		<action name="r3">
			<result type="chain">
				<param name="actionName">r1</param>
				<param name="namespace">/</param>

			</result>
		</action>

		<action name="r4">
			<result type="redirectAction">
				<param name="actionName">r2</param>
				<param name="namespace">/</param>
			</result>
		</action>

	</package>

二、chain跳转时 跳转到别的namespace下面的action

<action name="r3">
   <result type="chain">
    <param name="actionName">r1</param>   指定要跳转的action
    <param name="namespace">/np1</param>  指定要跳转的action的namespace
   </result>
 </action>

三、服务器跳转和客户端跳转的区别
客户端跳转时用HttPservletResopse对象的sendRedirect函数实现,服务器端跳转是使用RequestDispather对象的forward方法实现的。这两者之间的区别主要体现在三个方面:
1. 使用服务器端跳转时,客户浏览器的地址栏并不会显示目标地址的URL,而是用客户端跳转时,地址栏当中会显示目标资源的URL;
2. 服务器端跳转是由客户端发送一个请求,请求一个服务器资源—如JSP和Servlet,这个资源又将请求转到另一个服务器资源,然后再给客户端发送一个响应,也就是说服务器转发全程是没有客户端参与的,都在web container容器内部进行,没有任何服务器和客户端的通信,实际就是服务器内部的跳转服务器端跳转是客户端发送一次请求,服务器端给出一次响应;而客户端跳转的流程则不同。客户端同样是发送一个请求给服务器端资源,这个服务器资源会首先给客户端一个响应,客户端再根据这个响应当中所包含的地址,再次向服务器端发送一个请求,也就是说客户端跳转是两次请求,两次响应

四、全局result 对本package里面的action都起作用。
    <global-results>
      <result name="mainpage">/main.jsp</result>
   </global-results> 
  如果其他的package也想用这个result的话,必须继承这个包
  <package name="admin" namespace="/admin" extends="user">

<package name="user" namespace="/user" extends="struts-default">
  <global-results>
   <result name="mainpage">/main.jsp</result>
  </global-results>

  <action name="user" class="com.ncepu.struts2.UserAction">
   <result name="success">
    /user_success.jsp
            </result>
   <result name="error">
    /user_error.jsp
            </result>
  </action>
 </package>


 <package name="admin" namespace="/admin" extends="user">
  <action name="admin" class="com.ncepu.struts2.AdminAction">
   <result name="success">
    /admin_success.jsp
            </result>
  </action>
 </package>

五、动态result(利用 action中的所有属性都会被存在value stack里面)
在action对应的类中定义一个属性r
execute方法中

public String execute() throws Exception {
  if(type == 1) r="/user_success.jsp";
  else if (type == 2) r="/user_error.jsp";
  return "success";
 }

 配置文件中

<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
      <result>${r}</result>
    </action>

六、传递参数

一次客户端请求对应一个value stack,所以客户端跳转只能从action Context中获得参数,而不能从value Stack中获得,因为客户端跳转是两次请求,两次响应,客户端跳转的时候才用传递参数  ${}表达式取值。  
index.jsp   

<a href="user/user?type=1">传参数</a>

action配置       

<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
               <result type="redirect">/user_success.jsp?t=${type}</result>
</action>

其中type为action中的东西,结果页面可以从action context中取值
user_success.jsp   

from valuestack:    <s:property value="t"/>              取不到
 from actioncontext: <s:property value="#parameters.t"/>  能取到


原因:redirect时候,第二阶段,发出的第二次请求到一个jsp页面,没有action,故value stack为空。而在第一阶段有action,stack context 即action 上下文存着变量t的内容。

七、ValueStack 和Stack Context(没理解透彻)

可以通过在页面中添加<s:debug/>标签察看ValueStack 和Stack Context中有哪些具体的内容。

value stack contents ognl       值栈,值栈里存储的是一些action里的变量,
stack context                           action上下文,和每一个action对应。

action上下文是一个map对象,通过#key获得对象内容,在#request又可以得到值栈,
于是获得action变量内容有三种方式
1,从值栈中直接获得
     <s:property value="type"/>
     ${type }
2,从action上下文获得值栈的属性
     <s:property value="#request['type']"/>或者<s:property value="#request.type"/>

  

 

本文转载自:http://www.cnblogs.com/xqzt/archive/2012/08/30/5637213.html

共有 人打赏支持
小强斋太
粉丝 0
博文 181
码字总数 0
作品 0
广州
There is no result type defined for type 'json'...

struts2的json plugin可以实现struts2和json的完美结合,struts2的官方文档:http://struts.apache.org/2.2.1.1/docs/json-plugin.html 刚刚整合struts2和json出现了个小问题There is no res...

peanutmain ⋅ 2012/06/21 ⋅ 0

There is no result type defined for type 'json' mapped with name 'success'

struts2整合json出现no result type defined for type 'json'的解决方法 struts2的json plugin可以实现struts2和json的完美结合,由于本篇主要是介绍整合过程中遇到的问题,所以编程实现的方...

Java编程思想 ⋅ 2013/12/04 ⋅ 0

Struts2的异常处理机制

原文链接:http://blog.csdn.net/sd0902/article/details/8393179

长平狐 ⋅ 2013/01/06 ⋅ 0

struts2整合json出现no result type defined for type 'json'的解决方法

struts2的json plugin可以实现struts2和json的完美结合,由于本篇主要是介绍整合过程中遇到的问题,所以编程实现的方法这里就不重复了,具体可以参看struts2的官方文档:http://struts.apach...

haopeng ⋅ 2013/12/12 ⋅ 0

struts2的java.lang.NoSuchMethodException异常处理

不久前在学习struts时出现这个错误,在网上搜索了半天,发现答案不一。将其总结如下,以方便大家参考。 1、 你有没有试试看 其它的方法能不能用,要是都是这种情况的话,可能是你的Action类没...

长平狐 ⋅ 2012/11/12 ⋅ 0

struts2开发 实例

1.引入struts2相应的jar包,可以到网上下载,大把大把的。 2.配置struts.xml 要放在src目录下 如下: Java代码 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache......

LYQ1990 ⋅ 2016/05/24 ⋅ 0

struts2异常处理

struts2异常处理 Struts2的异常处理机制: 任何成熟的MVC框架都应该提供成就的异常处理机制。Strut2也不例外。Struts2提供了一种声明式的异常处理方式。Struts2也是通过配置的拦截器来实现异...

00_yatou ⋅ 2015/05/28 ⋅ 0

struts2系统架构及处理流程

一、struts2系统架构 · 1.FilterDispatcher是整个Struts2的调度中心,也就是MVC中的C(控制中心),根据ActionMapper的结果来决定是否处理请求,如果ActionMapper指出该URL应该被Struts2处理...

J星星点灯 ⋅ 2017/12/21 ⋅ 0

struts2令牌机制

防止刷新提交页面,数据重复保存 在jsp页面的form里面加上 注意:要先访问到这个jsp页面,来给token初始的值,这样当你提交的时候,才能匹配上 刚进入jsp页面的时候,struts2会生成一个token...

长平狐 ⋅ 2013/01/06 ⋅ 0

struts2注解配置@Action报错,求大神???谢谢!!!

在struts.xml中配置action就没问题,用注解@Action的话就报错: org.apache.struts2.dispatcher.Dispatcher warn 警告: Could not find action or result: /struts2/anno2.action There is n......

htmlCssJs ⋅ 2013/12/26 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JPA入门,配置文件的设置

<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http......

码农屌丝 ⋅ 14分钟前 ⋅ 0

Java基础——面向对象和构造器

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 静态成员介绍 为什么要有静态成员?静态成员用来...

凯哥学堂 ⋅ 15分钟前 ⋅ 0

vmware中Centos 7 linux的LVM磁盘扩容

系统是RHEL7(centos7差不多一样) 关闭系统,在vmware、设置、硬盘、扩展、输入数字大于当前系统内存、点击扩展。 开机再查看磁盘信息 fdisk -l 注意:可以看出sda磁盘增加了,但是根目录还...

gugudu ⋅ 26分钟前 ⋅ 0

JAVA线程sleep和wait方法区别

昨天面试,突然被问到sleep 和 wait的区别,一下子有点蒙,在这里记一下,以示警戒。 首先说sleep,sleep就是正在执行的线程主动让出cpu,cpu去执行其他线程,在sleep指定的时间过去后,cpu...

徐玉强 ⋅ 28分钟前 ⋅ 0

vuex学习--模块

随着项目复杂性增加,共享状态也越来越多。需要对转态操作进行分组,分组后在进行分组编写。学习一下module:状态管理器的模块组操作。 首先是声明: const moduleA={ state,mutations,g...

大美琴 ⋅ 30分钟前 ⋅ 0

Selenium 简单入门

安装 pip install selenium 驱动下载 https://chromedriver.storage.googleapis.com/index.html 下载最新的驱动,放入path中,可以放入Python的scripts目录下,也可以放入Chrome安装目录,并...

阿豪boy ⋅ 32分钟前 ⋅ 0

292. Nim Game - LeetCode

Question 292. Nim Game Solution 思路:试着列举一下,就能发现一个n只要不是4的倍数,就能赢。 n 是否能赢1 true2 true3 true4 false 不论删除几,对方都能一把赢5 t...

yysue ⋅ 今天 ⋅ 0

6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩

zip压缩工具 zip命令可以压缩目录和文件,-r 压缩目录。 zip使用方法 zip 1.txt.zip 1.txt //压缩文件 zip -r 123.zip 123/ //压缩目录 unzip 1.txt.zip //解压 unzip 123.zip -d /root/456...

Linux_老吴 ⋅ 今天 ⋅ 0

react-loadable使用跳坑

官方给react-loadable的定义是: A higher order component for loading components with dynamic imports. 动态路由示例 withLoadable.js import React from 'react'import Loadable fro......

pengqinmm ⋅ 今天 ⋅ 0

记录工作中遇到的坑

1、ios safari浏览器向下滚动会触发window resize事件

端木遗风 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部