由于Struts2中采用的松耦合的方式进行设计,所以在Struts2的Action类中就可以不适用Servlet的API来实现功能,但在控制层Action中想要使用Servlet的API时,应该如何操作呢?很简单,使用ServletActionContext类即可。
1.新建Web项目struts2.10
2.新建控制层代码List.java,内容如下
package controller;
import org.apache.struts2.ServletActionContext;
public class List {
private String usernameRequest;
private String usernameSession;
private String usernameApplication;
public String execute(){
usernameRequest = "usernameRequest";
usernameSession = "usernameSession";
usernameApplication = "usernameApplication";
ServletActionContext.getRequest().setAttribute(usernameRequest, usernameRequest);
ServletActionContext.getRequest().getSession().setAttribute(usernameSession, usernameSession);
ServletActionContext.getServletContext().setAttribute(usernameApplication, usernameApplication);
return "default";
}
public String getUsernameRequest() {
return usernameRequest;
}
public void setUsernameRequest(String usernameRequest) {
this.usernameRequest = usernameRequest;
}
public String getUsernameSession() {
return usernameSession;
}
public void setUsernameSession(String usernameSession) {
this.usernameSession = usernameSession;
}
public String getUsernameApplication() {
return usernameApplication;
}
public void setUsernameApplication(String usernameApplication) {
this.usernameApplication = usernameApplication;
}
}
要使用Servlet的API,必须通过ServletActionContext类
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/dtds/struts-2.0.dtd">
<struts>
<package name="struts2.10" extends="struts-default">
<action name="list" class="controller.List">
<result name="default">/default.jsp</result>
</action>
</package>
</struts>
4. 新建JSP页面default.jsp,代码如下
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page isELIgnored="false"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
#request.usernameRequest值是:
<s:property value="#request.usernameRequest" />
<br />
#session.usernameSession值是:
<s:property value="#session.usernameSession" />
<br />
#application.usernameApplication值是:
<s:property value="#application.usernameApplication" />
<br />
</body>
</html>
程序运行结果如下图所示: