struts2对应封装
HttpServletRequest-------->RequestMap
HttpServletSession-------->SessionMap
ServletContext-------->ApplicationMap
ActionContext与Servlet api的解耦
在com.opensymphony.xwork2.ActionContext类中存在一个Map对象的context 类
首先通过ActionContext类的静态方法getContext()方法获得当前相关的一个ActionContext实例
public Object get(Object key)方法,就相当于HttpServletRequest.getAttribute()
public void put(Object key, Object value)对应HttpServletRequest.setAttribute()
public Map<String, Object> getParameters()对应HttpServletRequest.getParameterMap()
public Map<String, Object> getSession()方法对应javax.servlet.http.HttpSession
session.put(Object key, Object value)对应Servlet编程中的HttpSession.setAttribute(…)
也就是说,ActionContext能够获得三个Map类型的Request, Session, Application对象
ActionContext有一个好处,就是它已经将底层的Servlet进行了转化,比如它将session转化成Map
所以在struts中用session,request,Application完全可以创建一个map对象的
有好的放方法,望诸位大神给出意见,我好学习一下,我只是个小菜鸟。单纯看法
分享到:
相关推荐
### Servlet解耦知识点详解 #### 一、Servlet与Struts框架的结合 在Java Web开发中,Servlet作为标准的Web组件被广泛应用于处理HTTP请求。然而随着应用复杂度的提高,传统的Servlet处理逻辑逐渐难以满足需求,这时...
Struts通过解耦业务逻辑、视图和控制逻辑,提高了代码的可维护性和可扩展性。在本系统中,Struts负责处理HTTP请求,调用相应的Action类,执行业务逻辑,并将结果传递给视图进行展示。 二、Servlet技术 Servlet是...
2. **Servlet** - **生命周期**:Servlet的生命周期包括加载、初始化(jspInit)、服务(jspService)和销毁(jspDestroy)四个阶段。jspInit只在Servlet实例化时执行一次,jspService处理每个请求,jspDestroy在...
7. **Servlet API**: 由于Struts2基于Servlet,所以会依赖`javax.servlet`和`javax.servlet.http`包,以处理HTTP请求和响应。 8. **Logging**: Struts2框架内部使用了日志框架,如Log4j或SLF4J,用于记录应用程序的...
- **内置拦截器**:Struts2提供了一系列内置拦截器,如`params`(参数填充)、`token`(防止重复提交)、`servletConfig`(获取Servlet配置信息)等。 - **自定义拦截器**:可以通过实现`Interceptor`接口或继承`...
而Struts2的Action与容器解耦,尽管仍能访问请求和响应,但通过其他机制减少了对Servlet API的直接依赖,增强了可测试性。 测试方面,Struts1的Action由于execute方法直接暴露了Servlet API,测试通常需要依赖容器...
- **Struts1**:基于Front Controller模式,只有一个Servlet(ActionServlet)处理所有请求。它使用Plug-In和Dispatcher机制来实现业务逻辑和视图的解耦。 - **Struts2**:继承了Struts1的Front Controller模式,...
在Struts2框架中,开发者可以利用拦截器链来处理请求,这允许自定义行为并解耦业务逻辑。此外,Struts2还引入了强大的OGNL(Object-Graph Navigation Language)表达式语言,用于数据绑定和动态方法调用,提高了开发...
这一过程实现了与Servlet API的解耦,使得我们无需在web.xml中为每个URL配置单独的Servlet,而是通过配置Action和Result来管理请求和响应。 Struts2还支持多种结果类型,比如Redirect、RedirectAction、Stream等,...
7. **依赖的Servlet容器库**:由于Struts2是基于Servlet API的,因此还需要如`servlet-api.jar`、`jsp-api.jar`等Servlet和JSP相关的API库。 这些jar包共同协作,构建了一个完整的Struts2开发环境。开发者在实际...
- **与 Servlet 生命周期解耦:**STRUTS2 的 Action 不再依赖于具体的 Servlet API,这使得 STRUTS2 更加独立且易于测试。 **3. 测试友好:** - **单元测试支持更好:**STRUTS2 的 Action 可以脱离 Servlet 容器...
Struts2旨在简化Web应用开发,通过将表现层与业务逻辑层解耦,提高了代码的可维护性和可测试性。 1. **核心概念** - **Action**: Struts2的核心组件,负责处理用户请求,执行业务逻辑,并返回结果。每个Action对应...
- **Struts 2**:通过松耦合的设计,Action不再直接依赖于Servlet API。这不仅简化了Action的编写,也使得Action可以在没有Web容器的情况下独立测试,提高了测试效率和便利性。 #### 4. 可测性方面的对比 - **...
- **Struts2** 解耦了Action与Servlet容器,提供了更简单的测试支持,Action可以通过模拟对象独立测试,而不需要实际的HttpServletRequest和HttpServletResponse。 6. **测试能力** - **Struts1.x** 的测试通常...
在Struts2中,基于拦截器的机制被用来处理用户请求,这种设计使得业务逻辑控制器与Servlet API完全解耦,提高了灵活性和可扩展性。 在开始学习Struts2之前,你需要准备以下内容: 1. 下载Struts2的发布包,例如...
在探讨Struts2与Struts1的区别时,我们需深入理解这两个框架的设计理念、架构模式以及它们在实际应用中的表现差异。以下将从多个角度详细分析这两种流行Java Web框架的不同之处。 ### 1. **Action类的区别** #### ...