传智健康

架构图

lesson 1

lesson 2

image.png

lesson3

pojo的要继承Serializable
价格用BigDecimal
controller中方法中加@RequestBody是因为只要是ajax接收的数据都要加这个注解
dao.xml中isqianboa
调出try catch
CTRL+ALT+T
调出函数注释
ALT+P
获取插入检查组后的自增ID
传智健康_第1张图片

lesson4

incorrect region, please use up-z2.qiniup.com
将代码的Zone.zone0()改为Zone.zone1()

lesson5

apache OPI

lesson6

传智健康_第2张图片
字符串和日期都能当参数传递,因为底层做了转换,转换成日期格式
错误
Parameter Maps collection does not contain value for com.itheima.dao.CheckGroupDao.int
是指parameterType写成了parameterMap

lesson7

lesson8

lesson9

传智健康_第3张图片

lesson10

@RestController注解,相当于@Controller+@ResponseBody两个注解的结合,

返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

spring security中即使加了

      class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" />对象不用,框架也会按照加密的方式进行校验
      

spring-security invalidate-session是否过期掉session

spring-security demo

spring-security3.xml(使用内置的页面登录)



        
        
        
        
        
            
            
            
            
            
            
            
            
            
            
            
        
        
            
                
                    
                
            
        

spring-security2.xml(使用自己的登录 密码不加密)



        
        
        
        
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        
        
            
            
        
    

spring-security4.xml(使用自己的登录 密码加密)



        
        
        
        
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        
        
            
            
                
            
        
    
    
    
    

SpringSecurityUserService.java

package com.itheima.service;

import com.itheima.pojo.User;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class SpringSecurityUserService implements UserDetailsService {
    public static Map map = new HashMap();
    static{
        com.itheima.pojo.User user1 = new com.itheima.pojo.User();
        com.itheima.pojo.User user2 = new com.itheima.pojo.User();
        com.itheima.pojo.User user3 = new com.itheima.pojo.User();
        user1.setUsername("admin");
        user1.setPassword("admin");
        user2.setUsername("xiaoming");
        user2.setPassword("1234");
        user3.setUsername("map");
        user3.setPassword("map");

        map.put(user1.getUsername(),user1);
        map.put(user2.getUsername(),user2);
        map.put(user3.getUsername(),user3);
    }

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        System.out.println("输入的用户名是:"+username);
        User user = map.get(username);
        if(user == null){
            return null;
        }else{
            //将用户信息返回给框架
            //框架会进行密码比对(页面提交的密码和数据库中查询的密码进行比对)
            List list = new ArrayList<>();
            //为当前登录用户授权,后期需要改为从数据库查询当前用户对应的权限
            list.add(new SimpleGrantedAuthority("permission_A"));
            list.add(new SimpleGrantedAuthority("permission_B"));
            if(username.equals("admin")){
                //开头ROLE_表示添加角色
                list.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
            }
            if(username.equals("map")){
                list.add(new SimpleGrantedAuthority("add"));
            }
            org.springframework.security.core.userdetails.User securityUser = new org.springframework.security.core.userdetails.User(username,"{noop}"+user.getPassword(),list);
            return securityUser;
        }
    }
}

SpringSecurityUserService2.java(加密方式)

package com.itheima.service;

import com.itheima.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class SpringSecurityUserService2 implements UserDetailsService {

    @Autowired
    private BCryptPasswordEncoder bCryptPasswordEncoder;

    public Map map = new HashMap();

    public void insertMap(){
        User user1 = new User();
        User user2 = new User();
        User user3 = new User();
        user1.setUsername("admin");
        user1.setPassword(bCryptPasswordEncoder.encode("admin"));

        user2.setUsername("xiaoming");
        user2.setPassword(bCryptPasswordEncoder.encode("1234"));

        user3.setUsername("map");
        user3.setPassword(bCryptPasswordEncoder.encode("map"));

        map.put(user1.getUsername(),user1);
        map.put(user2.getUsername(),user2);
        map.put(user3.getUsername(),user3);
    }


    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        insertMap();
        System.out.println("输入的用户名是:"+username);
        User user = map.get(username);
        if(user == null){
            return null;
        }else{
            //将用户信息返回给框架
            //框架会进行密码比对(页面提交的密码和数据库中查询的密码进行比对)
            List list = new ArrayList<>();
            //为当前登录用户授权,后期需要改为从数据库查询当前用户对应的权限
            list.add(new SimpleGrantedAuthority("permission_A"));
            list.add(new SimpleGrantedAuthority("permission_B"));
            if(username.equals("admin")){
                //开头ROLE_表示添加角色
                list.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
            }
            if(username.equals("map")){
                list.add(new SimpleGrantedAuthority("add"));
            }
            //此处注意加密的方式不添加"{noop}+"
            org.springframework.security.core.userdetails.User securityUser = new org.springframework.security.core.userdetails.User(username,user.getPassword(),list);
            return securityUser;
        }
    }
}

HelloController.java

package com.itheima.controller;

import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/hello")
public class HelloController {

    @PreAuthorize("hasAuthority('add')")
    @RequestMapping("/add")
    public String add(){
        System.out.println("add...");
        return "success";
    }

    @PreAuthorize("hasAuthority('delete')")
    @RequestMapping("/delete")
    public String delete(){
        return "delete";
    }
}

web.xml




  Archetype Created Web Application
  
    
    springSecurityFilterChain
    org.springframework.web.filter.DelegatingFilterProxy
  
  
    springSecurityFilterChain
    /*
  
  
    springmvc
    org.springframework.web.servlet.DispatcherServlet
    
    
      contextConfigLocation
      classpath:spring-security.xml
    
    1
  
  
    springmvc
    *.do
  

传智健康_第4张图片
所以这里边使用set

tomcat的过期时间
传智健康_第5张图片

lesson11

lesson12

[报错 OPTION SQL_SELECT_LIMIT=] jasper Data aDapter
背景:驱动jar:mysql-connector-java-5.1.8.jar 数据库版本:5.7.16
问题:JDBC驱动的jar包版本与mysql版本不匹配
解决方案1:使用数据库版本:5.0.91
解决方案2:使用驱动jar:5.1.27 5.1.26

你可能感兴趣的:(ssm,java,dubbo,zookeeper)