Java configuration method using Spring MVC


Using Spring MVC based on Java configuration

In the previous section, we learned how to use Spring MVC based on XML configuration and annotations, involving three XML configuration files: Spring configuration file (spring-config.xml), Spring MVC configuration file (spring-mvc-config.xml ), Web deployment description file (web.xml), in this section, we learn how to use Spring MVC based on Java configuration classes and annotations through cases, only Java configuration classes, no XML configuration files.

1. Create a Maven project

Maven project - SpringMvcDemo02
insert image description hereinsert image description here

2. Add related dependencies

Add relevant dependencies in the pom.xml file
insert image description here

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>net.army.spring</groupId>
    <artifactId>SpringMvcDemo02</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <!-- spring.version -->
        <spring.version>5.3.25</spring.version>
    </properties>

    <dependencies>
        <!--Spring核心-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--Spring Bean-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--Spring容器-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--Spring测试-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--Spring数据库支持-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--数据库驱动工具包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
        <!--数据库连接池框架-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.24</version>
        </dependency>
        <!--日志框架-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!--Spring AOP-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--AspectJ支持-->
        <dependency>
            <groupId>aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.5.4</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.6</version>
            <scope>runtime</scope>
        </dependency>
        <!--单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
        <!--Spring Web-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--Spring MVC-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--JSP标准标签库-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!--Servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <!--对json的支持-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.7</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.7</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.7</version>
        </dependency>
        <!--对xml的支持-->
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>2.5.3</version>
        </dependency>
    </dependencies>
</project>

Click the refresh button to download (update) dependencies
insert image description here
View dependencies
insert image description here

3. Create a log properties file

Create log4j.properties in the resources directory
insert image description here

Fourth, create a home page file

Create a templates subdirectory in resources, and then create index.jsp in it
insert image description here

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>首页</title>        
    </head>
    <body>
        <h1 style="text-align: center">Welcome to Spring MVC World~</h1>
        <h3 style="text-align: center"><%= new Date() %></h3> <!--JSP表达式元素-->
    </body>
</html>

5. Create a Spring MVC configuration class

Create the net.army.spring.config package, and then create the SpringMvcConfig class inside
insert image description here

package net.army.spring.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

/**
 * 作者:梁辰兴
 * 日期:2023/5/11
 * 功能:Spring MVC配置类
 */
@Configuration // 表明当前类是配置类
@EnableWebMvc  // 启用Web MVC功能
@ComponentScan("net.army.spring") // 组件扫描
public class SpringMvcConfig {
    
    
    // 定义内部资源视图解析器
    @Bean
    public InternalResourceViewResolver viewResolver() {
    
    
        // 创建内部资源视图解析器对象
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        // 设置内部资源视图解析器对象属性
        viewResolver.setViewClass(JstlView.class); // 设置视图类
        viewResolver.setPrefix("/WEB-INF/classes/templates/"); // 设置前缀
        viewResolver.setSuffix(".jsp"); // 设置后缀
        // 返回内部资源视图解析器对象
        return viewResolver;
    }
}

6. Create a Web application initialization configuration class

Now the Java configuration method is gradually replacing the XML configuration method. The WebApplicationInitializer interface can be regarded as a substitute for web.xml. By implementing the WebApplicationInitializer interface, servlets, listeners, etc. can be added to it, and this interface implementation class will be loaded when the Web project is loaded, so that Play the same role as web.xml.

Create the MyWebAppInitializer class in the net.army.spring.config package
insert image description here

package net.army.spring.config;

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;

/**
 * 作者:梁辰兴
 * 日期:2023/5/11
 * 功能:Web应用初始化配置类
 */
public class MyWebAppInitializer implements WebApplicationInitializer {
    
    
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
    
    
        // 创建Web应用容器(基于注解配置类的Web应用容器)
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        // 注册配置类
        context.register(SpringMvcConfig.class); // 对应先前的spring-mvc-config.xml文件
        // 绑定当前的ServletContext对象 - 方法的参数(servletContext)
        context.setServletContext(servletContext);
        // 注册Spring MVC的前端控制器(DispatcherServlet)
        ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(context));
        // 过滤一切资源请求
        servlet.addMapping("/");
        // 设置启动加载顺序
        servlet.setLoadOnStartup(1);
    }
}

7. Create a presentation controller

Create the net.army.spring.controller subpackage, and then create the DemoController class in it
insert image description here

package net.army.spring.controller;

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

/**
 * 作者:梁辰兴
 * 日期:2023/5/11
 * 功能:演示控制器
 */
@Controller
public class DemoController {
    
    
    @GetMapping("/index")
    public String index() {
    
    
        // 返回逻辑视图名
        return "index";
    }
}

Eight, configure the Tomcat server

Click [Edit Configuration…] under [Current File]
insert image description hereand click the plus sign. [Local]
insert image description here
configuration is shown in the figure below, and finally click [Fix]
insert image description hereand click [Artifacts]-[+]-[Web Application: Exploded]
insert image description here
to enter Project name: SpringMvcDemo02, add dependencies to the output directory and the output of project compilation, click [Put into /WEB-INF/lib] and click the [OK]
insert image description herebutton
insert image description here
At this point you can see that SpringMvcDemo02 has been deployed to the server
insert image description here
Switch to [ Server】tab

insert image description here

9. Start the server and check the effect

Visit: http://localhost:8080/SpringMvcDemo02/index

insert image description here

Modify the demo controller, modify the mapping path,
insert image description here
restart the server, visit: http://localhost:8080/SpringMvcDemo02

insert image description here

Guess you like

Origin blog.csdn.net/m0_62617719/article/details/130628784