内容纲要
以下是我在java web开发中遇到的问题以及解决办法:
导入xStream运行出错
- 去掉dom4j的依赖
启用Mybatis驼峰自动转换
- 在Mybatis config 里添加
<settings> <!--开启驼峰自动转换--> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> </
同类型转换错误
- 去掉以下依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency>
防止浏览器缓存
- 针对ie等浏览器
- url添加?new Date()
- url添加?时间戳
- url添加?随机数
编辑完成后列表刷新的逻辑
- 通过sql的order by进行排序
- 为了便于用户查看,将item放到最前面(第一项)
线程安全的缓存Map
-
ConcurrentReferenceHashMap可以指定引用级别(比如弱引用)
public class TestConcurrentReferenceHashMap { public static void main(String[] args) { ConcurrentReferenceHashMap map = new ConcurrentReferenceHashMap(16, ConcurrentReferenceHashMap.ReferenceType.WEAK); map.put("key","val"); System.out.println(map); System.gc(); try { Thread.currentThread().sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(map); } }
多表间的关系一定要和相关功能开发的同事沟通清楚
mybatis 模糊查询时特殊符号的处理
https://blog.csdn.net/gm371200587/article/details/81218902
```
#### mybatis 要加@Param
以下几种情况下必须加
https://cloud.tencent.com/developer/article/1471392
#### 定时任务重复执行的问题
* 有可能是多个项目连接同一个数据库,导致定时任务重复执行。
#### 下载文件名乱码
```java
String title = request.getParameter("exportTitle");
//解决火狐浏览器文件名中文乱码问题
String agent = request.getHeader("User-Agent");
//根据不同浏览器进行不同的编码
String realFilename = "";
if (agent.contains("MSIE")) {
// IE浏览器
realFilename = URLEncoder.encode(title, "utf-8");
realFilename = realFilename.replace("+", " ");
} else if (agent.contains("Firefox")) {
realFilename = "=?UTF-8?B?" + (new String(Base64.encodeBytes(title.getBytes("UTF-8")))) + "?=";
// 火狐浏览器,此处使用java8
} else {
// 其它浏览器
realFilename = URLEncoder.encode(title, "utf-8");
}
HttpClient获取到的html和浏览器里获取到的不一样
- 因为HttpClient无法执行js
因为or导致慢sql的问题
- 通过union的方式实现or的功能
静态类中获取service
- 通过ApplicationContextAware获取ApplicationContext中的已经实例化的service
Mybatis provider使用占位符
- provider的方法的参数为Map<String, Object> param
- 往param里put想要调用的参数,然后调用
param.put(String.valueOf(ss+i),ss+i); leftJoin.append(" where ss=" + "#{"+ss+i+"}");
jsp第一次请求时生成class和Java
url含有中文后台报400的问题
- 前端双重编码
- 后端解码