【Struts框架】第一节Action-struts访问request等引用方法二

简介:
取得Map类型的request,session,application(最常用的开发方式):

LoginAction2.java:
package cn.edu.hpu.getValue;

import java.util.Map;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
	//实现RequestAware接口,此类就知道Request的存在,Session和Application一样
	//IOC设计思想,也称DI。
	//DI dependency injection依赖注入
	//IoC inverse of control控制反转
	//struts帮我们初始化了Request这些值
	//本来自己控制,自己去new或去取,现在让别人去取,变成了控制反转(Spring在用)
	private Map<String,Object> request;
	private Map<String,Object> session;
	private Map<String,Object> application;
	
	public String execute(){
		request.put("r1", "r1");
		session.put("s1", "s1");
		application.put("a1", "a1");
		return SUCCESS;
	}

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

	@Override
	public void setSession(Map<String, Object> session) {
		this.session=session;
	}
	@Override
	public void setApplication(Map<String, Object> application) {
		this.application=application;
		
	}
}

struts.xml:
<package name="login" namespace="/login" extends="struts-default">
	<action name="login*" class="cn.edu.hpu.getValue.LoginAction{1}">
       <result>/User_login_success.jsp</result>
   </action>
</package>

前台链接User_login.jsp:
<input type="button" value="submit1" onclick="javascript:document.f.action='login/login1';document.f.submit();"/>

前台取值User_login_success.jsp(左右两种访问方式):
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>User_login_success</title>
  </head>
  
  <body> 
    User Login Success!!<br/>
    <s:property value="#request.r1"/> | <%=request.getAttribute("r1")%><br/>
<s:property value="#application.a1"/> | <%=application.getAttribue("a1")%><br/>
    <s:property value="#session.s1"/> | <%=session.getAttribute("s1")%><br/>
    <br/>
    <s:debug></s:debug>
  </body>
</html>

PS:数据要用"#"才能提取出来。
[Debug]中也提到了:
These items are available using the #key notation

原理:Map里面放的request中的值,在前台用request.getAttribute("r1")可以直接拿到,说明struts在Map和HttpServletRequest中间有关联。即是struts将Map中的所有值复制到对应的request等引用中,在前台直接可以从request等引用中取值。

转载请注明出处:http://blog.csdn.net/acmman/article/details/44239039

相关文章
Struts2动态方法调用,和struts.xml的通配符方式调用
Struts2动态方法调用,和struts.xml的通配符方式调用
81 0
Struts2动态方法调用,和struts.xml的通配符方式调用
|
Java
struts2中Action的三种开发编写形式,ActionSupport,POJO
struts2中Action的三种开发编写形式,ActionSupport,POJO
73 0
struts2中Action的三种开发编写形式,ActionSupport,POJO
|
XML 前端开发 Java
Action的三种实现方式,struts.xml配置的详细解释及其简单执行过程(二)
上一章简单介绍了Struts2的’两个蝴蝶飞,你好’ (一),如果没有看过,请观看上一章
329 0
Action的三种实现方式,struts.xml配置的详细解释及其简单执行过程(二)
|
网络安全
SSH框架整合遇到的错误——Struts2.5 action跳转出现错误
错误信息如图: 刚开始以为是struts2的配置问题,就换了一下action的值,改成了login1之后才发现错误。 表单提交的跳转信息: Struts2.xml中的配置 UserAction.java中的配置   action的跳转方法不能有参数,手误写了参数,导致action找不到login1方法。
1361 0
|
Java API 数据安全/隐私保护
Struts2【开发Action】知识要点
前言 前面Struts博文基本把Struts的配置信息讲解完了.....本博文主要讲解Struts对数据的处理 Action开发的三种方式 在第一次我们写开发步骤的时候,我们写的Action是继承着ActionSupport类的.
1159 0