springboot+mybatis+security+springMVC(四)

上一篇说到了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类的注解和添加方法

1.配置pom.xml

在原有基础上添加如下依赖


	    
            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
                    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
            
            
        
	

	


2.新建config包及移动WebSecurityConfig.java到该目录下

项目结构如下图:
springboot+mybatis+security+springMVC(四)_第1张图片

3.新建WebMvcConfig.java

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/");
    }
	
}

4.在src/main/webapp目录下新建WEB-INF/views/index.jsp

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

5.修改SysUserController.java

修改注解@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";
	}

}

6.测试

启动项目,浏览器输入地址http://localhost:8899/user/index 输入用户名密码(之前配置security时数据库中的账号密码),访问到index.jsp页面。

注:其中很多配置都可以直接通过application.properties配置,我们使用代码配置更方便理解工作原理,各个模块有问题的地方可以去相关官网查看。

你可能感兴趣的:(后端开发)