上一篇说到了springboot+mybatis+security的整合,这里在上一篇的基础上增加springMVC模块的简单整合。
先来看下大概流程:
1.配置pom.xml
2.新建一个config包,存放所有配置文件,并将之前的WebSecurityConfig.java配置类移动到这个包里面
3.新建WebMvcConfig.java配置类
4.在目录src/main/webapp下新建一个WEB-INF->views目录,并在views目录下新建一个index.jsp文件(如果配置好pom.xml文件后没有这个目录,需要刷新下项目目录)
5.修改SysUserController.java类的注解和添加方法
在原有基础上添加如下依赖
org.apache.tomcat.embed
tomcat-embed-jasper
provided
javax.servlet
javax.servlet-api
provided
javax.servlet
jstl
然后在标签下的标签下新添加一个资源文件如下:
${project.basedir}/src/main/webapp
保存后可能需要手动maven update下(大部分不用)
刷新项目看看有没有出现src/main/webapp目录,有表示添加成功。
完整pom.xml文件:
4.0.0
cn.zoulang
frame
0.0.1-SNAPSHOT
war
org.springframework.boot
spring-boot-starter-parent
2.1.2.RELEASE
UTF-8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-tomcat
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-tomcat
provided
org.apache.tomcat.embed
tomcat-embed-jasper
provided
javax.servlet
javax.servlet-api
provided
javax.servlet
jstl
com.oracle
ojdbc8
12.2.0.1.0
system
${basedir}/lib/ojdbc8.jar
mysql
mysql-connector-java
runtime
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.0.0
com.alibaba
druid
1.1.12
org.springframework.boot
spring-boot-starter-security
org.springframework.boot
spring-boot-starter-log4j2
org.apache.logging.log4j
log4j-1.2-api
2.6.2
${project.basedir}/src/main/resources
${project.basedir}/src/main/webapp
org.apache.maven.plugins
maven-compiler-plugin
3.1
1.8
UTF-8
${env.JAVA_HOME}/jre/lib/rt.jar;${env.JAVA_HOME}/jre/lib/jce.jar
${project.basedir}/src/main/webapp/WEB-INF/lib
org.springframework.boot
spring-boot-maven-plugin
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
@Configuration
//@EnableWebMvc // 添加该注解后将替换掉默认的配置,不使用该注解时只是重新配置部分内容
public class WebMvcConfig implements WebMvcConfigurer {
/**
* 解决跨越问题
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
/* 设置访问源地址 */
.allowedOrigins("*")
.allowCredentials(true)
/* 设置访问源请求方法 */
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
/* 设置访问源请求头 */
.allowedHeaders(
"X-PINGOTHER",
"Content-Type",
"X-Requested-With",
"accept",
"Origin",
"Access-Control-Request-Method",
"Access-Control-Request-Headers",
"Authorization",
"x-xsrf-token")
.allowCredentials(true);
}
/**
* 配置内容协商,为同一个url指向的资源提供不同的展现形式,实现最佳匹配
*/
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
/* 是否通过请求Url的扩展名来决定media type */
configurer.favorPathExtension(true)
/* 不检查Accept请求头 */
.ignoreAcceptHeader(true)
.parameterName("mediaType")
/* 设置默认的media type */
.defaultContentType(MediaType.TEXT_HTML)
/* 请求以.html结尾的会被当成MediaType.TEXT_HTML */
.mediaType("html", MediaType.TEXT_HTML)
/* 请求以.json结尾的会被当成MediaType.APPLICATION_JSON */
.mediaType("json", MediaType.APPLICATION_JSON)
/* 请求以.xml结尾的被当成MediaType.APPLICATION_XML */
.mediaType("xml", MediaType.APPLICATION_XHTML_XML);
/* 其他 */
}
/**
* 配置视图解析
* 如果在application.properties里面配置了
* spring.mvc.view.prefix=XX
* spring.mvc.view.suffix=XX
* 那么这里就不必配置,二者配置其一即可
*/
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/views/", ".jsp");
registry.enableContentNegotiation(new MappingJackson2JsonView());
}
/**
* 配置静态资源
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("/**");
registry.addResourceHandler("/app/**").addResourceLocations("/app/");
registry.addResourceHandler("/files/**").addResourceLocations("/files/");
}
}
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
Insert title here
this is my first springMVC config
修改注解@RestController为@Controller,并添加方法:
@RequestMapping("/index")
public String index() {
return "index";
}
SysUserController.java
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import cn.zoulang.frame.modules.sys.model.SysUser;
import cn.zoulang.frame.modules.sys.service.SysUserService;
@Controller
//@RestController
@RequestMapping("/user")
public class SysUserController {
@Autowired
private SysUserService sysUserService;
@RequestMapping("/query")
public List findUserByName() {
return sysUserService.findAll();
}
@RequestMapping("/index")
public String index() {
return "index";
}
}
启动项目,浏览器输入地址http://localhost:8899/user/index 输入用户名密码(之前配置security时数据库中的账号密码),访问到index.jsp页面。
注:其中很多配置都可以直接通过application.properties配置,我们使用代码配置更方便理解工作原理,各个模块有问题的地方可以去相关官网查看。