整合SSM


整合SSM

整合顺序:

  1. 先写mybatis
  2. 再写spring
  3. 再写springmvc

导入Maven依赖

    
        
        
            junit
            junit
            4.12
        
        
        
            mysql
            mysql-connector-java
            5.1.47
        
        
        
            com.mchange
            c3p0
            0.9.5.2
        
        
        
            org.mybatis
            mybatis
            3.5.2
        
        
            org.mybatis
            mybatis-spring
            2.0.2
        
        
        
            org.springframework
            spring-webmvc
            5.2.0.RELEASE
        
        
            org.springframework
            spring-context
            5.2.0.RELEASE
        
        
            org.springframework
            spring-jdbc
            5.1.9.RELEASE
        
        
        
            javax.servlet
            servlet-api
            2.5
        
        
            javax.servlet.jsp
            jsp-api
            2.2
        
        
            javax.servlet
            jstl
            1.2
        
        
        
            org.projectlombok
            lombok
            1.16.10
        
    
	
    
        
            
                src/main/java
                
                    **/*.properties
                    **/*.xml
                
                false
            
            
                src/main/resources
                
                    **/*.properties
                    **/*.xml
                
                false
            
        
    

建立基本的包和框架

com.mao.model

存放实体类

com.mao.dao

跟数据库打交道的类,和mybatis局部配置文件image-20220316164750016



    

com.mao.service

com.mao.controller

mybatis-config.xml mybatis主配置文件

<?xml version="1.0" encoding="UTF-8"?>


    
    
        
        
    

    
    
        
    

applicationContext.xml spring主配置文件

<?xml version="1.0" encoding="UTF-8"?>



database.properties 数据库配置文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springmvc?useSSL=true&useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=123456

web.xml

这里首先要右键项目,添加web支持,才能生成web.xml文件

<?xml version="1.0" encoding="UTF-8"?>

 
 	



	
		DispatcherServlet
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			
			
              
			
			classpath:spring-mvc.xml
		
		
		1
	

		
	
		DispatcherServlet
		
		/
	
	
	
	
	
	  
        characterEncodingFilter  
        org.springframework.web.filter.CharacterEncodingFilter  
          
            encoding  
            utf8  
          
          
            forceEncoding  
            true  
          
 	  
	  
        characterEncodingFilter  
        /*  
 	
    
    
    
        15
    

spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>


    
    
    
    
    
	
	
		
        
	
    
	
    
	
	
        
        
        
        
        

        
        
        
        
        
        
        
        
        
    
       
	
       
       
	
    
	
   
       
       
       
       
   
    
   
   
   
       
       
       
       
   
    
	    
    	


image-20220316135907800

UserPage.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" %>
<%@page import="java.util.*,java.sql.*"
        contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>



    
    This is User page !!!
    
    



序号 用户账号 真实姓名 手机号码 QQ 微信号 状态
${user.id} ${user.userAccount} ${user.userName} ${user.userNumber} ${user.userQq} ${user.userVx} ${user.userState}

${pageContext.request.contextPath}获取当前项目绝对路径

注意:

使用注解@Component 创建的bean是与类同名首字母小写的bean
记得检查发布的项目下WEB-INF是否有lib包,因为在发布的时候需要image-20220316164945955

碰到的问题:

使用json传参
  • ? 记得进行乱码的处理 一种是单个处理,一种是统一处理

  • @RequestMapping(value="/queryUser",produces ="application/json;charset=utf-8")
    
  • 
       
           
               
           
           
               
                   
                       
                   
               
           
       
    
    
隐藏域
  • 在进行数据修改的时候,老是不成功,明明数据都获取到了,打印出来也没错。后面才发现必须要传一个id进去,这里就提到了一个新知识:隐藏域,要通过下面这种方法将id也传过去。
axios响应的时候
  • //前端
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script type="text/javascript">
        let userAccount = document.getElementById("userAccount");
        document.getElementById("queryUser").onclick=function(){
            axios.post("${pageContext.request.contextPath}/user/queryUser","userAccount="+userAccount.value
            ).then(function(response) {
                console.log(response);
                
            }, function(err) {
                console.log(err);
            })
        }
    </script>
    
  • //后端
    	@RequestMapping(value="/queryUser")
    	//能够直接将controller返回的bean对象或map对象等自动进行json或xml格式的转换
    	//也可以直接在Controller类上使用@RestController,这样所有方法都只会返回json字符串了
        @ResponseBody
    	//解决ajax跨域的问题
        @CrossOrigin
        public String  queryUser(Model model,@RequestParam String userAccount) throws JsonProcessingException {
            List list = userService.vagueSelect(userAccount);
            System.out.println(list);
    //        model.addAttribute("userlist", list);
    //        return list;
            //创建一个jackson的对象映射器,用来解析数据
            ObjectMapper mapper = new ObjectMapper();
            //将我们的对象解析成为json格式
            String str = mapper.writeValueAsString(list);
            //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便
            return str;
        }
    
  • 【编程不良人】axios 异步请求技术,已完结_哔哩哔哩_bilibili

项目结构图:

项目结构