1. @ResponseBody

屏幕快照 2019-02-01 上午11.25.22

image-20190201113400805


  1. 在你的controller层对应的方法返回html路径及名称时,在前面多加了一个/ 。

例如return “/index”,正式这个/导致报错的,解决:去掉返回前面的/即可,例如return “/index” 。

  1. 在使用springboot的过程中,如果使用thymeleaf作为模板文件,则要求HTML格式必须为严格的html5格式,必须有结束标签,否则会报错。

解决办法如下:

在application.yml中添加以下配置

spring.thymeleaf.content-type: text/html
spring.thymeleaf.cache: false
spring.thymeleaf.mode: LEGACYHTML5

再在pom.xml 添加以下依赖

1
2
3
4
5
<dependency> 
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>
  1. 资源文件的路径被修改,如果你其他的请求都正常返回则可忽略这条。

解决:在pom.xml文件的中加入

1
2
3
<resource>
<directory>src/main/resources</directory>
</resource>

添加@ResponseBody注解 然后返回JSON格式。后端是无法查看的 要通过前端Google检查元素查看?

image-20190201113602438


前后端分离

2 Redis 远程服务器 liux 腾讯云

https://www.cnblogs.com/KKSJS/p/9622815.html

阿里云部署Redis服务器远程连接问题

昨天在阿里云免费领了一个月的云服务器,就着最近学的SpringBoot,准备做一个SpringBoot与Redis的整合。

因为以前用的Redis都是安装在本地的,使用过程中没遇到什么大问题,可是一旦部署到真实的云服务器上就出现了一大堆问题,且听我慢慢道来。

在安装Redis前,云服务器实例是完全纯净的。首先执行下面的命令下载并安装redis:

1
2
3
4
5
6
7
8
//下载
wget http://download.redis.io/releases/redis-4.0.9.tar.gz
//解压
tar xzf redis-4.0.9.tar.gz
//进入解压后的目录
cd redis-4.0.9
//安装到当前目录
make

如果make失败,一般是系统中还未安装gcc造成的,因为Redis是用C语言写成的,所以需要先通过yum install gcc安装C语言环境。

安装Redis后,先别慌着启动,因为Redis对远程连接要求比较苛刻,具体到以下几点:

Redis服务默认只让本机访问,因为现在Redis是在人家阿里云的服务器上,所以需要修改成让外网也能访问。主要是修改Redis的默认配置文件reidis.conf。

  • 注释掉bind 127.0.0.1这一行,这样可以使所有的ip访问redis
  • 修改 protected-mode,值改为no,生产环境下要改为yes
  • 为了Redis的安全,需要把#requirepass foobared去掉注释,foobared改为自己的密码,例如可以改为requirepass 123456

经过以上几步后,理论上就可以通过外网访问到云服务器上的Redis了。如果现在去启动Redis的服务端,会发现Redis只能是前台启动,在这里可以通过修改redis.conf里的daemonize为yes让redis开启后台启动。

因为redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。

在修改完配置文件后,我们进入redis-4.0.9的scr目录,执行以下命令启动Redis的服务端:

1
./redis-server ../redis.conf

这样Redis就在云服务器上以后台的方式启动了,接下来我在本地快速搭建了一个SpringBoot整合Redis的案例。在application.properties添加如下内容:

1
2
3
4
#设置redis主机ip
spring.redis.host= #你的云服务器IP地址
#连接redis服务的密码
spring.redis.password= #刚刚在redis.conf中设置的密码

添加controller如下:

1
2
3
4
5
6
7
8
9
10
11
@RestController
public class TestRedis {
@Autowired
private StringRedisTemplate strTplRedis;
@GetMapping("/testredis")
public String testRedis(){
strTplRedis.opsForValue().set("testkey", "testvalue");
strTplRedis.opsForValue().get("testkey");
return "success";
}
}

此时我们启动项目后,访问localhost:8080/testredis,出现如下错误:
这里写图片描述

这里问题就来了,显示无法连接到Redis,此时配置文件里面该改到的都已经改了,后来我又想到应该是防火墙的问题,因为redis的端口是6379,服务器默认是不开启这个端口的,所以我执行下面命令关闭了防火墙:

1
sudo service iptables stop

重新访问url,发现还是报同样的错……

于是去请教大神,经过大神的一顿排查,最后告诉我应该是我服务器的安全组规则的问题。

原来,新建的阿里云服务器实例,是默认不让外网访问的,一个实例属于一个安全组,这个安全组里一开始有阿里云为我们定义的规则,默认是不开放任何tcp端口的,具体的可以查看官方的介绍:添加安全组规则

在修改好安全组规则后,再访问页面url,页面显示success,这下总算是将数据存进去了,使用Redis的桌面客户端也能远程连接到Redis,显示Redis里面的数据如下:
这里写图片描述

回头看来,远程连接Redis的坑基本上是被我踩完了……


image-20190205173607771


3 加入maven依赖 CodeC/MessageToByteEncoder

屏幕快照 2019-02-05 下午4.06.15