关于Unicode和其他的字符集以及Spring乱码处理

Spring出现乱码的解决办法:

若需要快速的解决乱码问题可以直接看配置文件:

后台逻辑:

在项目中的web.xml中添加Spring的字符过滤器,配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<filter>
<filter-name>SpringEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SpringEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
阅读更多

在springmvc中使用shiro注解

前言:

在之前写了一篇spring和shiro的一个整合,但是在那个项目中并没有使用注解,而且没有加入权限,只是加入了角色,所以在这篇日志中将这个项目添加注解并且加入权限。

开启Shiro的注解:

刚开始开启这个注解的时候,添加了但是一直无效。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
String username = (String) principalCollection.getPrimaryPrincipal();
List<Resources> resources =loginservice.getRoleById(username);
List<String> roles =new ArrayList<String>();
for (Resources r: resources){
roles.add(r.getRole());
}
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
info.addRoles(roles);
if( !username.equals("MANAGER") ){
return info ;
}else {
List<String> pre = new ArrayList<String>();
pre.add("user:insert");
info.addStringPermissions(pre);
return info;
}

@RequestMapping("/toinsert")
@RequiresPermissions("user:insert")
public String toinsert(){
return "getuser/userINsert";
}

阅读更多

在mysql5.7版本中使用groupby所需要注意的

什么是ONLY_FULL_GROUP_BY 模式

先看在mysql 5.7版本中的一个的group by,以下是这个数据库表:

1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> select * from testgroupby;
+---------+-----------+------------+--------------+
| user_id | user_name | user_score | user_subject |
+---------+-----------+------------+--------------+
| 1 | 张三 | 99 | 语文 |
| 2 | 张三 | 90 | 数学 |
| 3 | 张三 | 80 | 英语 |
| 4 | 李四 | 99 | 语文 |
| 5 | 王五 | 85 | 语文 |
| 6 | 李四 | 91 | 数学 |
| 7 | 王五 | 100 | 英语 |
+---------+-----------+------------+--------------+
7 rows in set (0.00 sec)

这是一个学生成绩数据库表。那么在MySQL5.7版本中执行它的话是会出现一个error的。如下所示:

1
2
3
mysql> select * from testgroupby group by user_name;
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'login.testgroupby.user_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

阅读更多

记一次sql和时间段查询有关的语句

前言

由于自己有点需求需要在mysql中按照时间段进行查询,而自己又对这些不太了解,所以趁着这次机会将mysql和时间段相关的查询语句做一个记录:

常用函数:

DATE_SUB()函数

DATE_SUB(date,INTERVAL expr type)这个函数的date是一个时间表达式,一般取得是数据库中的一个字段。后面的INTERVAL一般来讲是不变的,expr一般是一个时间段,代表过去的,比如是30天,那么这里就是30,若是60,这里就是60,type则表示的是一个时间属性(可能表达的不是很准确),如下:

阅读更多

在SpringMvc中使用shiro进行安全配置

前言

在去年一年之间用过shiro的一些内容,但是最近又有点忘却了。现在正好有一个机会,所以正好搭建起来了然后自己做些记录

搭建过程

引入jar包:

需要使用shiro的话先在maven中引入以下Jar包:

阅读更多

layui使用总结

前言

由于自己平时对前端的css和js学的不是太好,而现在又需要自己来写一个前端页面,无意间在GitHub中看到了layui,所以抱着尝试的心态,学习了一下,现在主要是自己做一个总结。可能之后会学习Vue等前端跨框架

关于Layui的table组件

首先Layui的table组件:在Layui中创建一个table组件需要先写一个table标签:<table class="layui-hide" id="test" lay-filter="demo"></table>,在这之中 id 是需要在table.render中使用的。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
table.render({
elem: '#test'
,height: 315
,url: '/user/getUser' //数据接口
,page: true //开启分页
,cols: [[ //表头
{field: 'id', title: 'ID', width:80, sort: true, fixed: 'left'}
,{field: 'age', title: '年龄', width:80}
,{field: 'dataname', title: '用户名', width:80}
,{field: 'sex', title: '性别', width:80}
,{field: 'password', title: '密码', width:80, sort: true}
,{fixed: 'right', width: 165, align:'center', toolbar: '#barDemo'}
]]
});
阅读更多

记踩过的SpringMvc的一些坑

时隔一年多,再次在新公司期间接触了SpringMvc,由于之前一段时间再用Python和SpringBoot做项目,所以一时间导致SpringMvc配置中出现了好多坑,遂逐一记录:

关于Dao层找不到的异常

在配置的过程中这个异常出现的次数是最多的,也是最烦人的,一般是由于在Controller层中找不到Service层,然后Service层的Impl在自动装配dao的时候找不到dao,所以异常就会沿着service到达contrller层,但是总结起来,在今天的配置中遇到的情况主要又以下几种:

web.xml中的配置出现了错误:

在Spring5中默认xml文件是在WEB-INF中的,于是也就想着少配置一点是一点的原则,所以在web.xml中只是配置了分发器。但是今天却在其中发现了一些可能会导致Dao层找不到的原因,如下所示是我之前在web.xml中配置的一个详情:

阅读更多

关于Java的链式代理

关于Java的代理

思路:

  1. 了解Enhancer的意义
  2. 查看生成的字节码(和原来的对比)
  3. 分析代理的区别
  4. 完成代理链

首先需要新建一个代理管理类,这个管理类会存储目标代理类,目标代理方法,以及一个List,List中存储的是一些代理类,最后是需要一个操作就是

记一次使用Spring5构件Web的过程

由于当时在学习Spring的时候还是在一年前,那时候Spring才是刚到4.3还是4.5.然后做了一个项目之后便了解到了SpringBoot,于是一直在用SpringBoot,所以导致现在配置起来就有点忘记了。所以现在记录下此次配置的过程中所遇到的坑。

踩过的坑:

遇到在web.xml中分发请求的类找不到

第一个坑就是org.springframework.web.servlet.DispatcherServlet这个类一直找不到;于是在POM中添加了个各种依赖终于发现缺少Spring Web MVC这个依赖包。。。

1
2
3
4
5
<servlet>
<servlet-name>spring-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 需要webmvc这个jar包-->
<load-on-startup>1</load-on-startup>
</servlet>
阅读更多

记一次sql嵌套查询的使用方法

记一次sql嵌套查询的使用方法

一般来讲在sql中嵌套查询在where之后以便于查询范围的限制。
现在有一个情况就是就是现在嵌套查询的话是需要查询出结果值然后返回为一个字段。

思路:

思路一:既然需要返回的是一个字段,那么是需要一个嵌套查询,所以一般的表达式是:

select <表达式>(select<表达式>)as name这样作为一个查询。
首先在括号()里面的一个select语句是可以作为一个字段的,可以通过在后面加一个as 字段从而返回的是一个字段。、
那么这样书写sql之后便可以作为一个字段然后返回结果了。但是这样写有一个弊端,就是若没有groupby,则会导致查询出来的数据会有多余重复得。
类似下面这条sql:

阅读更多