SpringMVC基本使用

本文详细介绍了SpringMVC的基本配置和使用步骤,包括依赖配置、SpringMVC核心控制器DispatcherServlet的配置、Controller的创建以及静态资源的放行。此外,还讲解了如何处理乱码问题和通过Bean加载过滤器控制表现层的加载。通过对web.xml和spring-mvc.xml的配置,展示了如何使SpringMVC正常运行并处理请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringMVC基本使用

1、基本配置

1.1 常规配置

1.1.1 依赖jar包配置

<!-- servlet3.1规范的坐标 -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>
<!--jsp坐标-->
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.1</version>
    <scope>provided</scope>
</dependency>
<!--spring的坐标-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.1.9.RELEASE</version>
</dependency>
<!--spring web的坐标-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.1.9.RELEASE</version>
</dependency>
<!--springmvc的坐标-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.1.9.RELEASE</version>
</dependency>

1.1.2 配置文件

  • 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:aop="http://www.springframework.org/schema/aop"
           xmlns:p="http://www.springframework.org/schema/p"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://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/aop
            https://www.springframework.org/schema/aop/spring-aop.xsd
    "
    >
        <context:component-scan base-package="org.example"/>
    
    </beans>
    

    注:SpringMVC依赖于Spring实现,因此需要将控制器(Controller)交给Spring管理

  • web.xml

    在web.xml中定义SpringMVC的核心控制器,用于将请求对象转发到对应的业务处理器中(需要配合Controller的@RequestMapping注解),等同于Servlet配置

    <?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>DispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:spring-mvc.xml</param-value>
            </init-param>
        </servlet>
        
    <!--    配置访问路径拦截-->
        <servlet-mapping>
            <servlet-name>DispatcherServlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
    </web-app>
    

    注:/ 与/* 的区别

  • /:在tomcat中会默认为该路径配置一个Servlet,如果在我们的项目中配置了”/“,则会覆盖tomcat的默认配置,当其他url-parrern都不能匹配时,就会执行该Servlet。

  • /* :这种配置形式是拦截所有以”/“开头的访问路径,并覆盖掉其他的所有的Servlet, 所有的请求都会在该Servlet中执行。通常这种Servlet是作为一个Filter使用,并通过doFilter() 方法来使请求继续。

1.1.3 定义控制器

//将Controller交给Spring管理
@Controller
public class DomeController {
	//定义save方法的访问路径
    @RequestMapping("/save")
    //设置String返回值,用于指定请求完成之后的跳转页面
    public String save(){
        System.out.println("dome mvc controller running ....");
        return "success.jsp";
    }
}

1.1.4 Controller加载控制

  • 在规范格式开发中,SpringMVC的处理器只加载对应的bean,为避免加入无效的Bean,可以通过Bean加载过滤器进行包含设定和排除设定
  • 表现层的Bean标签通常标注为@Controller

xml方式实现加载过滤:

<context:component-scan base-package="com.itheima">
    <context:include-filter
                            type="annotation"
                            expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

Bean加载控制说明:

  • 业务层与数据层的bean加载由Spring控制实现
  • 表现层的Bean加载由SpringMVC单独控制
    • 表现层处理器bean使用注解@Controller声明
    • bean加载控制可以使用 context:include-filter 或者 context:exclude-filter 实现
    • 通常通过注解进行加载控制

1.1.5 静态资源放行

  • 对于惊涛资源,我们不需要处理器进行处理,可以直接放行
  • 放行方法:在spring-mvc.xml文件中,配置
<mvc:default-servlet-handler/>
  • **注:**如果在spring-mvc.xml文件中使用了默认静态资源放行,就必须同时配置一个注解驱动,否则Controller中定义的 @RequestMapping("")会失效

    <mvc:annotation-driven />
    
    • 因为在原始的SpringMVC中,会默认帮我们注册一个AnnotationMethodHandlerAdapter 的bean,这个bean能够识别并处理@RequestMapping 注解,
    • 当我们定义了mvc:default-servlet-handler/时,框架就不会帮我们注册,所以我们需要手动注册一个可以处理@RequestMapping 注解的bean

1.1.6 乱码处理

SpringMVC提供专用的中文字符过滤器,用于处理乱码问题

配置在 web.xml 里面

<!--乱码处理过滤器,与Servlet中使用的完全相同,差异之处在于处理器的类由Spring提供-->
<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值