SpringMVC的特点:
• 轻量级,简单易学
• 高效、基于请求响应的MVC框架
• 与Spring兼容性好,无缝结合,我们可以将SpringMVC中所有用到的bean,注册到Spring中
• 约定大于配置
• 功能强大:RESTful风格、数据验证、格式化、本地化、主题等
• 简洁、灵活

中心控制器
Spring的web框架围绕DispatcherServlet设计。DispatcherServlet的作用是将请求分发到不同的处理器。

流程
image.png
解释一下
image.png
主要
image.png
实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现。

在pom.xml文件引入相关的依赖:主要有Spring框架核心库、Spring MVC、servlet , JSTL

注解

配置 web.xml

  1. <build>
  2. <resources>
  3. <resource>
  4. <directory>src/main/java</directory>
  5. <includes>
  6. <include>**/*.properties</include>
  7. <include>**/*.xml</include>
  8. </includes>
  9. <filtering>false</filtering>
  10. </resource>
  11. <resource>
  12. <directory>src/main/resources</directory>
  13. <includes>
  14. <include>**/*.properties</include>
  15. <include>**/*.xml</include>
  16. </includes>
  17. <filtering>false</filtering>
  18. </resource>
  19. </resources>
  20. </build>

m

v

  1. // hello.jsp
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <html>
  4. <head>
  5. <title>SpringMVC</title>
  6. </head>
  7. <body>
  8. ${msg}
  9. </body>
  10. </html>

c

  1. package edu.cqupt.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.ui.Model;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. @Controller
  6. //@RequestMapping("/hello") //localhost:8080/hello/h1
  7. public class HelloController {
  8. @RequestMapping("/h1")
  9. public String hello(Model model){
  10. //封装数据
  11. model.addAttribute("msg","Hello,SpringMVCAnnotation");
  12. return "hello"; // 会被视图解析器处理
  13. }
  14. }
  • @Controller是为了让Spring IOC容器初始化时自动扫描到;
  • @RequestMapping是为了映射请求路径,这里因为类与方法上都有映射所以访问时应该是/HelloController/hello;
  • 方法中声明Model类型的参数是为了把Action中的数据带到视图中;
  • 方法返回的结果是视图的名称hello,加上配置文件中的前后缀变成WEB-INF/jsp/hello.jsp。

总结

实现步骤其实非常的简单:

  1. 新建一个web项目
  2. 导入相关jar包
  3. 编写web.xml , 注册DispatcherServlet
  4. 编写springmvc配置文件
  5. 接下来就是去创建对应的控制类 , controller
  6. 最后完善前端视图和controller之间的对应
  7. 测试运行调试

手动

  1. // web.xml
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  6. version="4.0">
  7. <!--1.注册DispatcherServlet-->
  8. <servlet>
  9. <servlet-name>springmvc</servlet-name>
  10. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  11. <!--关联一个springmvc的配置文件:【servlet-name】-servlet.xml-->
  12. <init-param>
  13. <param-name>contextConfigLocation</param-name>
  14. <param-value>classpath:springmvc-servlet.xml</param-value>
  15. </init-param>
  16. <!--启动级别-1-->
  17. <load-on-startup>1</load-on-startup>
  18. </servlet>
  19. <!--/ 匹配所有的请求;(不包括.jsp)-->
  20. <!--/* 匹配所有的请求;(包括.jsp)-->
  21. <servlet-mapping>
  22. <servlet-name>springmvc</servlet-name>
  23. <url-pattern>/</url-pattern>
  24. </servlet-mapping>
  25. </web-app>
  26. // springmvc-servlet.xml
  27. // springmvc 配置文件
  28. <?xml version="1.0" encoding="UTF-8"?>
  29. <beans xmlns="http://www.springframework.org/schema/beans"
  30. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  31. xsi:schemaLocation="http://www.springframework.org/schema/beans
  32. http://www.springframework.org/schema/beans/spring-beans.xsd">
  33. <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
  34. <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
  35. <!--视图解析器:DispatcherServlet给他的ModelAndView
  36. 1. 获取了ModelAndView的数据
  37. 2. 解析ModelAndView的视图名字
  38. 3. 拼接视图名字,找到对应的视图
  39. 4. 将数据渲染到当前视图上-->
  40. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
  41. <!--前缀-->
  42. <property name="prefix" value="/WEB-INF/jsp/"/>
  43. <!--后缀-->
  44. <property name="suffix" value=".jsp"/>
  45. </bean>
  46. <!--Handler-->
  47. <bean id="/hello" class="edu.cqupt.controller.HelloController"/>
  48. </beans>
  1. // hello.controller
  2. package edu.cqupt.controller;
  3. import org.springframework.web.servlet.ModelAndView;
  4. import org.springframework.web.servlet.mvc.Controller;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. //注意:这里我们先导入Controller接口
  8. public class HelloController implements Controller {
  9. public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
  10. //ModelAndView 模型和视图
  11. ModelAndView mv = new ModelAndView();
  12. //封装对象,放在ModelAndView中。Model
  13. mv.addObject("msg","HelloSpringMVC!");
  14. //封装要跳转的视图,放在ModelAndView中
  15. mv.setViewName("hello"); //: /WEB-INF/jsp/hello.jsp
  16. return mv;
  17. }
  18. }