由于在struts2中采用的是松耦合的方式进行设计,所以在struts2的action类中就可以不使用servlet的API来实现功能,但在控制层action中想要使用Servlet的API时,用该怎样操作呢?
本节介绍如何使用ActionContext类来对request,session,application对象进行操作。
1.创建控制层ShowScopeValue.java
package controller; import java.util.Map; import com.opensymphony.xwork2.ActionContext; public class ShowScopeValue { public String execute() { //第一种方法向request对象中存放数据 Map request = (Map)ActionContext.getContext().get("request"); request.put("requestValue1", "this is request"); //第二种方法向request对象中存数据 ActionContext.getContext().put("requestValue2", "this is another request"); Map session = (Map)ActionContext.getContext().getSession(); session.put("sessionValue", "this is session value"); Map application = (Map)ActionContext.getContext().getApplication(); application.put("applicationValue", "this is appliacation value"); return "showscopevalue"; } }
由于struts2没有类似于getRequest的方法,所以必须使用Map request = (Map)ActionContext.getContext().get("request");来获取request对象,也可以使用ActionContext.getContext().put("requestValue", "this is another request");来获取request对象。
2.创建showscopevalue.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <body> <s:property value="#request.requestValue"1/> <br> <br> <s:property value="#request.requestValue2"/> <br> <br> <s:property value="#session.sessionValue"/> <br> <br> <s:property value="#application.applicationValue"/> <br> <br> </body> </html>
3.配置文件struts.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtd/struts-2.0.dtd"> <struts> <package name="Maybe" extends="struts-default"> <action name="showscopevalue" class="controller.showScopeValue"> <result name="showscopevalue"> /showscopevalue.jsp </result> </action> </package> </struts>
4.运行:showscopevalue.jsp