SpringMVC中不使用xml配置文件的项目


想起之前提起来springmvc就是xml配置文件,但是最近看了一些书籍发现spring已经支持类的方式了,便一边学习,一边记录
其中使用的开发工具是idea

1 SpringMVC无XML项目

1.1 SpringMVC项目预览

不是使用springboot的,因此搭建完毕后需要使用tomcat来启动项目
在这里插入图片描述

1.2 pom.xml

<dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-web-api</artifactId>
      <version>7.0</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.9.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.2.9.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!-- 使用slf4j和logback作为日志 -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.25</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.16</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.16</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
      <version>1.7.25</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>1.2.3</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-access</artifactId>
      <version>1.2.3</version>
    </dependency>

1.3 配置SpringMVC

之前配置SpringMVC都是使用的springmvc.xml文件,然后在webxml中引用即可
使用配置类的方式来配置类似于springmvc.xml中的文件

package cn.jzh.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;

@Configuration
@EnableWebMvc
@ComponentScan("cn.jzh")
public class MyMvcConfig {

    /**
     * 此处相当于web项目中 springmvc.xml文件
     */
    @Bean
    public InternalResourceViewResolver viewResolver (){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        viewResolver.setViewClass(JstlView.class);
        return viewResolver;
    }
}

1.4 配置Web

之前配置web文件都是在webapp\WEB-INF\web.xml中的,现在不用xml文件那么使用配置类如下:

package cn.jzh.config;

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

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

public class WebInitializer implements WebApplicationInitializer {

    /**
     * 此处相当于  web项目中 web.xml文件
     */
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.register(MyMvcConfig.class);
        context.setServletContext(servletContext);

        ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(context));
        dispatcher.addMapping("/");
        dispatcher.setLoadOnStartup(1);

    }
}

1.5 简单控制层

package cn.jzh.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class JspController {
    private final static Logger log = LoggerFactory.getLogger(JspController.class);
    @RequestMapping(value="/index")
    public String hello(){
        System.out.println("=======================");
        log.info("jsp的demo日志。。。。。。。。。。。");
        System.out.println("=======================");
        return "index";
    }
}

注意:不要添加@ResponseBody注解,否则页面不会跳转而是在浏览器上显示一个index的字符串

1.6 配置日志

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="5 seconds">
    <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
        <restJUL>true</restJUL>
    </contextListener>
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%-4relative %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</pattern>
        </encoder>
    </appender>
    <root level="DEBUG">
        <appender-ref ref="console" />
    </root>
</configuration>

此处的日志配置文件可能不太明白,推荐日志参考文件:Logback文件详解

1.7 运行测试

其中两个index.xml文件就不在此放了,就是为了验证能否跳转到WEB-INF中的文件,没有具体逻辑和代码
直接放在tomcat中就可以运行测试

点击此处了解xml配置的springmvc项目

posted @ 2021-01-07 11:30  上善若泪  阅读(618)  评论(0编辑  收藏  举报