SpringMVC学习笔记02-------第一个SpringMVC程序

在上一节中,我们讲解了 什么是SpringMVC以及它的执行原理!
SpringMVC学习笔记01-----SpringMVC简介

现在我们来看看如何快速使用SpringMVC编写我们的程序吧!

方式一: 配置版

  1. 第一步: 创建一个maven项目,引入所需依赖

    <!-- springMVC相关依赖 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.15</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
    </dependency>
    
  2. 第二步:右击项目,将该项目改为web项目
    将一般的maven项目改为web项目

  3. 第三步:创建SpringMVC配置文件applicationContext.xml

       <?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
         https://www.springframework.org/schema/beans/spring-beans.xsd">
     </beans>
    
  4. 第四步: 在applicationContext.xml配置文件配置处理器映射器、处理器适配器以及视图解析器

      <!-- 添加处理器映射器 -->
      <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
      <!-- 添加处理器适配器 -->
      <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    
    
      <!-- 添加视图解析器 -->
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <!-- 前缀 -->
          <property name="prefix" value="/WEB-INF/jsp/"/>
          <!-- 后缀 -->
          <property name="suffix" value=".jsp"/>
      </bean>
    
      <!-- bean的id为我们之后请求的id -->
      <bean id="/hello" class="com.xdw.controller.HelloController"/>
    
  5. 第五步:在web项目下的web.xml文件中配置DispatcherServlet

     <servlet>
         <servlet-name>dispatcherServlet</servlet-name>
         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
         <init-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>classpath:applicationContext.xml</param-value>
         </init-param>
         <load-on-startup>1</load-on-startup>
     </servlet>
     <servlet-mapping>
         <servlet-name>dispatcherServlet</servlet-name>
         <!--
             1. /表示匹配所有请求,不包括jsp请求
             2. /* 表示匹配所有请求,包括jsp请求
         -->
         <url-pattern>/</url-pattern>
     </servlet-mapping>
    
  6. 第六步:编写HelloController,实现Spring的Controller接口

      package com.xdw.controller;
    
      import org.springframework.web.servlet.ModelAndView;
      import org.springframework.web.servlet.mvc.Controller;
    
      public class HelloController implements Controller {
    
          @Override
          public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws Exception {
              ModelAndView mv = new ModelAndView();
              mv.addObject("msg", "Hello World!");
              // 因为视图解析器中配置了前缀与后缀,会自动寻找/WEB-INF/jsp目录下的.jsp文件
              mv.setViewName("hello");
              return mv;
          }
      }
    
    
  7. 第七步:在applicationContext.xml文件中注册我们刚刚新建的HelloController

        <!-- bean的id为我们之后请求的路径 -->
        <bean id="/hello" class="com.xdw.controller.HelloController"/>
    
  8. 在WEB-INF/jsp目录下创建hello.jsp

       <%@ page contentType="text/html;charset=UTF-8" language="java" %>
       <html>
       <head>
           <title>注解跳转页</title>
       </head>
       <body>
           ${msg}
       </body>
       </html>
    
  9. 第八步:配置tomcat,启动项目,测试!
    测试SpringMVC项目

可能遇到的问题:访问出现404,排查步骤

  • 查看控制台输出,看一下是不是缺少了什么jar包。
  • 如果jar包存在,显示无法输出,就在IDEA的项目发布中,添加lib依赖!
  • 重启Tomcat 即可解决!

从上述流程,我们可以看出有点麻烦,在实际的开发过程中,我们通常都使用注解方式!

方式二:注解版

  1. 创建maven项目,引入对应依赖

  2. 将创建好的项目变为web项目

  3. 创建SpringMVC的配置文件applicationContext.xml

  4. 在创建好的applicationContext.xml配置文件中配置处理器映射器,处理器适配器以及视图解析器

          <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:context="http://www.springframework.org/schema/context"
             xmlns:mvc="http://www.springframework.org/schema/mvc"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans.xsd
             http://www.springframework.org/schema/context
             https://www.springframework.org/schema/context/spring-context.xsd
             http://www.springframework.org/schema/mvc
             https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
    
          <!-- 配置自动扫描包,让指定容器下的注解生效,由IOC容器统一管理 -->
          <context:component-scan base-package="com.xdw.controller"/>
          <!-- 让SpringMVC不处理静态资源 比如css等相关资源 -->
          <mvc:default-servlet-handler/>
          <!-- 配置支持注解的 处理器映射器与处理器适配器 -->
          <!--
             支持mvc注解驱动
             在spring中一般采用@RequestMapping注解来完成映射关系
             要想使@RequestMapping注解生效
             必须向上下文中注册DefaultAnnotationHandlerMapping
             和一个AnnotationMethodHandlerAdapter实例
             这两个实例分别在类级别和方法级别处理。
             而annotation-driven配置帮助我们自动完成上述两个实例的注入。
          -->
          <mvc:annotation-driven/>
    
    
          <!-- 配置视图解析器 -->
          <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
              <property name="prefix" value="/WEB-INF/jsp/"/>
              <property name="suffix" value=".jsp"/>
          </bean>
    
      </beans>
    
  5. web.xml 文件中配置 DispatcherServlet

      <servlet>
         <servlet-name>dispatcherServlet</servlet-name>
         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
         <init-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>classpath:applicationContext.xml</param-value>
         </init-param>
         <load-on-startup>1</load-on-startup>
     </servlet>
     <servlet-mapping>
         <servlet-name>dispatcherServlet</servlet-name>
         <url-pattern>/</url-pattern>
     </servlet-mapping>
    
  6. 编写HelloCOntroller

      package com.xdw.controller;
    
      import org.springframework.stereotype.Controller;
      import org.springframework.ui.Model;
      import org.springframework.web.bind.annotation.RequestMapping;
    
      @Controller
      public class HelloController {
    
          @RequestMapping("/hello")
          public String hello(Model model) {
              model.addAttribute("msg", "注解版,你好!");
              return "hello";
          }
      }
    
    
    • @Controller是为了让Spring IOC容器初始化时自动扫描到;

    • @RequestMapping是为了映射请求路径,这里因为只有方法上都有映射所以访问时应该是/hello;

    • 方法中声明Model类型的参数是为了把Action中的数据带到视图中;

    • 方法返回的结果是视图的名称hello,加上配置文件中的前后缀变成WEB-INF/jsp/hello.jsp。

  7. 在WEB-INF/jsp目录下创建hello.jsp

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <html>
      <head>
          <title>注解跳转页</title>
      </head>
      <body>
          ${msg}
      </body>
      </html>
    
  8. 配置Tomcat,启动项目测试!
    注解版测试

小结

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

  1. 新建一个web项目

  2. 导入相关jar包

  3. 编写web.xml , 注册DispatcherServlet

  4. 编写springmvc配置文件

  5. 接下来就是去创建对应的控制类 , controller

  6. 最后完善前端视图和controller之间的对应

  7. 测试运行调试.

使用springMVC必须配置的三大件:处理器映射器、处理器适配器、视图解析器

通常,我们只需要手动配置视图解析器,而处理器映射器和处理器适配器只需要开启注解驱动即可,而省去了大段的xml配置

posted @ 2022-01-25 16:25  卧龙戏公瑾  阅读(42)  评论(0编辑  收藏  举报