SpringMVC 环境搭建&入门

SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 中。

SpringMVC 已经成为目前最主流的MVC框架之一,并且随着Spring3.0 的发布,全面超越 Struts2,成为最优秀的 MVC 框架。它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口。同时它还支持 RESTful 编程风格的请求。

三层架构

快速入门

结合JavaWEB的Servlet一起看

  1. 导入SpringMVC相关坐标
xml 复制代码
<!--Spring坐标-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.0.5.RELEASE</version>
</dependency>
 
<!--SpringMVC坐标-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.0.5.RELEASE</version>
</dependency>
 
<!--Servlet坐标-->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
</dependency>
 
<!--Jsp坐标-->
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
</dependency>
  1. 配置SpringMVC核心控制器DispathcerServlet
xml 复制代码
<servlet>
    <!-- servlet的别名 -->
    <servlet-name>DispatcherServlet</servlet-name>
    <!--servlet对应的类-->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--servlet初始化-->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <!-- servlet的创建时机,可写可不写 -->
    <load-on-startup>1</load-on-startup>
</servlet>
 
<!-- 映射,将servlet与url绑定 -->
<servlet-mapping>
    <!-- servlet的名称,要和上面的名称一致-->
    <servlet-name>DispatcherServlet</servlet-name>
    <!-- servlet的访问路径-->
    <url-pattern>/</url-pattern>
</servlet-mapping>

也可以使用配置类替换web.xml

java 复制代码
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {

    /**
     * 加载springmvc配置类
     */
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        //初始化WebApplicationContext对象
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        //加载指定配置类
        ctx.register(SpringMvcConfig.class);
        return ctx;
    }

    /**
     * 设置由springmvc控制器处理的请求映射路径
     */
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    /**
     * 加载spring配置类
     */
    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
        // 上面是因为之加入了MVC的依赖,如果项目中还有Spring的配置文件,则需要加入下面的代码:
        // AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        // ctx.register(SpringConfig.class);
        // return ctx;
    }
}

上述的配置方式,Spring还提供了一种更简单的配置方式,可以不用再去创建AnnotationConfigWebApplicationContext对象,不用手动register对应的配置类:

java 复制代码
public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {

    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}
  1. 创建Controller类和视图页面
  2. 使用注解配置Controller类中业务方法的映射地址

如果方法直接返回字符串,springmvc会把字符串当成页面的名称在项目中进行查找返回,因为不存在对应返回值名称的页面,所以会报404错误,找不到资源。设置返回数据为json格式(加**@ResponseBody****注解)。**

java 复制代码
@Controller
public class UserController {
    
    @ResponseBody
    @RequestMapping("/save")
    public String save(){
        System.out.println("user save ...");
        return "{'info':'springmvc'}";
    }
}
  1. 配置SpringMVC核心文件 spring-mvc.xml
xml 复制代码
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    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
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">
 
    <!--配置注解扫描-->
    <context:component-scan base-package="com.qaomuu"/>
</beans>

也可以创建配置类,指定要扫描的包

java 复制代码
@Configuration
@ComponentScan("com.qaomuu")
public class SpringMvcConfig {
}
  1. 客户端发起请求测试,部署到Tomact中,并启动,访问http://localhost:8080/save
相关推荐
希忘auto36 分钟前
Java之线程篇四
java
蓝黑20201 小时前
Java知识点小结3:内存回收
java·gc
Yz98761 小时前
Hadoop里面MapReduce的序列化与Java序列化比较
java·大数据·jvm·hadoop·分布式·mapreduce·big data
凯哥Java1 小时前
优化批处理流程:自定义BatchProcessorUtils的设计与应用
java·数据库·mysql
拉玛干1 小时前
社团周报系统可行性研究-web后端框架对比-springboot,django,gin
数据库·python·spring·golang
njnu@liyong1 小时前
AOP-前置原理-怎么判断和拦截?
java·aop·拦截
末央&1 小时前
【C++】内存管理
java·开发语言·c++
心之语歌2 小时前
设计模式 享元模式(Flyweight Pattern)
java·设计模式·享元模式
MTingle2 小时前
【Java EE】文件IO
java·java-ee
coffee_baby2 小时前
享元模式详解:解锁高效资源管理的终极武器
java·spring boot·mybatis·享元模式