社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
- 2017年9月30日 本文简略介绍了Spring Framework以及Spring MVC,然后通过类配置的方式提供了一个最简单的demo
- 2017年10月1日 添加了源码地址
Spring框架是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架
Spring框架提供的灵活的基于核心Spring功能的MVC网页应用程序框架
2004年3月,Spring 1.0
发布 ,从此开启Spring 1.x时代。Spring项目开发基本都是使用xml配置。xml配置会随着项目的扩大而变大,而且配置繁杂,容易出错。
2006年10月,Spring 2.0
发布。Spring 2.x提供了声明Bean的注解,大大减少了配置。
2009年12月,Spring 3.0
发布;2013年12月,Spring 4.0
发布,从3.x到4.x提供的Java类配置,大大减少了以前纷繁复杂的配置。
1. 右键项目->Add frameword support
2. 修改pom.xml
<?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>groupId</groupId>
<artifactId>Demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<spring.version>4.1.7.RELEASE</spring.version>
</properties>
<dependencies>
<!-- 添加Servlet支持 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
<!-- 添加jstl支持 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- 添加Spring支持 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
</project>
1. 当前目录结构
2. 修改目录结构
1. 在config下新建文件DemoServiceConfig.java
package com.demo.config;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
@ComponentScan(value={"com.demo.service"})
@MapperScan("com.demo.persist")
@EnableTransactionManagement(proxyTargetClass=true)
@EnableAsync
public class DemoServiceConfig {
}
2. 在config下新建DemoWebConfig.java
package com.demo.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.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@EnableWebMvc
@ComponentScan("com.demo.controller")
public class DemoWebConfig extends WebMvcConfigurerAdapter {
@Bean
public InternalResourceViewResolver getInternalResourceViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
return resolver;
}
}
3. 在config下新建SpringMvcInitializer.java
package com.demo.config;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import javax.servlet.Filter;
public class SpringMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
protected Class<?>[] getRootConfigClasses() {
return new Class[] { DemoServiceConfig.class };
}
protected Class<?>[] getServletConfigClasses() {
return new Class[] { DemoWebConfig.class };
}
protected String[] getServletMappings() {
return new String[] { "/" };
}
protected Filter[] getServletFilters() {
CharacterEncodingFilter charFilter = new CharacterEncodingFilter();
charFilter.setEncoding("UTF-8");
charFilter.setForceEncoding(true);
return new Filter[] { charFilter };
}
}
package com.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
public class DemoController {
@RequestMapping(value = "/demo")
public String demo(HttpServletRequest request, HttpServletResponse response) {
return "demo";
}
}
2. 添加视图
在/WEB-INF/下添加目录jsp,在jsp下添加demo.jsp。该结构要与DemoWebConfig.java中配置的相同。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>demo</title>
</head>
<body>
demo
</body>
</html>
3. 最终项目结构
1. localhost:8080
2. localhost:8080/demo
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!