Struts2中访问web元素的四种方式

Struts2中访问web元素的四种方式

1. 通过ActionContext来访问Map类型的requestsessionapplication对象(依赖于Struts2 API 方式)

2. 通过实现RequestAwareSessionAwareApplicationAware接口来访问Map类型的requestsessionapplication对象(IoC方式)

3. 通过ServletActionContext来访问Servlet API类型的HttpServletRequest、 HttpSession、 ServletContext对象(依赖于Struts2 API 方式)

4. 通过实现ServletRequestAware接口来访问Servlet API类型的HttpServletRequest、 HttpSession、 ServletContext对象(IoC方式)

代码演示:

package action;

import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class ScopeAction extends ActionSupport implements RequestAware,ServletRequestAware{

	private Map<String,Object> request2;
	private HttpServletRequest request4;
	@Override
	public String execute() throws Exception {
		//第一种通过ActionContext来访问Map类型的
		//request、session、application对象(依赖于Struts2 API 方式)
		Map<String,Object> request=(Map<String,Object>)ActionContext.getContext().get("request");
		Map<String,Object> session=ActionContext.getContext().getSession();
		Map<String,Object> application=ActionContext.getContext().getApplication();
		
		request.put("request", "request");
		session.put("session", "session");
		application.put("application", "application");
		
		//第二种 通过实现RequestAware、SessionAware、ApplicationAware接口
		//来访问Map类型的request、session、application对象(IoC方式)
		request2.put("request2", "request2");
		
		//第三种 通过ServletActionContext来访问Servlet API类型的HttpServletRequest、 
		//HttpSession、 ServletContext对象(依赖于Struts2 API 方式)
		 HttpServletRequest request3=ServletActionContext.getRequest();
		 HttpSession session3=request3.getSession();
		 ServletContext appliction3=session3.getServletContext();	 
		 session3.setAttribute("session3", "session3");
		
		 //第四种 通过实现ServletRequestAware接口来访问Servlet API类型的
		 //HttpServletRequest、 HttpSession、 ServletContext对象(IoC方式)
		 HttpSession session4=request4.getSession();
		 ServletContext application4=session4.getServletContext();
		 
		 application4.setAttribute("application4", "application4");
		 
		 
		return SUCCESS;
	}

	@Override
	public void setRequest(Map<String, Object> arg0) {
		this.request2=arg0;
	}

	@Override
	public void setServletRequest(HttpServletRequest arg0) {
		request4=arg0;
		
	}

	
	
	
}

Struts2.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
  
  <package name="hello" namespace="/hello" extends="struts-default">
   <action name="login" class="action.ScopeAction">
    	<result>/index.jsp</result>
   </action>
  </package>
</struts>
	
Index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
   
    <title>My JSP 'index.jsp' starting page</title>
	
  </head>
  
  <body>
    	${requestScope.request}
    	${sessionScope.session}
    	${applicationScope.application}
    	
    	
    	${requestScope.request2}
    	
    	${sessionScope.session3}
    	
    	${applicationScope.application4}
  </body>
</html>
结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值