下面介绍4种访问request,session,application的方法:
第一种:依赖于容器
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.validator.annotations.Validations;
public class LoginAction1 extends ActionSupport{
private Map request;
private Map session;
private Map application;
public LoginAction1() {
request = (Map)ActionContext.getContext().get("request");
session = ActionContext.getContext().getSession();
application = ActionContext.getContext().getApplication();
}
@Override
public String execute() throws Exception {
request.put("r1", "r1_v");
session.put("s1", "s1_v");
session.put("s2", "s2_v");
application.put("a1", "a1_v");
return SUCCESS;
}
}
第二种:IOC (一般开发用这种较多)
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{
private Map<String,Object> request;
private Map<String,Object> session;
private Map<String,Object> application;
@Override
public String execute() throws Exception {
request.put("r1", "r11");
session.put("s1", "s11");
application.put("a1", "a11");
return SUCCESS;
}
@Override
public void setRequest(Map<String, Object> arg0) {
request = arg0;
}
@Override
public void setSession(Map<String, Object> arg0) {
session = arg0;
}
@Override
public void setApplication(Map<String, Object> arg0) {
application = arg0;
}
}
第三种:依赖于容器(原始)
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction3 extends ActionSupport {
private HttpServletRequest request;
private HttpSession session;
private ServletContext application;
public LoginAction3(){
request = ServletActionContext.getRequest();
session = request.getSession();
application = session.getServletContext();
}
@Override
public String execute() throws Exception {
request.setAttribute("r1", "r111");
session.setAttribute("s1", "s111");
application.setAttribute("a1", "a111");
return SUCCESS;
}
}
第四种:也是IOC的
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction4 extends ActionSupport implements ServletRequestAware{
private HttpServletRequest request;
private HttpSession session;
private ServletContext application;
@Override
public String execute() throws Exception {
request.setAttribute("r1", "r1111");
session.setAttribute("s1", "s1111");
application.setAttribute("a1", "a1111");
return SUCCESS;
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
this.session = request.getSession();
this.application = session.getServletContext();
}
}
访问:
<s:property value="#request.r1"/> | <%=request.getAttribute("r1") %> <br/>
<s:property value="#session.s1"/> | <%=session.getAttribute("s1") %> <br/>
<s:property value="#application.a1"/> | <%=application.getAttribute("a1") %> <br/>
<s:property value="#attr.r1"/> 这种是自动搜索的,建议用上面那种精确的
<s:debug></s:debug>
对于为什么要用#来访问,你可以打开 <s:debug></s:debug>里面有说明:
Stack Context
These items are available using the #key notation
分享到:
相关推荐
精通Struts 2:Web 2.0开发实战 PDF版 免费分享
以前和struts2一起使用的配置文件,struts2的核心控制器
struts 2的api查询文档, Ian Roughley 写的APress - Practical Apache Struts2 Web 2.0 Projects.2007.pdf 是外文的,正好可以锻炼下英文阅读
Struts 2在web应用中常用的Struts 2的5个主要类库和包含datetimepicker的struts2-dojo-plugin-2.1.6.jar
Struts2是一套非常优秀的Java WEB应用框架,实现优雅、功能强大、使用简洁。目前已有大量的企业项目采用Struts2来作为Web框架进行开发,掌握Struts2是每个进行Web开发的Java程序员的一项必备技能。 本视频对Struts2...
Struts 2 教程,Struts 2 Web开发学习实录。pdf格式。希望对你的学习有所帮助!
使用 Felix 和 Struts2 开发 Web 应用 采用了struts 构建web ,feilx 构建bundle
struts2包有commons-logging-1.0.4.jar,freemarker-2.3.8.jar,ognl-2.6.11.jar,struts2-core-2.0.12.jar,xwork-2.0.6.jar
struts2和weboffice实现在线编辑上传功能
自己用struts2+ajax+jsp写得一个飞机订票系统,用户,和管理员,在数据库中可以看到,用时只需要在tomcat中配置下就可以了(最好不要把工程放到c盘配置)
基于Java的struts2的web项目开发,非常适合初学者借鉴
struts2环境搭建+struts2 新闻发布系统+struts2 留言板 struts2环境搭建:基础框架搭建,简单易上手,适合新手,比你看书强多了,实践源于理论而高于理论,贵在实践 朋友。 struts2 新闻发布系统:struts2+jsp 功能不...
Java+Ajax+struts2的web网页聊天 Java+Ajax+struts2的web网页聊天 Java+Ajax+struts2的web网页聊天
同样重要的是,《Struts2技术内幕:深入解析Struts2架构设计与实现原理》还深入挖掘并分析了Struts2源代码实现中蕴含的大量值得称道的编程技巧和设计模式,这对开发者从Struts2的设计原理上去掌握和悟透Web层开发的...
spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 spring webmvc struts 2.5 ...
利用felix和struts2实现osgi web
-- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper --> <bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class=...
同样重要的是,本书还深入挖掘并分析了Struts2源代码实现中蕴含的大量值得称道的编程技巧和设计模式,这对开发者从Struts2的设计原理上去掌握和悟透Web层开发的要点和本质提供了绝佳的指导。 本书主要分为3大部分...
例如你建一Web Project,名为Struts2 导入项目所需要的jar包,放入/Struts2/WebRoot/WEB-INF/lib下面 方法一: 在struts2存放目录(以我的举例说明) F:\JavaWeb教程\ssh-jar\struts-2.2.3.16-all\struts-2.2.3.16\...