框架---ssm2(尚马day70)

0611ssm

1.搭建ssm框架

  • 准备jar包:spring,aop,springmvc,druid,mybatis,事务,分页

spring的4个核心;
1个commons-logging日志;
2个spring的aop
1个cglib
2个apsectj
1个aopXXXX1.0
2个spring-web;spring-webmvc
3个jackson,jackson-core;jackson-annotion;jackson-bind
2个文件上传
​
1个mysql驱动包
1个Druid连接池
1个mybatis核心包
1个mybatis-spring整合包
​
2个spring事务管理包,spring-jdbc;spring-tx
2个pageHelper分页包,pageHelper;jsqlparser
​
1个junit整合测试包spring-test
1个javax-annotation包
  • 创建两个主配置文件,父子容器需要用到两个xml配置

spring.xml---由ContextLoaderListener监听器加载创建父容器,加载其他bean
springmvc.xml-----由DispatcherServlet加载创建子容器,只加载Controller层的bean
  • 把springmvc配置文件完整

1.springmvc注解识别
2.静态资源配置
3.文件解析器
4.拦截器
  • dao层整合,注册都父容器

1.DruidDataSource
2.SqlSessionFactoryBean(初始化Configuration,初始化SqlSessionFactory)
3.MapperScannerConfigurer(扫描指定dao包,为dao接口创建代理对象)
4.DataSourceTransactionManager(依赖连接池,做事务控制)
5.事务注解识别

2.跨域

前后端分离的开发模式下,浏览器针对不同源的请求,分为简单请求与复杂请求.

简单请求:GET请求....POST的部分请求(content-type=applicaiton/x-www-form-urlencoded|mulpart/form-data|text/plain)

复杂请求:POST(content-type=application/json).put.delete

浏览器对简单请求,直接向请求地址发起真实请求,携带参数,携带cookie.服务器解析请求url,执行拦截器,执行跨域配置,执行处理器方法...

浏览器对复杂请求,先向请求地址发送一次预检请求,不携带参数,不携带cookie,检查服务端是否允许进行跨域请求.如果有自定义拦截器,自定义拦截一旦拦着预检请求,产生异常了,那么预检请求直接失败,不执行跨域配置.对于浏览器来说,则跨域异常,真正请求不发送.

springmvc跨域配置方法1:


    
        
    
@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String method = request.getMethod();
        if(method.equals("OPTIONS"))
            return true;
​
        HttpSession session = request.getSession();
        Object login_user = session.getAttribute("LOGIN_USER");
        if(login_user==null) throw new MvcException(E.NO_LOGIN);
        return true;
    }

springmvc跨域配置方法2:

创建cors.xml

 
    
        
            
                
                    
                        
                            
                                
                                    
                                        http://localhost:8088
                                    
                                
                                
                                
                                    
                                        GET
                                        POST
                                        PUT
                                        DELETE
                                        OPTIONS
                                    
                                
                                
                                
                            
                        
                    
                
            
        
    

把cors.xml导入到spring.xml文件


web.xml配置过滤器代理对象:此对象在初始化时,去父容器中获取指定beanName的CorsFilter对象.

  
        delegatingFilterProxy
        org.springframework.web.filter.DelegatingFilterProxy
        
            targetBeanName
            corsFilter
        
    
    
        delegatingFilterProxy
        /*
    

3.easycode配置

entity:

##引入宏定义
$!define
​
##使用宏定义设置回调(保存位置与文件后缀)
#save("/entity", ".java")
​
##使用宏定义设置包后缀
#setPackageSuffix("entity")
​
##使用全局变量实现默认包导入
$!autoImport
import java.io.Serializable;
​
##使用宏定义实现类注释信息
#tableComment("实体类")
public class $!{tableInfo.name} implements Serializable {
    private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
    #if(${column.comment})/**
    * ${column.comment}
    */#end
​
    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
​
#foreach($column in $tableInfo.fullColumn)
##使用宏定义实现get,set方法
#getSetMethod($column)
#end
​
}

dao.java

##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Dao"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/dao"))
​
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end
​
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}dao;
​
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import com.javasm.commons.basic.BaseDao;
​
public interface $!{tableName}  extends BaseDao<$!{tableInfo.name}>{
    
}

service.java

##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Service"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/service"))
​
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end
​
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service;
​
import com.javasm.commons.basic.BaseService;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import java.util.List;
​
public interface $!{tableName} extends BaseService<$!{tableInfo.name}> {
​
}

serviceImpl.java

##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "ServiceImpl"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/service/impl"))
​
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end
​
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl;
​
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.stereotype.Service;
import com.javasm.commons.basic.BaseServiceImpl;
​
@Service
public class $!{tableName} extends BaseServiceImpl<$!{tableInfo.name}Dao,$!{tableInfo.name}> implements $!{tableInfo.name}Service {
    
}

controller.java

##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Controller"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/controller"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end
​
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}controller;
​
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.javasm.commons.basic.BaseController;
import com.javasm.commons.entity.AxiosResult;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
​
@RestController
@RequestMapping("$!tool.firstLowerCase($tableInfo.name)")
public class $!{tableName} extends BaseController {
    @Resource
    private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;
​
  
     @GetMapping("{id}")
    public AxiosResult selectById(@PathVariable $!pk.shortType id)
    {
        $!{tableInfo.name} obj = this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryById(id);
        return suc(obj);
    }
    
    @GetMapping("ids/{ids}")
    public AxiosResult selectListByIds(@PathVariable String ids)
    {
        String[] idsArray = ids.split(",");
        List<$!{tableInfo.name}> list = this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryByIds(Arrays.asList(idsArray));
        return suc(list);
    }
​
    @GetMapping("list")
    public AxiosResult selectList($!{tableInfo.name} obj,Integer pageNum,Integer pageSize)
    {
        if(pageNum==null) pageNum=1;
        if(pageSize==null) pageSize=10;
        PageHelper.startPage(pageNum,pageSize);
        List<$!{tableInfo.name}> list = this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryList(obj);
        PageInfo i = new PageInfo(list);
        return suc(i);
    }
​
    @PostMapping
    public AxiosResult add(@RequestBody $!{tableInfo.name} obj)
    {
        Boolean r = this.$!{tool.firstLowerCase($tableInfo.name)}Service.insert(obj);
        return isok(r);
    }
​
    @PutMapping
    public AxiosResult update(@RequestBody $!{tableInfo.name} obj)
    {
        Boolean r = this.$!{tool.firstLowerCase($tableInfo.name)}Service.update(obj);
        return isok(r);
    }
​
    @DeleteMapping("{ids}")
    public AxiosResult delByIds(@PathVariable String ids)
    {
        String[] idsArray = ids.split(",");
        Boolean r = this.$!{tool.firstLowerCase($tableInfo.name)}Service.deleteByIds(Arrays.asList(idsArray));
        return isok(r);
    }
​
}

mapper.xml

##引入mybatis支持
$!mybatisSupport
​
##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "Dao.xml"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mapper"))
​
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end
​



​
    
#foreach($column in $tableInfo.fullColumn)
        
#end
    
    
        select
        #allSqlColumn()
        from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.name
    
​
    
    
    
​
    
​
    
        insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)
        values (#foreach($column in $tableInfo.otherColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)
    
​
    
        update $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}
        
#foreach($column in $tableInfo.otherColumn)
            
                $!column.obj.name = #{$!column.name},
            
#end
        
        where $!pk.obj.name = #{$!pk.name}
    
​
    
        delete from $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name}
    
    
        delete from $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} where $!pk.obj.name in
        
            #{i}
        
    

你可能感兴趣的:(框架,spring,java,spring,boot)