SpringMVC:HelloWorld

一、概述

1、什么是SpringMVC

Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet。
Spring MVC 是结构最清晰的 Servlet+JSP+JavaBean 的实现,是一个典型的教科书式的 MVC 构架,不像 Struts 等其它框架都是变种或者不是完全基于 MVC 系统的框架。
Spring MVC 角色划分清晰,分工明细,并且和 Spring 框架无缝结合。Spring MVC 是当今业界最主流的 Web 开发框架,以及最热门的开发技能。
在 Spring MVC 框架中,Controller 替换 Servlet 来担负控制器的职责,用于接收请求,调用相应的 Model 进行处理,处理器完成业务处理后返回处理结果。Controller 调用相应的 View 并对处理结果进行视图渲染,最终客户端得到响应信息。
Spring MVC 框架采用松耦合可插拔的组件结构,具有高度可配置性,比起其它 MVC 框架更具有扩展性和灵活性。
此外,Spring MVC 的注解驱动和对 REST 风格的支持,也是它最具特色的功能。无论是在框架设计,还是扩展性、灵活性等方面都全面超越了 Struts2 等 MVC 框架。并且由于 Spring MVC 本身就是 Spring 框架的一部分,所以可以说与 Spring 框架是无缝集成,性能方面具有先天的优越性,对于开发者来说,开发效率也高于其它的 Web 框架,在企业中的应用越来越广泛,成为主流的 MVC 框架。

2、SpringMVC的优点

  • 可以支持各种视图技术,而不仅仅局限于JSP;
  • 与Spring框架集成(如IOC容器、AOP等);
  • 清晰的角色分配:前端控制器(dispatcherServlet) , 请求到处理器映射(handlerMapping), 处理器适配器(HandlerAdapter), 视图解析器(ViewResolver)。
  • 支持各种请求资源的映射策略。

二、初体验HelloWorld

1、创建一个maven项目,添加web依赖。

2、在pom.xml文件中引入依赖

        <!-- SpringMVC -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.1</version>
        </dependency>
        <!-- ServletAPI -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring5 -->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
            <version>3.0.14.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.9</version>
        </dependency>

3、在web.xml文件中配置springmvc的Dispatcher前端过滤器,设置springmvc配置文件的名称和位置

Spring MVC 初始化时将在应用程序的 WEB-INF 目录下查找配置文件,该配置文件的命名规则是“servletName-servlet.xml”,例如 DispatcherServlet-servlet.xml。也可以将 Spring MVC 的配置文件存放在应用程序
目录中的任何地方,但需要使用 servlet 的 init-param 元素加载配置文件,通过 contextConfigLocation
参数来指定 Spring MVC 配置文件的位置。

    <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:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <!--/ 过滤所有请求,不包括jsp文件
            /*过滤所有请求,包括jsp文件
        -->
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

4、配置springmvc.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"
       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">

    <!--springmvc的三大核心是处理器映射器,处理器适配器,视图解析器-->
    <!--开启注解扫描-->
    <context:component-scan base-package="com.kw.mvc"></context:component-scan>
    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"></property>
        <property name="suffix" value=".html"></property>
    </bean>

    <!--让springmvc不去处理静态资源,如.css .js .html等-->
    <mvc:default-servlet-handler/>

    <!--开启mvc注解驱动,
    在springmvc中一般采用@RequestMapping注解来完成映射关系,
    要想使@RequestMapping注解生效,需要向上下文注册处理器映射器(DefaultAnnoationHandlerMapping),
    处理器适配器(AnnotationMethodHandlerAdapter),
    annotation-driven这个配置就相当于自动配置了springmvc的处理器适配器和处理器映射器-->
    <mvc:annotation-driven/>
</beans>

5、创建一个Controller类,编写跳转逻辑。

@Controller
public class HelloController {
    @RequestMapping("/hello")
    private String hello(){
        return "success";
    }
}

6、测试

通过在html页面发送请求,访问Controller方法,通过视图解析器解析返回页面。
在html页面的路径中,/默认代表访问localhost:8080,例如:
<a href="/target">访问target页面</a>
访问路径为http://localhost:8080/target,
注意:
1、如果web程序在部署时设置上下文路径不是/,此时访问路径就需要额外增加上下文路径,例如上下文路径为
此时访问路径就需要增加上下文路径:http://localhost:8080/SpringMVC/target
2、由于上下文路径会发生变化,所以我们一般建议进行如下设置,例如:
Tyemeleaf:<a th:href="@{/target}">访问target页面</a>
JSP:<a href="${pageContext.request.contextPath}//target">测试</a>
通过这种方式,在检索到路径为相对路径时就会自动增加上下文路径

posted @ 2021-12-21 09:57  amo丶k  阅读(89)  评论(0编辑  收藏  举报