Controller异常处理

1
2
3
4
5
一般来说,项目中的错误最好手动处理,避免尴尬直接抛错给请求者,但是在一些特殊情况中,比如我们在用
SpringMvc的@RequestBody注入对象的时候可能很方便,但是在联调阶段也会出现很多尴尬的问题,
比如我们定义了一个注入的model中的price是一个decimal类型,那么按理说需要前端提供一个类似0.00的值上来,
但是像网页端,若是用input标签来实现且price非必填,一般就直接传了个""上来,这是注入的时候就会出现
类型转换失败的情况。

阅读更多

使用fatjar打包项目

1
2
3
直接用eclipse打包项目,如果项目有依赖的jar包,则运行时需要将生成的jar文件和存放引用包的lib文件夹
放在同一个目录下,但是这种方式十分不美观,在非maven项目中,推荐使用fatjar打包项目,
fatjar工具可以把引用包也引入到生成的jar文件中,使用方法不做解释,下面为使用失败的记录。

阅读更多

open implementation异常退出

eclipse使用Ctrl+鼠标点击open implementation和open super implementation时会出现eclipse异常退出的现象,后来发现是谷歌输入法导致的冲突,卸载换个输入法就好了

阅读更多

SpringMvc接收参数

SpringMvc接收对象的方式

1、最普通的我们可以用HttpServletRequest对象来接收,但下面的方式我们只能用来接收键值对,对application/json之类的类型就没有用了,需要读取request的流再解析出参数

request.getParameter(name);

阅读更多

Java操作redis

Jedis的简单使用

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
package test;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import redis.clients.jedis.Jedis;
public class Test {
public static void main(String[] args) {
// 连接本地的 redis 服务
Jedis jedis = new Jedis("localhost");
System.out.println("Connection to server sucessfully");
// 存储数据到列表中
jedis.lpush("tutorial-list", "Redis");
jedis.lpush("tutorial-list", "Mongodb");
jedis.lpush("tutorial-list", "Mysql");
// 获取存储的数据并输出
List<String> list = jedis.lrange("tutorial-list", 0, 5);
for (int i = 0; i < list.size(); i++) {
System.out.println("Stored string in redis: " + list.get(i));
}
// 获取数据并输出
Set<String> list1 = jedis.keys("*");
Iterator<String> it = list1.iterator();
while (it.hasNext()) {
System.out.println("List of stored keys: " + it.next());
}
}
}

阅读更多

Angularjs内置过滤器

currency(货币处理):
{{ num | currency:’¥;’}}
date(日期格式化):
{{date | date:’yyyy-MM-dd hh:mm:ss EEEE’}}
filter(匹配子串):
{{ childrenArray | filter : ‘a’ }} // 匹配属性值中含有a的
{{ childrenArray | filter : 4 }} // 匹配属性值中含有4的
{{ childrenArray | filter : {name : ‘i’} }} // 参数是对象,匹配name属性中含有i的
{{childrenArray | filter : func }} // 参数是函数,指定返回age>4的
$scope.func = function(e) {return e.age>4;}
格式化json对象一般用来调试,看看输出的json串
json
limitTo(限制数组长度或字符串长度):{{ childrenArray | limitTo : 2 }} // 将会显示数组中的前两项
lowercase(小写)
uppercase(大写)
number(格式化数字)
{{num | number:2}}// 保留2位小数
orderBy(排序)
<div>{{ childrenArray | orderBy : ‘age’ }}</div> // 按age属性值进行排序,若是-age,则倒序
<div>{{ childrenArray | orderBy : orderFunc }}</div> // 按照函数的返回值进行排序
<div>{{ childrenArray | orderBy : [‘age’,’name’] }}</div> // 如果age相同,按照name进行排序

阅读更多

原生数据库访问

本例以mysql为例
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
/*
MySQL Data Transfer
Source Host: localhost
Source Database: test
Target Host: localhost
Target Database: test
Date: 2016/07/09 09:19:38
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for user 创建表
-- ----------------------------
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`username` varchar(40) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records 填充数据
-- ----------------------------
INSERT INTO `user` VALUES ('1', '张一', '1');
INSERT INTO `user` VALUES ('2', '张二', '2');
INSERT INTO `user` VALUES ('3', '张三', '3');
INSERT INTO `user` VALUES ('4', '张四', '4');
INSERT INTO `user` VALUES ('5', '张五', '5');

阅读更多

tomcat配置https单/双向验证

tomcat配置https双向验证

以windows为例,进入cmd终端,用命令切换进入%JAVA_HOME%/bin目录

阅读更多

StaleStateException

org.hibernate.StaleStateException
org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
这个错误的原因是当你更新的时候id不对应了,查看hibernate的sql输出,要么就是id原本是自增的,而在新增的时候自己给id赋值了。
我遇到的问题是新增的时候忘了调用save()方法,然后就去update(),这时update不到对象,结果就报错了

阅读更多

获取URL链接的文件类型

事例中的URL原本是一个格式为wav的音频文件,file type: audio/x-wav,在保存文件的时候需要判断url是否还有效,这个时候就可以用到HttpURLConnection.guessContentTypeFromStream方法来做判断
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
34
35
36
37
38
package test;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class Test {
public static void main(String[] args) {
HttpURLConnection urlConn = null;
URL url = null;
BufferedInputStream bis = null;
try {
url = new URL("http://www.ucpaas.com/fileserver/record/aee9011d2ee0f21f67310422ce62e71c_1464078387210374_20160524?sig=648DA4EC9E16704C44E5424D7A29CCD2");
urlConn = (HttpURLConnection) url.openConnection();
urlConn.connect();
bis = new BufferedInputStream(urlConn.getInputStream());
// HttpURLConnection.guessContentTypeFromStream 可以获取流的类型
System.out.println("file type: " + HttpURLConnection.guessContentTypeFromStream(bis));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

阅读更多