绑定pojo对象及ServletAPI相关
package com.hous.springmvc.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import java.io.IOException; import java.io.Writer; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.hous.springmvc.pojo.User; @Controller public class PojoController { /** * Spring MVC会按照请求参数名和POJO属性名进行匹配, * 自动为该对象填充属性值,支持级联属性,如dept.deptId */ @RequestMapping("/testPojo") private String testPojo(User user) { System.out.println("testPojo=>" + user); return "success"; } /** * 可以使用Servlet原生API作为目标方法的参数,具体支持以下类型 * * HttpServletRequest * HttpServletResponse * HttpSession * java.security.Principal * Locale * InputStream * OutputStream * Reader * Writer * @throws IOException */ @RequestMapping("/testServletAPI") private String testServletAPI(HttpServletRequest request, HttpServletResponse response) { System.out.println("testServletAPI=>" + request +"^_^" + response); return "success"; } @RequestMapping("/testWriterAPI") private void testWriterAPI(Writer out) throws IOException { System.out.println("testWriterAPI"); out.write("Hello Shanshanbox.com"); } }
相关推荐
- **与Servlet API的交互**:Struts1的Action对象直接依赖于Servlet API,这意味着开发者在编写Action时需要直接操作`HttpServletRequest`和`HttpServletResponse`对象。而在Struts2中,Action对象并不直接与这些...
页面绑定方面,Struts1依赖JSP标准机制,而Struts2采用ValueStack技术,允许taglib直接访问值栈中的对象,无需在视图和对象之间建立直接绑定,提高了重用性。 在类型转换上,Struts1的ActionForm属性通常是String...
Action 接口不是必须的,任何有 execute 标识的 POJO 对象都可以用作 Struts2 的 Action 对象。 线程模式 Struts1 Action 是单例模式,并且必须是线程安全的,因为仅有 Action 的一个实例来处理所有的请求。单例...
Struts1使用JSP标准机制绑定对象到视图,而Struts2通过ValueStack技术,允许标签库访问数据,无需将视图直接绑定到特定对象,提高了代码复用。 8. **类型转换**: Struts1的ActionForm属性通常是String类型,依赖...
更重要的是,Struts2允许任何带有execute方法的普通Java对象(POJO)作为Action,提供了更大的灵活性。 线程模型是另一个关键区别。Struts1的Action类是单例模式的,这意味着所有请求都会共享同一个Action实例,这...
在视图与值的绑定上,Struts1采用标准JSP机制,而Struts2利用ValueStack技术,允许标签库无需直接绑定视图到对象类型,增强了视图的复用性。 类型转换方面,Struts1的ActionForm属性通常为String类型,依赖于...
- Struts1的Action直接与Servlet API交互,即Action方法会直接接收HttpServletRequest和HttpServletResponse参数。 - 这种方式使得Action类与Web容器紧密耦合,降低了可移植性和可测试性。 - **Struts2与Servlet ...
Action接口不是必须的,任何有execute标识的POJO对象都可以用作Structs2.0的Action对象。 线程模式 Structs1.x的Action是单例模式,并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略...
Action对象无需继承特定基类,任何包含`execute`方法的Plain Old Java Object(POJO)都可以作为Struts2的Action。 2. **线程模型** - **Struts1.x**:Action类是单例模式,所有请求共享一个实例,需要确保线程...
尽管Struts2仍能访问请求和响应对象,但它通过其他设计降低了对Servlet API的直接依赖。 在测试方面,Struts1的Action由于直接暴露了Servlet API,测试需要依赖容器,通常需要使用Struts TestCase这样的第三方工具...
- Struts2则允许Action类实现Action接口,甚至可以不直接实现,只要包含一个`execute`方法的普通Java对象(POJO)就能作为Action使用。此外,`ActionSupport`基类提供了默认的实现,方便开发者快速开始。 2. **...
- **Action实现**:Struts1要求Action类继承自特定基类,而Struts2的Action可以是任何POJO对象,无需特定的继承关系。 - **线程模型**:Struts1的Action是单例模式,处理所有请求,可能导致线程安全问题;而Struts...
而在Struts2.x中,Action不需要直接处理这些Servlet API的对象,取而代之的是通过拦截器间接地与请求和响应交互,这使得代码更加清晰和易于维护。 #### 测试支持 Struts1.x的测试通常依赖于对Servlet API的模拟,...
2. POJO 参数:请求参数名与 POJO 类属性名匹配时,会自动将参数值注入到 POJO 对象中。 3. @RequestParam 注解:通过在方法参数前添加 @RequestParam,可以指定参数名,即使与方法参数名不同。 4. @PathVariable:...
- Struts1使用JSP标准机制将对象绑定到视图,而Struts2引入了“ValueStack”技术,标签库可以直接访问值,无需显式绑定对象与视图。 8. **类型转换**: - Struts1的ActionForm属性通常是String类型,依赖于...
- **Struts1**:Action直接依赖于Servlet API,`HttpServletRequest`和`HttpServletResponse`作为参数传递给`execute`方法,测试时需要依赖容器。 - **Struts2**:Action不依赖于容器,允许独立测试。虽然仍可以...