侧边栏壁纸

SpringMVC 入门教程(基于Java配置类)

2023年10月15日 414阅读 0评论 0点赞

1.介绍

SpringMVC 是 Spring 框架的一部分,用于构建 web 应用程序。它是一个 MVC (Model-View-Controller) 框架,可以帮助我们更加便捷地开发 web 应用。

2.开始之前

确保你已经安装了以下工具:

  • JDK 1.8 或更高
  • Maven
  • IDE(例如 IntelliJ IDEA 或 Eclipse)

3.创建一个 Maven 项目

在 IDE 中创建一个新的 Maven 项目,并选择 webapp 作为项目的类型。

4.在 pom.xml 中添加依赖

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.x.x.RELEASE</version>
</dependency>

5.创建Controller类

@RestController
public class HelloController {

    @RequestMapping("/controller")
    @ResponseBody
    public String hello() {
        System.out.println("user controller");
        return "{'module':'springmvc controller'}";
    }
}
  • @RestController
    这是一个组合注解,等同于@Controller和@ResponseBody的结合。
    当一个类使用了@RestController注解,它意味着这个类是一个Spring MVC控制器。
    由于它结合了@ResponseBody,所以这个控制器的方法返回值会自动被转换为JSON或XML响应,取决于客户端请求的Accept头部和配置的消息转换器。
  • @RequestMapping("/controller")
    这个注解用于指定一个URL映射,当用户访问/controller这个路径时,hello()方法会被调用。
    除了指定URL映射,@RequestMapping还可以用于指定HTTP方法(如GET、POST等)。
  • @ResponseBody
    这个注解告诉Spring MVC框架,该方法的返回值应当直接写入HTTP响应的body部分,而不是被解析为一个视图名称。
    在这个示例中,@ResponseBody实际上是冗余的,因为@RestController已经包含了这个功能。但在使用@Controller而不是@RestController的情况下,你会需要@ResponseBody来指示方法返回的是响应体内容。

6.创建springmvc配置类

创建一个名为 WebConfig 的Java类并使用 @Configuration 和 @EnableWebMvc 注解:

@Configuration
@ComponentScan(basePackages = "com.example.controller")
public class WebConfig implements WebMvcConfigurer {
}

7.创建servlet容器启动的配置类

import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

public class MyWebAppInitializer extends AbstractDispatcherServletInitializer {

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    @Override
    protected WebApplicationContext createRootApplicationContext() {
        AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
        rootContext.register(RootConfig.class); // 如果你有其他的Root配置类,例如安全配置或数据源配置
        return rootContext;
    }

    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext servletContext = new AnnotationConfigWebApplicationContext();
        servletContext.register(WebConfig.class); // 前面步骤中的WebConfig类
        return servletContext;
    }
}

现在,当你启动你的Web应用时,MyWebAppInitializer类将被自动识别并用于配置DispatcherServlet。

8.配置tomcat启动插件

在pom文件中插入如下代码:

<build>
    <plugins>
        <!-- Other plugins -->

        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <path>/yourAppName</path>  <!-- Application path -->
                <port>8080</port>          <!-- Port to run Tomcat -->
                <contextReloadable>true</contextReloadable>
            </configuration>
        </plugin>

    </plugins>
</build>

9.运行应用

在Tomcat或其他web服务器中运行应用,并访问 http://localhost:8080/yourAppName/controller,得到如下显示:

{
    "message": "Hello, SpringMVC test!"
}


0
打赏

—— 评论区 ——

昵称
邮箱
网址
取消
人生倒计时
舔狗日记