struts2中提供了Map类型的request,session,与application,可以从ActionContext对象中获得.
(1)实例ActionContext,通常通过ActionContext对象提供的getContext()方法获取
public static ActionContext getContext(),该方法是静态的,可以直接调用
ActionContext=ActionContext.getContext()
(2)获取Map类型的request
Map request=ActionContext.getContext().get("request");
(3)获取Map类型的session
Map request=ActionContext.getContext().getSession();
(4)获取Map类型的application
Map request=ActionContext.getContext().getApplication();
public class LoginAction { private String username; private String password; public String login(){ return "login"; } public String logined(){ if(StringUtil.isNotEmpty(username)&&StringUtil.isNotEmpty(password)){ ActionContext.getContext().getSession().put("username",username); return "loginSuccess"; }else{ return "error"; } } //生成setter和getter public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
虽然在struts2中使用ActionContext来访问 Servlet API,但这种方法不能直接获得ServletAPI实例,为了再action中直接访问 Servlet API可以通过以下方法直接访问
(1)ServletContextAware:实现该接口的Action可以直接访问Web应用的ServletContext实例
(2)ServletRequestAware:实现该接口的Action可以直接访问Web应用的HttpServletRequest实例
(3)ServletResponseAware:实现该接口的Action可以直接访问Web应用的HttpServletResponse实例
public class LoginAction implements ServletResponseAware{ private String username; private String password; private HttpServletResponse response; public String login(){ return "login"; } public String logined(){ //记录一个网站访问次数 ActionContext context=ActionContext.getContext(); Integer count=(Integer)context.getApplication().get("count"); if(count==null){ count=1; }else{ count+=1; } context.getApplication().put("count", count); if(StringUtil.isNotEmpty(username)&&StringUtil.isNotEmpty(password)){ Cookie cookie=new Cookie("username", username); cookie.setMaxAge(60*60); response.addCookie(cookie); context.getSession().put("username",username); return "loginSuccess"; }else{ return "error"; } } //生成setter和getter public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public void setServletResponse(HttpServletResponse response) { this.response=response; } }
除上述两种方法外,还可以通过ServletActionContext访问Servlet API
public class LoginAction{ private String username; private String password; private HttpServletResponse response; public String login(){ return "login"; } public String logined(){ //记录一个网站访问次数 ActionContext context=ActionContext.getContext(); Integer count=(Integer)context.getApplication().get("count"); if(count==null){ count=1; }else{ count+=1; } context.getApplication().put("count", count); if(StringUtil.isNotEmpty(username)&&StringUtil.isNotEmpty(password)){ Cookie cookie=new Cookie("username", username); cookie.setMaxAge(60*60); ServletActionContext.getResponse().addCookie(cookie); context.getSession().put("username",username); return "loginSuccess"; }else{ return "error"; } } //生成setter和getter public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
相关推荐
Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,因为Action类不再与Servlet API耦合,能更轻松的测试该Action。但如何访问? Web应用中通常需要访问的Servlet API就是...
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...
struts2-2.5.5 最小开发包 可以用来练习!...Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。struts-2.3.16.1.zip就是struts2.3的一个版本...
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...
Struts2是一个基于MVC设计模式的Web应用框架,...Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品
Spring、Struts2、Hibernate 面试题中的知识点,涵盖了 MVC 模式、Struts1.2 和 Struts2.0 的区别、单例模式、Servlet 依赖、可测试性、项目中使用 SSH 的原因、Struts 和 Spring 的继承关系、实现国际化等方面的...
struts2 struts2struts2 struts2 的 ActionAction ActionAction 如何实现和 如何实现和 如何实现和 servletAPI servletAPIservletAPIservletAPIservletAPI servletAPIservletAPIservletAPI的交互
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...
8.6.1 实现与ServletAPI的交互 86.2 域模型DomainModel 86.3 驱动模型ModelDriven 8.7 实战检验 8.7.1 Struts2处理表单数据 8.7.2 使用M印类型的request、session、application 8.8 疑难解惑 8.8.1 Struts Prepare ...
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...
视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。 模型: 模型表示业务数据和业务处理。相当于JavaBean。一个模型能为多个视图提供数据。这提高...
JavaBean,EJB 组件实现),“View” 是应用的表示面(由 JSP 页面产生),“Controller” 是提供给用的处理过程控制(一般是一个 Servlet),通过这种设计模型把应用逻辑、处理过程和显示逻辑分成不同的组件实现。...
Model 代表的是应用的业务逻辑(通过 JavaBean,EJB 组件实现),View 是应用的表示面(由 JSP 页面产生),Controller 是提供应用的处理过程控制(一般是一个 Servlet)。通过这种设计模型,把应用逻辑、处理过程和...
通过分析这些代码,可以加深对Java Web技术栈的理解,包括但不限于Servlet API、JDBC(Java Database Connectivity)、HTML/CSS/JavaScript,以及可能涉及的框架如Spring或Struts。此外,这个资料包也可能含有一些...
Struts如何实现Model 2, MVC 639 Struts 控制流 639 Struts framework的工作原理和组件 642 Struts ActionServlet控制器对象 642 Struts Action Classes 642 搞定Action对象 643 处理异常 643 Action的分类 643 ...
面向对象编程:类与对象、继承、多态、封装。 集合框架:List、Set、Map的使用及其实现原理。 Java I/O:文件操作、流处理。 多线程编程:线程的创建、同步机制、并发工具。 网络编程:Socket编程、URL和...