Struts2中LoginAction的四种配置方法

本文介绍使用Struts2框架实现的登录示例,包括四种不同的方式来设置和获取request、session及application范围的数据,同时展示了如何统计网站访问量。

本文是利用struts2框架,实现一个简单的登录例子,并且在登录后的欢迎界面显示访问量。

第一种:使用MAP键值对储存request,session,application信息,利用count计数。

public class LoginAction1 implements Action {
	private User user;
	
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	
//	@SuppressWarnings("unchecked");
	
	@Override
	public String execute() throws Exception {
		if ("张三".equals(user.getName())&&"1234".equals(user.getPassword())){
			ActionContext context =ActionContext.getContext();
			Map request = (Map)context.get("request");
			Map session = context.getSession();
			Map application = context.getApplication();
			//在请求中放置欢迎信息。
//			request.put("greeting","欢迎您来到程序员之家");
			ActionContext.getContext().put("greeting", "欢迎您来到程序员之家");
			//在session中保存user对象
			session.put("user",user);
			//统计用户访问量,在application中保存用户访问量数据
			Integer count = (Integer)application.get("counter");
			if(null == count){
			    count=1;
			}else{
			    count++;
			}
			application.put("counter",count);
			return SUCCESS;
		}else{
			return ERROR;
		}
	}
}
第二种:调用RequestAware,SessionAware,ApplicationAware接口。
public class LoginAction2 implements Action,RequestAware,SessionAware,ApplicationAware{
	
	private User user;
	private Map request,session,application;
	
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	
	
	
//	@SuppressWarnings("unchecked");
	
	@Override
	public void setRequest(Map request) {
		this.request = request;
	}
	@Override
	public void setSession(Map session) {
		this.session = session;
	}
	@Override
	public void setApplication(Map application) {
		this.application = application;
	}
	@Override
	public String execute() throws Exception {
		if ("张三".equals(user.getName())&&"1234".equals(user.getPassword())){
			
			//在请求中放置欢迎信息。
			request.put("greeting","欢迎您来到程序员之家");
			//在session中保存user对象
			session.put("user",user);
			//统计用户访问量,在application中保存用户访问量数据
			Integer count = (Integer)application.get("counter");
			if(null == count){
			    count=1;
			}else{
			    count++;
			}
			application.put("counter",count);
			return SUCCESS;
		}else{
			return ERROR;
		}
	}	
}
第三种:使用HttpServletRequest,HttpSession,ServletContext类,创建request,session,context对象,并使用getAttribute和setAttribute方法。
public class LoginAction3 implements Action{
	
	private User user;
	
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	
	@Override
	public String execute() throws Exception {
		if ("张三".equals(user.getName())&&"1234".equals(user.getPassword())){
			HttpServletRequest request = ServletActionContext.getRequest();
			HttpSession session = request.getSession();
			ServletContext context = ServletActionContext.getServletContext();
			
			//在请求中放置欢迎信息。
			request.setAttribute("greeting","欢迎您来到程序员之家");
			//在session中保存user对象
			session.setAttribute("user",user);
			//统计用户访问量,在application中保存用户访问量数据
			Integer count = (Integer)context.getAttribute("counter");
			if(null == count){
			    count=1;
			}else{
			    count++;
			}
			context.setAttribute("counter",count);
			return SUCCESS;
		}else{
			return ERROR;
		}
	}
}
第四种:调用ServletRequestAware,ServletContextAware接口。
public class LoginAction4 implements Action,ServletRequestAware,ServletContextAware{
	
	private User user;
	private HttpServletRequest request;
	private ServletContext context;
	
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	
	@Override
	public void setServletRequest(HttpServletRequest request){
	this.request = request;
	}

	@Override
	public void setServletContext(ServletContext context){
	this.context = context;
	}
	
	@Override
	public String execute() throws Exception {
		if ("张三".equals(user.getName())&&"1234".equals(user.getPassword())){
//			HttpServletRequest request = ServletActionContext.getRequest();
			HttpSession session = request.getSession();
//			ServletContext context = ServletActionContext.getServletContext();
			
			//在请求中放置欢迎信息。
			request.setAttribute("greeting","欢迎您来到程序员之家");
			//在session中保存user对象
			session.setAttribute("user",user);
			//统计用户访问量,在application中保存用户访问量数据
			Integer count = (Integer)context.getAttribute("counter");
			if(null == count){
			    count=1;
			}else{
			    count++;
			}
			context.setAttribute("counter",count);
			return SUCCESS;
		}else{
			return ERROR;
		}
	}
}
下面是jsp页面代码,
login.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>




      
Insert title here



      
用户名:
密码:
success.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@  taglib uri="/struts-tags" prefix="s" %>




      
欢迎页面


${sessionScope.user.name},${requestScope.greeting}.
本站的访问量是:${applicationScope.counter}

error.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>




      
登录错误


用户名或密码错误,请重新输入  登录

接下来是web.xml配置信息:

      

      
  
       
        Test
       
  
       
    
        
         login.jsp
        
  
       
  

       
    
        
         struts2
        
    
        
        
         
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    
        

       


       
    
        
         struts2
        
    
        
         /*
        

       
      
struts.xml配置信息:

     



     
    
      
        
       
            
        
         /ex03/HelloWorld.jsp
        
        
       
        
        
       
            
        
         /ch05/success.jsp
        
            
        
         /ch05/error.jsp
        
        
       
    
      

     




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值