使用Spring MVC时传递FlashAttribute无法在controller中接收的问题

为了实现一个授权登录的功能,需要在两个controller中跳转,可是中间传递的参数必须要隐密,于是便使用了RedirectAttributes类进行参数的传递。

可是使用的时候发现,无论使用request.getParameter还是getAttribute以及redirectAttributes.getFlashAttributes().get()的方式都不能获取到结果。

查了很多资料后找到了方法:
public Map<String, Object> acceptAuth(HttpServletRequest request, @ModelAttribute("param") String param)
如上,把需要传递的参数放在方法中,并且加上@ModelAttribute(“xxxx”)就能取到值了,完美!

centos7上firewall防火墙的常用命令

查看所有开放的端口
firewall-cmd --list-ports

开启80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent

重启防火墙

1
2
3
firewall-cmd --reload #重启firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

maven在不同的环境获取不同配置文件的方法

最近准备把正在开发的项目给分为两个环境来部署,使用jenkins进行自动构建。

把maven部署多环境相关的资料看了下,都比较难理解,于是自己摸索,找到一个比较好的办法。

首先在 src/main/resource 下建两个文件夹,具体几个看你的环境有几个,我这里是分了两个,dev和product,开发环境和正式环境。

然后将配置文件分别放入两个目录中,然后把两个环境中的配置配好

接下来编辑项目的pom文件

进行如下配置

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
26
27
28
29
30
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
......
......
<profiles>
<!-- 开发环境 -->
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 正式环境 -->
<profile>
<id>product</id>
<properties>
<env>product</env>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
</profiles>
......
......
</project>

中间的properties是用来作为变量能在下文中取到的

然后在build节点中进行如下配置

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
26
27
28
29
30
31
32
33
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
......
......
<build>
......
......
<resources>
<!-- 此处是因为我的java目录中有一些xml文件,
如果你的项目中的java目录下没有xml文件则可以不用配 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!-- 是否替换资源中的属性 -->
<filtering>false</filtering>
</resource>
<!-- 此处的用法就是${env}会替换成你的上面选择的具体环境 -->
<resource>
<directory>src/main/resources/${env}</directory>
<!-- 是否替换资源中的属性 -->
<filtering>true</filtering>
</resource>
</resources>
......
......
</build>
......
......
</project>

最后使用maven命令进行编译打包

1
mvn clean package -Pproduct

-P为指定某个profile,后面跟上具体的profile就行了,比如上面就指定的是product的profile,如果不加,则默认是dev的profile,可以倒回上面的配置看。

接下来就会根据你的命令进行编译打包啦~

jenkins使用git时提示 Unable to find remote helper for 'https' 报错的问题

一个新的项目需要部署生产环境,于是把jdk,maven,git,什么都装好了。

可是用jenkins连接git仓库的时候提示 Unable to find remote helper for ‘https’ 的问题。

因为对git的了解甚少,查了下资料,发现可能是没有安装curl的问题,于是先安装curl

1
yum install curl-devel

然后进入git源码目录

1
2
3
./configure --prefix=XXXXX(安装目录)
make
make install

搞定!

windows下安装mysql5.7

因为自己安装mysql很多次了总是记不清某些关键的地方,还是写下来以后好参考吧。

  • 下载(http://www.mysql.com)

  • 解压到自己想要的目录

  • 将bin目录添加到path中,(可建个mysql的变量,然后path中添加%mysql%\bin)

  • 使用命令行进入bin目录(必须在bin目录,否则创建的服务可能会报”文件路径不存在“的错误)

  • 执行 mysqld install ,回车

  • 尝试执行 net start mysql(这一步可能会出现“mysql服务无法启动 服务没有报告任何错误”的错误,请看下一步,如果无错误则安装完成)

  • 执行mysqld –initialize-insecure –user=mysql

  • 再次尝试执行net start mysql

  • 安装完成,使用 mysql –u root –p 登录,密码为空

iptables常用命令

文本形式查看iptables规则
vi /etc/sysconfig/iptables

禁用3306端口
iptables -A INPUT -p tcp --dport 3306 -j DROP

允许IP访问所有端口
iptables -A INPUT -s 127.0.0.1 -j ACCEPT

查看现有规则
iptables -L -n

按行数查看规则
iptables -nL --line-number

按序号删除INPUT规则
iptables -D INPUT 1

保存iptables规则
service iptables save

已启用全站https

听说明年谷歌对没有使用https的网站将会在地址栏报警

于是抓紧把https给弄好了,用的是Let’s Encrypt的免费证书。

其实部署还是挺简单的,只不过之前在centos6.5上死活安装不上Python(用的Certbot,需要Python的支持),只好把服务器改成了centos7。

然后百度的ueditor默认是不支持https的。。只好找到js改了下,现在貌似是完美了,不过得手动把以前的表情全改为https,这是最气的。

先测试下加了证书后会不会有其他问题出现吧