Struts2中LoginAction的四种配置方法

本文是利用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
         
         
        
        
        
    
       
       

      
      




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值