【SpringMVC】入门、静态资源处理(看来这篇我不信你不入门)

一、SpringMVC的介绍

Spring MVC 是一个基于 Java 的 Web 开发框架,它在构建 Web 应用程序时提供了良好的支持。Spring MVC 采用 MVC(模型-视图-控制器)架构模式,将应用程序的不同部分分离开来,使得开发更加模块化、灵活和可扩展。

Spring MVC 中,模型Model)表示应用程序的数据和业务逻辑,视图View)负责渲染模型数据以生成最终的用户界面,控制器Controller)接收来自用户的请求,并根据请求来调用相应的模型和视图。

Spring MVC 提供了丰富的功能和特性,例如请求映射、请求参数绑定、数据校验、视图解析、拦截器、异常处理等。它也与其他 Spring 模块(如 Spring Boot)紧密集成,使得开发和维护 Web 应用程序更加方便。

Spring MVC 是一个强大而灵活的框架,适用于构建各种规模的 Web 应用程序,并且具有良好的可扩展性和可测试性。

二、SpringMVC工作流程

SpringMVC采用了和自定义MVC相差不差的工作流程。

如自定义MVC的工作流程:

  1. 客户端浏览器发送请求url:http://localhost:8080/mvc/*.action?methodName=***
  2. 被中央控制器dispatchServlet接受*.action将url处理,截取到*
  3. 通过*在mvc.xml中寻找对应的子控制器
  4. 将子控制器进行实例化
  5. 同时由于实现implement modelDriven接口,所有参数自动封装成实体类中
  6. 动态调用方法后会有一个方法返回值,比如list
  7. 中央控制器dispatchServlet,通过list返回值会在mvc.xml中寻找对应的跳转页面
  8. 将页面数据渲染完毕展现用户

SpringMVC工作流程

  1. 客户端浏览器发送请求url:http://localhost:8080/mvc/*.action?methodName=***
  2. 被中央控制器dispatchServlet接受*.action将url处理,截取到/*
  3. 通过*在mvc.xml中寻找对应的子控制器,通过handlerMappering找;通过注解找
    <bean id="/*" class="com.web.action">
  4. 通过handlerAdapter实例化执行handler
  5. 执行handler会有返回值(modelAndview),返回给dispatchServlet
  6. dispatchServlet接受到视图,找到viewResovler视图解析器进行视图解析
  7. 得到view视图返回给dispatchServlet
  8. 将view经过渲染相应给客户

三、SpringMVC入门

这里面的其他依赖由MyBatis映射一对多和多对多关系配置(看完这篇不吃亏)后续更写

1、添加依赖

添加

        <!--        c标签对应的依赖-->
        <!-- jstl+standard -->
        <jstl.version>1.2</jstl.version>
        <standard.version>1.1.2</standard.version>
        <!-- spring -->
        <spring.version>5.0.2.RELEASE</spring.version>


 

        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>${standard.version}</version>
        </dependency>

2、创建spring-mvc.xml

resources新建一个文件spring-mvc.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 http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--1) 扫描com.tgq及子子孙孙包下的控制器(扫描范围过大,耗时)-->
    <context:component-scan base-package="com.tgq"/>

    <!--2) 此标签默认注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->
    <mvc:annotation-driven/>

    <!--3) 创建ViewResolver视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- viewClass需要在pom中引入两个包:standard.jar and jstl.jar -->
        <property name="viewClass"
                  value="org.springframework.web.servlet.view.JstlView"></property>
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

3、配置web.xml

找到我们的web.xml,在里面进行修改增加

<?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_3_1.xsd"
         version="3.1">
  <display-name>Archetype Created Web Application</display-name>
  <!-- Spring和web项目集成start -->
  <!-- spring上下文配置文件 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-context.xml</param-value>
  </context-param>
  <!-- 读取Spring上下文的监听器 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!-- Spring和web项目集成end -->

  <!-- 中文乱码处理 -->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <async-supported>true</async-supported>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- Spring MVC servlet -->
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--此参数可以不配置,默认值为:/WEB-INF/springmvc-servlet.xml-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <!--web.xml 3.0的新特性,是否支持异步-->
    <async-supported>true</async-supported>
  </servlet>
  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

4、测试

新建一个web包,下面创建一个类DemoController

package com.tgq.web;

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

/**
 * @软件包名 com.tgq.web
 * @用户 tgq
 * @create 2023-09-04 下午7:56
 * @注释说明:
 */
@Controller
public class DemoController {
    @RequestMapping(value = "/hello")
    public String hello() {
        System.out.println("被调用了。。。。");
        return "hello";
    }
}

利用tomcat启动

测试结果:

四、静态资源处理

我们在webapp里面创建一个存放静态资源的地方static,下面创建一个存放图片的地方image,我们把图片放在里面

然后启动tomcat服务器,直接访问是访问不到的

spring-mvc.xml里面新增一行,这里面可以找到任何static里面的文件,如想找jsp\css等,都可以利用这一行代码

    <!--4) 单独处理图片、样式、js等资源 -->
    <mvc:resources location="/static/" mapping="/static/**"/>

完整spring-mvc.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 http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--1) 扫描com.tgq及子子孙孙包下的控制器(扫描范围过大,耗时)-->
    <context:component-scan base-package="com.tgq"/>

    <!--2) 此标签默认注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->
    <mvc:annotation-driven/>

    <!--3) 创建ViewResolver视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- viewClass需要在pom中引入两个包:standard.jar and jstl.jar -->
        <property name="viewClass"
                  value="org.springframework.web.servlet.view.JstlView"></property>
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <!--4) 单独处理图片、样式、js等资源 -->
    <mvc:resources location="/static/" mapping="/static/**"/>
</beans>

重启tomcat服务器,手动输入静态资源地址就可以找到资源

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无法自律的人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值