struts页面跳转和局部刷新配置的五种方式

2014-11-24 03:00:34 · 作者: · 浏览: 1

1:ajax json配置:

structs.xml

	 
  
			
    
     
     dataMap 
     
   
	
   

LoginAction.java

	dataMap.put("user", user);
	dataMap.put("success", true);
	return SUCCESS;

这个是页面局部刷新,这个标签是设置参数的,对于java程序来说,这个标签就相当于定义一个root 变量,将其赋值为dataMap ,前台可以获取使用root这个参数值


前台调用

$.ajax({
      url : "",
      type : 'post',
      success : function(data) {
             console.info(data.user.info);
      }
});



2:dispatcher 默认配置跳转(页面转发)

        
  
   /main.
   jsp
   

其完整格式为

        
   
                   
   /main.jsp 
        
  

页面跳转过程一直是同一个线程,Action中的数据一直保存在。
location只能是页面,不能是另一个action(可用type="chain"解决,下面第4会介绍)。


3:redirect 类型用于重定向到一个页面,另一个action或一个网址。

        
  
   aaa.jsp
   

缺点:redirect把一个http返回码(SUCCESS)以及返回的页面位置一起重新发给web服务器,容纳后由web服务器产生一个新的HTTP请求,就会产生一个新的线程,保存在原来Action执行的线程中的数据就无法访问。
所以,result需要包含Action的数据,那么redirect不是一个可行的办法。因为新的HTTP请求时在Servlet容器的新的线程中处理的,ActionContext中的所有状态都不会存在。

处理方法:

(方法一):

  
   /topicAction!findTopics.do topicId=${topicId}
  
(方法二):

  

   findTopics

   ${topicId}

  


redirect-action 结果类型使用ActionMapperFactory提供的ActionMapper来重定向请求到另外一个action
Xml代码:

  
    
   重定向的Action名
     
   重定向Action所在的名字空间

   


redirect和redirect-action两种结果类型在使用上其实并没有什么区别,只是写法不同而已。

4:chain 用于把相关的几个action连接起来,共同完成一个功能

  
     
   
    step2(这是注释step2.action)
   

  

  

   
    finish.jsp
   

   

处于chain中的action属于同一个http请求,共享一个ActionContext

5:plaintextj 结果类型用于直接在页面上显示源代码


  
    
   具体的位置
    
   字符规范(如GBK)