SpringMVC初见

SpringMVC初见

现在就正式开始学习 SpringMVC 了!

1. SpringMVC简介

SpringMVC 是 Spring Framework 的一部分,是基于 Java 实现 MVC 的轻量级 Web 框架,本质上相当于 Servlet!

SpringMVC 的优点

  • 轻量级框架,简洁灵活
  • 基于请求响应的 MVC 框架,高效
  • 与 Spring 无缝衔接!

也没啥好介绍的了,SpringMVC 和 Spring 已经是绑定的了,学习的理由自不必说,直接开始行动!

2. HelloSpringMVC

在研究 SpringMVC 执行的流程和原理之前,先对着教程写一个 HelloSpringMVC 程序,感受一下流程(学习流程,开发还会简化)!

  1. 创建 SpringMVC-02-Hello 项目,为项目添加 Web 的框架,配置 Tomcat(创建 Artifact 时把前一个项目的包给删了,后面也这么干)。

  2. 配置 web.xml,注册 DispatcherServlet ( SpringMVC 的核心!)

    <!-- web.xml 中-->
    
    <!--注册 DispatcherServlet -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--关联 springmvc 的配置文件:[servlet-name]-servlet.xml-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <!--启动级别-1-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <!--/ 匹配所有的请求(不包括.jsp)-->
    <!--/* 匹配所有的请求(包括.jsp)-->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    

    其中有一个 SpringMVC 的配置文件需要关联。

  3. 在 resources 目录下创建 SpringMVC 的配置文件,名称格式为 [servletname]-servlet.xml(官方建议)

    <!--约束就是标准的 Spring 约束!-->
    
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    </beans>
    
  4. 在配置文件中,添加处理器映射

    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    

    这没有 id 的 bean 一看就知道要自动装配了!

  5. 在配置文件中,添加处理适配器

    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    

    这个 bean 也没有 id。

  6. 在配置文件中,添加视图解析器

    <!--视图解析器 给 DispatcherServlet 的 ModelAndView 都会经过这里 -->
    <!-- 1.获取 ModelAndView 的数据-->
    <!-- 2.解析 View 的名字-->
    <!-- 3.拼接视图名字,找到对应的视图-->
    <!-- 4.把 Model 渲染到 View 上!-->
    <bean  id="InternalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>
    

    也不知道是干什么用的,后面再说。不过可以知道前缀和后缀用于和请求进行拼接,如请求为 hello,就能拼接成 /WEB-INF/jsp/hello.jsp

  7. 在 com.qiyuan.controller 包下编写操作业务的 HelloController 类,实现了 Controller 接口,它就是一个 Controller(或者注解!)

    // 这里先使用 Controller 接口实现
    public class HelloController implements Controller {
    
        public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
            // ModelAndView 模型和视图
            ModelAndView mv = new ModelAndView();
    
            // 封装对象,放在ModelAndView中。Model
            mv.addObject("msg","HelloSpringMVC!");
            // 封装要跳转的视图,放在ModelAndView中
            // 由于设置了前缀和后缀,相当于 /WEB-INF/jsp/hello.jsp
            mv.setViewName("hello");
            return mv;
        }
    }
    
  8. 将 Controller 类交给 Spring 管理,注册对应的 bean

    <!--Handler-->
    <bean id="/hello" class="com.qiyuan.controller.HelloController"/>
    

    这里也是写在 springmvc-servlet.xml 中的。

  9. 好了,差不多了,把要跳转的页面 hello.jsp 写了

    <%-- /WEB-INF/jsp/hello.jsp --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Qiyuanc</title>
    </head>
    <body>
    ${msg}
    </body>
    </html>
    
  10. 启动项目,请求 http://localhost:8080/SpringMVC_02_Hello/hello,成功输出 HelloSpringMVC!

注意:这里可能会出现请求的页面找不到(404)的情况,原因为项目中的 jar 包在 Tomcat 中找不到!

解决方法:可以把项目的 jar 包全丢进 Tomcat 的 lib 下,但这太暴力了

上一篇:简单的谈一下SpringMVC的工作流程


下一篇:Spring MVC的基础配置