struts2笔记之第六讲

阅读更多
struts2笔记之第六讲


Struts2的Action访问Servlet API
1、可以通过ActionContext访问Servlet API 此种方式没有侵入性

使用方法如下:
*将登陆信息设置到session中
ActionContext.getContext().getSession().put("user", username);

*采用如下方式访问request对象
ActionContext.getContext().put("time", new Date());

*采用如下方式访问application对象
ActionContext.getContext().getApplication().put("我的应用程序", "我的应用程序");

*取得表单数据也可以用以下方式:request.getParameter();
 String username = (String) ActionContext.getContext().getParameters().get("username");



2.在Struts2中默认为转发,也就是标签中的type="dispatcher",type的属性可以修改为重定向
/login.jsp


(type的默认值为dispatcher,就是type="dispatcher" 表示转发)
Struts2的重定向有两种:
*、type="redirect",可以重定向到任何一个web资源,如jsp或Action,如果要重定向到Action,需要写上后缀,xxxx.action
  /login.jsp 
                   login.action

*、type="redirectAction" 可以重定向到Action,不需要写后缀,此种方式更通用些,不会因为后缀的改变影响配置
  login 

          
                        
3、关于Struts2的type类型,也就是Result类型,他们都实现了共同的接口Result,都实现了execute方法,
他们体现了策略模式(策略模式:可以配置的),
具体Result类型参见:struts-default.xml文件

            
            
            
            
            
            
            
            
            
            


上面体现的策略模式,所以我们完全可以自己根据需求扩展Result类型

4、全局Result和局部Result
*局部的Result
 /login.jsp 


* 全局Result

/login.jsp



例子:

LoginAction.java文件
package com.struts2;

import java.util.Date;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;

public class LoginAction implements Action {
    private String username;
    private String password;
   
	/**
	 * struts2 默认调用这个方法,返回字符串
	 * @return
	 * @throws Exception
	 */
	public String execute() throws Exception{
	   if("admin".equals(username) && "admin".equals(password)){
		   //将登陆信息设置到session中
		   ActionContext.getContext().getSession().put("user", username);
		   //采用如下方式访问request对象
		   ActionContext.getContext().put("time", new Date());
		   //采用如下方式访问application对象
		   ActionContext.getContext().getApplication().put("我的应用程序", "我的应用程序");
		   //取得表单数据也可以用以下方式
		   String username = (String) ActionContext.getContext().getParameters().get("username");   
		   return "success";  
	   }else{
		   return "error";
	   }
		
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}	
}


MustLoginAction.java文件
package com.struts2;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;

public class MustLoginAction implements Action {

	@Override
	public String execute() throws Exception {
		if(ActionContext.getContext().getSession().get("user")==null){
			//重定向到登陆页面
			return LOGIN;
		}else{
			return SUCCESS;
		}
	}

}


struts.xml文件




        
         
        
          
        
		
		
		
				/login.jsp
		
		     
		         /login_success.jsp
		          /login_error.jsp
		     
		     
		      
		      
		           
		        
		           
                   
                   
		           
		             
		             
		        /must_login.jsp
		      
		      
		
		


index.jsp文件,核心内容
   
   登陆 
访问受保护的页面

must_login.jsp文件加一句话:
该页面是受保护的     

你可能感兴趣的:(ActionContext,转发和重定向)