【SSM】SpringMVC学习笔记-DAY1

一、案例——第一个SpringMVC应用

1. 创建项目,引入jar包

在这里插入图片描述

2.配置前端控制器

在web.xml中配置SpringMVC的前端控制器DispatcherServlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
<!--        配置前端过滤器-->
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--        初始化加载配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-config.xml</param-value>
        </init-param>
<!--        表示容器在启动时立即加载Servlet-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

<servlet>中配置SpringMVC的前端控制器DispatcherServlet,并通过其子元素<initparam>配置了SpringMVC配置文件的位置,<load-on-startup>元素中的1表示容器在启动时立即加载这个servlet。
<servlet-mapping>中,通过<url-pattern>元素的“/”拦截所有url,并交由DispatcherServlet处理。

3.创建Controller类

创建com.ssm.controller,创建控制器类ControllerTest,实现Controller接口

package com.ssm.controller;

import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ControllerTest implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        //       创建modelandview对象;
        ModelAndView m= new ModelAndView();
//       向模型对象中添加msg字符串对象;
        m.addObject("msg","第一个SpringMVC程序");
//       设置返回视图路径
        m.setViewName("/WEB-INF/jsp/welcome.jsp");
        return m;
    }
}

4.创建SpringMVC配置文件

创建springmvc-config.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 http://www.springframework.org/schema/beans/spring-beans.xsd">

<!--    配置处理器Handle,映射"controllerTest"请求-->
    <bean name="/controllerTest" class="com.ssm.controller.ControllerTest"/>
<!--    处理器映射,将处理器的Handle的name作为url进行查找-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--    处理器适配器,配置对处理器中handleRequest()方法的调用-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--    视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
</beans>

首先定义一个名称“/ControllerTest”的Bean,该Bean会将控制器类ControllerTest映射到请求中。
然后配置了处理器映射器BeanNameUrlHandlerMapping和处理器适配器SimpleControllerHandlerAdapter,其中处理器映射器用于将处理器Bean中的name进行处理器查找,而处理器适配器用于完成对ControllerTest处理器中handleRequest()方法的调用。
最后配置了视图解析器来解析结果视图。

5.创建视图页面


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>入门程序</title>
</head>
<body>
    ${msg}
</body>
</html>

6.启动项目

在这里插入图片描述


SpringMVC程序执行流程:
(1)用户通过浏览器向服务器发送请求,请求会被Spring MVC的前端控制器DispatcherServlet所拦截。
(2)DispatcherServlet拦截到请求后,会调用HandlerMapping处理器映射器。
(3)处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有就生成)一并返回给DispatcherServlet。
(4)DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理器适配器)。
(5)HandlerAdapter会调用并执行Handler(处理器),这里的处理器就是程序中编写的Controller类,也被称为后端控制器。
(6)Controller执行完成后,会返回一个ModelAndView对象,该对象中包含视图名或包含模型与视图名。
(7)HandlerAdapter将ModelAndView对象返回给DispatcherServlet。
(8)DispatcherServlet会根据ModelAndView对象选择一个合适的ViewResolver(视图解析器)。
(9)ViewResolver解析后,会向DispatcherServlet中返回具体的View(视图)。
(10)DispatcherServlet对View进行渲染(即将模型数据填充至视图中)。
(11)视图渲染结果会返回给客户端浏览器显示。

2.SpringMVC的注解

1.DispatcherServlet

2.Controller

该注解在使用时不需要再实现Controller接口,只需要将@Controller注解加入控制器类上,然后将Spring的扫描机制找到了标注了该注解的控制器即可。

3.RequestMapping注解类型

1.@RequestMapping注解

Spring通过@Controller注解找到相应控制器类,还需要知道控制器内部对每一个请求是如何处理的。
RequestMapping用于映射一个请求或一个方法,其注解形式为@RequestMapping,可以使用该注解标注在一个方法或一个类上。

  1. 标注在方法上
    当标注在一个方法上,该方法将成为一个请求处理方法,它会在程序接收到对应URL请求时被调用。
  2. 标注在类上
    该类中的所有方法都将映射为相对于类级别的请求,表示该控制器所处理的所有请求都被映射到value属性值所指定的路径下。

2.@RequestMapping注解的属性

在这里插入图片描述当value是唯一属性值时可以省略属性名。

3.组合注解

  • @GetMapping:匹配GET方式的请求。
  • @PostMapping:匹配POST方式的请求。
  • @PutMapping:匹配PUT方式的请求。
  • @DeleteMapping:匹配DELETE方式的请求。
  • @PatchMapping:匹配PATCH方式的请求。

4.请求处理方法的参数类型和返回类型

4. ViewResolve(视图解析器)


3.应用案例——基于注解的SpringMVC应用

3.1 搭建项目环境

创建项目、导包

3.2 修改配置文件

在springmvc-config.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"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd

">
<!--    指定需要扫描的包-->
    <context:component-scan base-package="com.ssm.controller"/>

<!--    定义视图解析器-->
    <bean id="ViewResoler" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--        设置前缀-->
        <property name="prefix" value="/WEB_INF/jsp/"/>
<!--        设置后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

首先通过组件扫描器指定了需要扫描的包,然后定义了视图解析器,并在视图解析器中设置了视图文件的路径前缀和文件后缀名。

3.3 修改Controller类

package com.ssm.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Controller

@RequestMapping(value = "/controll")
public class ControllerTest {
    @RequestMapping(value = "/annotationController")
    public String handleRequest(HttpServletRequest arg0, HttpServletResponse arg1, Model model) throws Exception{
       model.addAttribute("msg","第一个SpringMVC程序");
        return "welcome";
    }
}

3.4 启动项目,测试应用

发布了22 篇原创文章 · 获赞 1 · 访问量 851

猜你喜欢

转载自blog.csdn.net/weixin_43651049/article/details/103998711