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框架中,我们有时需要直接与Servlet API交互,例如处理HTTP请求、响应,或者使用Session、Cookie等。本文将深入探讨如何在Struts2中访问Servlet API。 首先,理解Struts2的执行流程至关重要。当一个请求...
然而,在Struts2中,我们通常不直接与Servlet API交互,而是通过Action类和Struts拦截器来处理请求。直接访问Servlet API可能涉及使用`HttpServletRequest`、`HttpServletResponse`和`ServletConfig`等对象,这可能...
在"Struts2 part 3:在Action中使用ServletAPI"这一主题中,我们将深入探讨如何在Struts2的动作类(Action)中集成和利用Servlet API来增强应用的功能。 Servlet API是Java Servlet规范的一部分,它提供了一系列...
6. **Struts2与Servlet API的结合**:尽管Struts2提供了丰富的功能,但有时候直接使用Servlet API可能是必要的,例如,当需要进行低级的HTTP操作时。在这种情况下,开发者可以在Action类或自定义拦截器中集成Servlet...
MVC(Model-View-Controller)框架如Spring MVC、Struts等,虽然提供了更高级别的抽象,但底层仍然基于Servlet API处理请求和响应。 综上所述,Servlet API是构建Java Web应用的基础,提供了处理HTTP请求的核心...
综上所述,Struts2提供了多种方式来与Servlet API交互,同时通过适当的过滤器配置,可以确保在Struts2框架下,直接编写的Servlet也能正常工作。理解和掌握这些配置技巧对于开发和维护Struts2应用至关重要。
本案例聚焦于使用Struts2和Servlet两种不同的技术来实现这一功能。这两个技术都是Java Servlet的重要扩展,用于增强Web应用程序的功能和用户体验。 首先,让我们深入理解Struts2框架。Struts2是一个基于MVC(Model-...
Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,因为Action类不再与Servlet API耦合,能更轻松的测试该Action。但如何访问? Web应用中通常需要访问的Servlet API就是...
本案例“Struts2之Servlet文件上传详解”将聚焦于如何使用Struts2框架配合Servlet实现文件上传功能。在Web应用中,文件上传是一个常见的需求,例如用户可能需要上传头像、附件等。 首先,我们来理解文件上传的基本...
Struts和Servlet是Java Web开发中的两个重要组件,它们在构建动态、交互式的Web应用程序时起着关键作用。Struts是一种基于MVC(Model-View-Controller)设计模式的开源框架,而Servlet则是Java标准库中用于处理HTTP...
这些插件使得Struts2能更好地与各种技术集成,如JSON数据交互、模板引擎使用等。 4. **标签库(Tags)**:Struts2提供了一套丰富的JSP标签,简化了视图层的开发。例如s:form、s:textfield、s:submit等,它们对应于...
与Struts1和Struts2结合使用时,JQuery可以用来增强前端的交互性,与服务器端进行异步通信。 **Ajax** Ajax(Asynchronous JavaScript and XML)并非一种单一的技术,而是一种使用现有Web技术(JavaScript、XML、...
通过深入理解Struts1的API,开发者可以更有效地实现业务逻辑,处理用户请求,构建出高效、可维护的Web应用程序。对于初学者,了解每个组件的作用以及它们之间的交互方式至关重要,这有助于提高开发效率和代码质量。...
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...
- **Struts2**的Action类并不直接依赖Servlet API,而是通过中间层(如拦截器)间接与Servlet API交互,这样的设计使得**Struts2**的Action更加独立,也更容易进行单元测试。 #### 请求处理流程 - **Struts1**执行...
综上所述,servlet-api.jar对于理解Java Web开发至关重要,它构成了Web应用与服务器之间通信的基础,同时也是许多Web框架如Spring MVC、Struts、JSF等工作的核心。熟悉并掌握Servlet API,能帮助开发者更高效地构建...
而Struts2与JSON的集成则进一步增强了其功能,使得数据交换更为简洁,特别是在AJAX和移动应用中。 在标题和描述中提到的"struts2所需的包和Struts2_json所需包",主要是指为了实现Struts2框架与JSON数据交互所需要...
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...