Spring MVC入门
1、选型
选型范围:Struts2、Spring MVC,其他的没精力研究。
Spring MVC特点:
1、师出名门,受众广,与Spring兼容性好。
2、轻量,简单,易于使用,可以让开发人员将精力放到业务逻辑开发上。
3、高效,性能优秀。
4、功能强大:RESTful、数据验证、格式化、绑定机制、本地化、主题等
5、清晰的角色划分:控制器(controller)、验证器(validator)、 命令对象(command object)、表单对象(form object)、模型对象(model object)、 Servlet分发器(DispatcherServlet)、 处理器映射(handler mapping)、视图解析器(view resolver)等等。 每一个角色都可以由一个专门的对象来实现
自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对Struts 2的超越。
2、下载
http://spring.io/projects,选择“Spring Framework”
3、几个重要的东西
3.1)DispatcherServlet:前端控制器,Spring的web框架围绕DispatcherServlet设计(很重要吧),其作用是将请求分发到不同的处理器。
3.2)HandlerMapping:处理请求的映射,实现类包含:
3.2.1)SimpleUrlHandlerMapping 通过配置文件,把一个URL映射到Controller
3.2.2)DefaultAnnotationHandlerMapping 通过注解,把一个URL映射到Controller类上
3.3)HandlerAdapter: 处理请求的映射,实现类包含:
3.3.1)AnnotationMethodHandlerAdapter类,通过注解,把一个URL映射到Controller类的方法上
4、古老的开发流程
4.1)实现控制器接口
public class MyController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception { //返回一个模型视图对象,指定路径 return new ModelAndView("my/index", "message", "Hello World"); } }
4.2)创建视图
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>my view</title> </head> <body> ${message} </body> </html>
4.3)修改spring mvc 配置文件
<bean name="/my" class="com.myspringmvc.controllers.MyController"></bean>
4.4)运行
4.5)缺点:
一个控制器中只有一个Action,如果要多个Action则需要定义多个Controller。
5、现在的开发流程
5.1)在自定义Controller上添加注解 @Controller、@RequestMapping("/")
5.2)在控制器方法上添加注解 @RequestMapping
@Controller @RequestMapping("/my") public class MyController { @RequestMapping("/index") public String index(Model model){ model.addAttribute("message", "Hello World"); return "my/index"; } }
5.3)修改spring mvc 配置文件,自动扫描包
<context:component-scan base-package="com.myspringmvc.controllers" />
5.4)运行