Spring MVC
主流MVC框架实现的功能
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
以Controller为中心完成对系统流程的控制管理 对请求数据的收集 对传入的参数进行验证
更加请求调用相应的业务逻辑完成数据处理 将处理结果返回给试图 国际化的支持
提供不同视图的支持方案 标签库 拦截器
对文件上传、下载的支持
Spring mvc概念
1. 2. 3. 4. 5. 6.
Dispatcher Servlet HandlerMapping Controller
ModelAndView ViewResolver View
实例实现
1. 新建web项目,导入相应的jar包。
a) 必须的jar包: i. com.springsource.javax.servlet.jsp.jstl-1.1.2.jar ii. com.springsource.org.apache.commons.logging-1.1.1.jar iii. org.springframework.asm-3.0.4.RELEASE.jar iv. org.springframework.beans-3.0.4.RELEASE.jar v. org.springframework.context-3.0.4.RELEASE.jar vi. org.springframework.context.support-3.0.4.RELEASE.jar vii. org.springframework.core-3.0.4.RELEASE.jar viii. org.springframework.expression-3.0.4.RELEASE.jar ix. org.springframework.web-3.0.4.RELEASE.jar x. org.springframework.web.servlet-3.0.4.RELEASE.jar
2. 修改项目中的web.xml文件
a) 添加spring mvc的中心控制器,并定义请求映射关系。
3. 4. 5. 6.
b) 根据定义的DispatcherServlet名称添加一个名为:名称-servlet.xml的配置文件。 编写controller类。
a) 添加一个类,名为StartController.java实现Controller接口。
public class StartController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println(\"start controller!\"); return new ModelAndView(\"start\").addObject(\"name\ } }
b) 显现Controller接口的handlerRequest方法。返回一个ModelAndView对象。 在spring-mvc-servlet.xml中配置controller的bean,让spring管理。
a) a) 在spirng-mvc-servlet.xml中配置HandlerMapping b) 当前台以start.do访问时,spring的DispatcherServlet会将请求转交给StartController 处理。 配置spring mvc的ViewResolver和View a) 在spring-mvc-servlet.xml中配置ViewResolver和View b) StartController中返回名称为start的ModelAndView,spring根据ViewResolver中定 义的映射模式拼合成/WEB-INF/jsp/start.jsp的url。 c) 根据定义的view试图。展现在前台。 Spring MVC常用的控制器Controller 1. 实现controller接口 2. 继承AbstractController抽象类 3. 直接跳转页面的控制器 a) ParameterizableViewController i. 在handlerMapping中配置 4. 能够封装表单参数的控制器 a) CommondController i. Controller类继承AbstractCommandController,实现handle方法 ii. 在spring-mvc-servlet.xml中配置 iii. 数据绑定 @Override protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception { binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat(\"yyyy-MM-dd\"), true)); } b) FormController同一请求调用不同的方法 i. 当请求为get时,调用referenceData方法 ii. 当请求为post时,调用onSubmit方法。 5. MultiActionController同一控制器处理多个请求 a) 方法 签名:public (ModelAndView | Map | String | void) actionName (HttpServletRequest request, HttpServletResponse response [,HttpSession] [,AnyObject]); b) 具体的调用方法是通过methodNameResolver决定 i. InternalPathMethodResolver ii. ParameterMethodNameResolver iii. PropertiesMethodResolver Spring MVC的Handler Mapping 1. 2. 3. 4. 默认的ControllerClassNameHandlerMapping 常用的SimpleUrlHandlerMapping BeannameUrlHandlerMapping 基于注解Controller时使用的DefaultAnnotationHandlerMapping Spring MVC注解 1. @Controller标记类:说明该类为控制器 2. @RequestMapping请求路径映射 a) 标记在方法名上:相对于类级别的应用 b) 标记在类名上:所有的方法都相对于该mapping 3. 请求参数的处理:在方法中添加参数HttpServletRequest获得相应的参数 4. restful风格:路径变量 5. get和post方法实现 a) get:@RequestMapping(value=\"/getPostTest\GET) b) post:@RequestMapping(value=\"/getPostTest\POST) 6. 注册数据绑定 @InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(Date.class, new CustomDateEditor( new SimpleDateFormat(\"yyyy-MM-dd\"), false)); } 7. RequestMapping方法能够接受的参数 a) HttpServletRequest b) HttpServletResponse c) HttpSession d) @PathVariable Anytype e) @RequestParam Anytype f) @CookieValue Anytype g) @RequestHeader Anytype h) PrintWriter i) Map 8. 返回值的类型 a) void b) String c) Anytype d) Model e) 38:00 f) 因篇幅问题不能全部显示,请点此查看更多更全内容