您的位置:首页 > 编程语言 > Java开发

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

2014-03-20 08:27 399 查看
Struts2中访问web元素的四种方式:

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

2. 通过实现RequestAware、SessionAware、ApplicationAware接口来访问Map类型的request、session、application对象(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>
结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts2 xml html string