springboot 后端部署

pg数据库中postgis的使用

在postgrsql中添加扩展,在控制台执行语句

CREATE EXTENSION postgis;

2、向已有表中添加空间字段location

ALTER TABLE pois ADD COLUMN location geometry;
#也可以使用下面的添加字段
ALTER TABLE pois ADD COLUMN location geometry(point,4326);
SELECT AddGeometryColumn('public', 'pois', 'location', 4326, 'POINT', 2);

这里的Geometry和4326都是数据类型和坐标系类型。
postGIS中有两种空间类型,分别是geometry和geography,geometry既支持平面对象也支持空间对象,而geography只支持空间对象,平常使用的经纬度坐标(86.309976 42.325686)既可以存储成geography类型,也可以存储成geometry类型。而4326表示geometry是空间对象。
需要注意的是,一般情况下,我们使用geometry类型,因为geometry类型支持的方法较多,便于查询和计算,而且geography类型的方法执行耗时比geometry多。那么什么时候使用geography类型呢,地图范围较大,需要担心投影细节的情况,就需要使用geography类型。
3、根据表pois中已有字段longitude,latitude给空间字段赋值

update pois SET location = st_geometryfromtext('POINT('|| longitude||' '|| latitude||')',4326);

4、计算
计算距离
float ST_Distance(geometry g1, geometry g2);
float ST_Distance(geography gg1, geography gg2);
float ST_Distance(geography gg1, geography gg2, boolean use_spheroid);
float ST_DistanceSphere(geometry geo

SELECT id,ST_Distance(location,ST_geomfromText('point(86.309976 42.325686)',4326),true) FROM POIS;

由于我们是geometry类型,这里使用ST_Distance计算距离,但是需要设置use_spheroid=true,返回的是球面距离,更接近于实际距离,如果不加true,则计算的不是距离非常小,应该是度数。也可以使用ST_DistanceSphere直接计算
返回40米内的点

select * from pois where ST_DWithin(geom, ST_GeomFromText('POINT(86.309978 42.325974)', 4326),40,true);

这里ST_DWithin方法后面需要加上true,否则返回的结果不正确

项目应用

springboot项目
导入依赖

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-spatial</artifactId>
            <version>5.6.0.Final</version>
        </dependency>

字段映射

@Column(name="location",columnDefinition = "geometry(Point,4326)")
Point location;

这里存储的是点所以是point,另外我测试了一下,geography也可以这样映射成geometry(Point,4326)
查询语句,这里使用的是JPA技术

    @Query(nativeQuery=true, value  = "select * from pois where ST_DWithin(location ,(:point),:distance,true);")
    List<POI> findWithinGeometry(@Param("point") Point point, @Param("distance")Integer distance);

参考链接

windows系统下启动redis命令

1.打开命令窗口 window(键盘左下角Alt左边的显示电脑或者四个方块图标样式的就是) + r 输入cmd 按回车
2.进入Redis根目录

3.输入 redis-server.exe redis.windows.conf 启动redis命令,看是否成功。成功样式如下:
在这里插入图片描述 4.可能会启动失败

5.报错后,输入redis-cli.exe

6.再输入shutdown 结束

7.最后输入 exit 退出

8.然后再一次输入  redis-server.exe redis.windows.conf  启动命令即可。

参考链接

前端
防止网站攻击
// 防止网站工具:get,post
http.csrf().disable();//关闭csrf功能,登录失败肯定存在的原因

头部添加
xmlns:sec=“http://www.thymeleaf.org/thymeleaf-extras-springsecurity5”>
按等级隐藏界面,动态菜单,根据用户角色动态控制
sec:authorize=“hasRole(‘vip1’)”

权限控制及注销功能
先登录,按照等级显示出对应界面,登出界面,

假设设定自己的主界面
记住我功能

    //开启记住我功能: cookie,默认保存两周,自定义接收前端的参数,放到cooker中,
    http.rememberMe().rememberMeParameter("remember");

安全框架Shiro
Apache Shi是一个Java 的安全(权限)架构
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述十分钟快速开始

  1. 导入依赖
  2. 配置环境
  3. helloworld

获取当前用户对象
通过当前用户拿到session
可以存值取值

打印输出
log.info(“sub”+变量);
判断当前用户是否被认证
token 令牌认证 ,没有获取随机生成
设置记录我

执行登录操作

认证异常

注销
退出

springboot 集成

thymeleaf模板依赖放到熟悉的地方

核心三大对象
Subject 用户
SecurityManager 安全管理所有用户
Realm 连接用户

导入Shiro 依赖

第一步导入jar包
第二步新建配置类shiroconfig
引入注解
shirofilterFactorybean
dafaultwebsecuritymanager
创建realm对象,需要自定义
倒着创建
自定义一个realm
自定义的bean
类加类名
get可以获取
添加注解
qualifier 加方法名,类名,类别名
要返回某个类就要先创建
超链接 thymeleaf写法
h:href=“@{/user/add}”

// 添加shiro的内置过滤器
/*
anon: 无需认证就可以访问
authc: 必须认证了才能访问
user: 必须拥有记住我功能才能用
perms: 拥有对某个资源的权限才能访问
role: 拥有某个角色权限
*/

注解解释

@Slf4j
日志注解,可以理解为一个接口,它是一种适配器的实现方式,它本身不具有输出日志的功能,输出日志还是由log4j、logback等这样的日志组件来进行输出。如下图描述slf4j和log4j的关系
在这里插入图片描述
@SuppressWarnings(“rawtypes”)

该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。批注允许您选择性地取消特定代码段(即,类或方法)中的警告。其中的想法是当您看到警告时,您将调查它,如果您确定它不是问题,
抑制多类型的警告:
@InitBinder
@InitBinder从字面意思可以看出这个的作用是给Binder做初始化的,@InitBinder主要用在@Controller中标注于方法上(@RestController也算),表示初始化当前控制器的数据绑定器(或者属性绑定器),只对当前的Controller有效。@InitBinder标注的方法必须有一个参数WebDataBinder。所谓的属性编辑器可以理解就是帮助我们完成参数绑定,然后是在请求到达controller要执行方法前执行!
@RequestMapping
用于方法上,表示在类的父路径下追加方法上注解中的地址将会访问到该方法
@ResponseBody
作用其实是将java对象转为json格式的数据。
@Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。在使用@Autowired之前,我们对一个bean配置起属性时,是这用用的

类解释
List类是 ArrayList 类的泛型等效类。
该类使用大小可 按需动态增加 的数组实现 IList 泛型接口。
model 是返回前端的信息
返回页面
return “emp/list”;
thymleaf 抽取相同页面
抽取侧边栏
th:fragment
th :insert ~{}波浪线开头
th:replace~{}
加sidbar
公共的地方提取出来一个类
导入themleaf头部
用公共组件
th:replace ~{添加路径及名字::名字}
高亮,nav-link active
判断点了谁
vue,(传值)
${activ}
三元表达式
?:

员工列表展示
提取公共页面
如果需要传参,直接写到括号里
从后台取出来
th:text= emp.getID()
列表循环展示

增加员工
提交按钮,
有个返回显示添加成功
添加界面
找bootstrap 找个表单直接复制过来
要添加name属性
下拉框,
提交
显示123
查出所有部门的信息
model 返回信息
显示的值和返回的值不一致
提交转到action,
表单用post纸条
postMapping
重定向 redirect forward
流程对在写代码
登录
接收员工,添加
save
调用地层添加
时间转换
spring mvc data-formate “yyyy-mm-dd MM”

去员工的修改界面,修改员工
查出原来的数据
编辑数据,重新提交
把id传过去,然后在查询
先写死,把流程走对,后面再改
传递参数pathVarid
展示
th:text getID

修改提交到后台
em.save 添加改成修改
ID需要隐藏带过来
th:value

数据库打交道jdbc
sping data
使用mybaits
spring data

需要先讲到合适的版本
单元测试
依赖文件

sping
datasource
假如时区报错添加数据源
url :jdbc:mysql://localhost:3306/数据库名字?useUnicode=true&charaterEncoding=utf-8&serverTime =UTC
driver-class-name :com.mysql.jdbc.Driver

查看默认数据源
System.out.
获得数据库源
dataSource.connect = dataSource.getConnection
关闭数据库connection.close
//xxx.Template Springboot 已经配置好的bean模版
拿来急用
Controller JdbcTemplate
exectue 执行
//查询数据库的所有信息,
没有实体类,数据库中国的新东西怎么获取 Mapp
jdbcTemplate.queryForlist(sql)
增加用户
使用{id}修改信息

日志

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值