Struts2 获取web元素

1.依赖容器

主动的从容器中获取web元素。
1.创建map类型的属性。
2.调用ActionContxt.getContext()方法。
创建的字段是map类型。所以用put方法将值加入到相应的web元素中。

public class LoginAction1 extends ActionSupport{
	private Map<String, Object> request;
	private Map<String, Object> session;
	private Map<String, Object> application;
	
	public LoginAction1(){
		request = (Map) ActionContext.getContext().get("request");
		session = (Map) ActionContext.getContext().getSession();
		application = (Map) ActionContext.getContext().getApplication();
	}
	
	@Override
	public String execute() throws Exception {
		request.put("r1", "r1");
		session.put("s1", "s1");
		application.put("a1", "a1");
		
		return SUCCESS;
	}

将web元素中的值获取出来。使用Struts2标签库中的<s:property value="#request.r1"/>,可以用井号来获取web元素中的值,即获取
Stack Context中的request属性中的键为r1所对应的值r1。
也可以使用request.getAttribute(“r1”)方法来获取当初设置的值。

<s:property value="#request.r1"/>|<%=request.getAttribute("r1") %><br/>
	<s:property value="#session.s1"/>|<%=session.getAttribute("s1") %><br/>
	<s:property value="#application.a1"/>|<%=application.getAttribute("a1")%><br/>

2.IoC(控制反转)

1.实现RequestAware,SessionAware,ApplicationAware接口。
2.重写其中的方法.

public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{

	private Map<String, Object> request;
	private Map<String, Object> session;
	private Map<String, Object> application;
	
	//ToC 控制反转
	@Override
	public void setApplication(Map<String, Object> application) {
			
		this.application = application;
	}
	@Override
	public void setSession(Map<String, Object> session) {

		this.session = session;
	}
	@Override
	public void setRequest(Map<String, Object> request) {
			
		this.request = request;
	}
	
	@Override
	public String execute() throws Exception {
		request.put("r1", "r2");
		session.put("s1", "s2");
		application.put("a1", "a2");
		return SUCCESS;
	}

IoC实现过程简述

context把request,session,application对象注给我们。我们不用主动去获取,所以叫做控制反转。

当Struts2创建Action对象时,发现Action已经实现了RequestAware接口,
Struts2会自己把request对象打包成map类型传给我们。
在这里插入图片描述

发布了47 篇原创文章 · 获赞 5 · 访问量 2037

猜你喜欢

转载自blog.csdn.net/OVO_LQ_Start/article/details/104163446