版权声明:博客知识产权来源命运的信徒,切勿侵权 https://blog.csdn.net/qq_37591637/article/details/84935253
1.首先明白什么是WEB资源?
就是httpservletrequest、httpsession等servlet API的原生资源
2.怎么操控
2.1 和servlet API解耦的方式(访问有限,只能访问关键的)
XxxAware接口、ActionContext
2.2、和servlet API耦合的方式(可以访问原生的)
ServletXxxAware接口、ServletActionContext
我们开始第一讲 和sercvlet API解耦方式之ActionContext方式
package cn.com.action;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
public class TestActionContext {
/*
* ActionContext:是Action类的上下文对象 我们这个类就是Action;
* ActionContext主要的操作对象有Application session request parameters
*/
public String execute() {
// 0.首先获取上下文对象
ActionContext actioncontext = ActionContext.getContext();
// 1.Aplication
Map<String, Object> applicationmap = actioncontext.getApplication();
// 对对象可读可写
// 1.1 application写入对象
applicationmap.put("applicationkey", 12);
// 1.2 application读取对象 前提是前台的jsp页面里面有这个属性
/*
* 例如我在index.jsp页面上给了aplication一个属性,代码如下
* <%application.setAttribute("tian", "2018-10-22");%>
*/
String a = (String) applicationmap.get("tian");
System.out.println("a:" + a);
// 2.Session
Map<String, Object> sessionmap = actioncontext.getSession();
// 2.1往session里面写入对象
// 注意:key不能是session-key不能有"-"符号存在,电脑会识别不了
sessionmap.put("sessionkey", "session-value");
// 2.2取前台页面的session的属性
/*
* <%session.setAttribute("jiang", "happy_you"); %>
*/
String session = (String) sessionmap.get("jiang");
System.out.println("session:" + session);
// 3.Request
// request对象本身就就是一个键值对
Map<String, Object> requestmap = (Map<String, Object>) actioncontext.get("request");
requestmap.put("requestkey", "requestvalue");
/*这里有一个很大的疑问,就是怎么获取前台页面request的实现
<% request.setAttribute("nan", "wanzyecun"); %>
但是在这里书写获取的代码不对requestmap.get("nan")获取的是null
*/
// 4.Parameters
//只能读不可以取值
Map<String,Object> parametermap=actioncontext.getParameters();
//注意这个获取的是一个数组;正如一个属性名为name的可以有多个,不是唯一性的
String[] tjn=(String[]) parametermap.get("tjn");
String t=tjn[0];
System.out.println("tjn:"+t);
return "success";
}
}
index.jsp页面、
<body>
<%application.setAttribute("tian", "2018-10-22");%>
<%session.setAttribute("jiang", "happy_you"); %>
<% request.setAttribute("nan", "wanzyecun"); %>
<a href="context.action?tjn=atsgj">hello world</a>
</body>
success.jsp
<body>
Application:${applicationScope.applicationkey}<br><br>
Sessionset:${sessionScope.sessionkey}<br><br>
Sessionget:${sessionScope.jiang }<br><br>
requetset:${requestScope.requestkey }<br><br>
<%-- requestget:${requestScope.nan }<br><br> --%>
parameters:${parameters.tjn[0] }<br><br>
</body>
struts.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="tjn" extends="struts-default">
<action name="url" class="cn.com.action.Info" method="save">
<result name="success">/WEB-INF/pages/success.jsp</result>
</action>
<action name="context" class="cn.com.action.TestActionContext">
<result>/context.jsp</result>
</action>
</package>
</struts>