内容较多可按Ctrl+F搜索
0.目录
1.获取插入数据后自增长主键的值
2.Controller中返回给ajax请求字符串/json会跳转到xxx.jsp
3.ajax请求获得的json无法解析
4.在Controller中使用ServletFileUpload获取的上传文件为null
5.莫名其妙报service和dao里方法的错误
6.ajax请求拿到的数据中文乱码
7.修改嵌套标签里的某一项文本
8.layui其他样式正常,但部分组件无法显示(如开关/单选框)
9.layui弹出框请求别的页面,关闭后按钮无法点击也不报错
10.在服务器运行SQL语句时Unknown collation:’utf8mb4_0900_ai_ci ‘
11.本地正常运行,部署到服务器找不到表
1.获取插入数据后自增长主键的值
原生web写法
public int saveUData(String sql,Object[] objs){
int rs=0,unum=-1;
if (conn!=null){
try{
ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
if (objs!=null){
for (int i=0;i<objs.length;i++){
ps.setObject(i+1,objs[i]);
}
}
rs=ps.executeUpdate();
ResultSet generatedKeys = ps.getGeneratedKeys();
if (generatedKeys.next()) {
unum=generatedKeys.getInt(1);
}
}catch (SQLException e) {
throw new RuntimeException(e);
}
}
return unum;
}
spring-mybatis写法
<insert id="saveUData" parameterType="cc.lslink.pojo.UData" useGeneratedKeys="true" keyProperty="unum" keyColumn="unum">
insert into udata(upwd, utime, upath, utype, uid)
values (#{upwd}, #{utime}, #{upath}, #{utype}, #{uid})
</insert>
注意会将自增长之后的值赋给传入对象对应的属性,可在service中处理
@Autowired
UDataDao udd;
public int saveUData(UData uData) {
udd.saveUData(uData);
return uData.getUnum();
}
2.Controller中返回给ajax请求字符串/json会跳转到xxx.jsp
与 Spring MVC 中的视图解析器配置有关,如下面代码前缀设置为 /
,表示视图的路径会从项目的根目录开始,后缀设置为 .jsp
,表示视图解析时会自动添加 .jsp
后缀
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
可以使用@ResponseBody注解来告诉 Spring MVC 不要解析视图
或者返回ResponseEntity<String>对象来明确告诉 Spring MVC 返回的是数据而不是视图。
@RequestMapping(value = "/login",method = RequestMethod.POST)
@ResponseBody
public String login(@RequestParam("uname") String uname, @RequestParam("upwd") String upwd, HttpSession session) {
...
JsonMessage<User> JSM = new JsonMessage<>("300", "登录成功", user);
return JSM.toJSONString();;
}
3.ajax请求获得的json无法解析
如在回调函数里打印data可以得到json,但打印data.code会输出undefined
八成是你没指定接收的返回值类型dataType
$.ajax({
url:"/getUname",
type:"post",
dataType: "json", //这里需要指定json,否则默认字符串
data:{uname:uname},
success:function(data){
if(data.code=="201"){
xxx
}else if(data.code=="200"){
xxx
}
},error:function(){
console.log("ajax请求失败!!!")
}
});
4.在Controller中使用ServletFileUpload获取的上传文件为null
如下面所示
@RequestMapping(value = "/uploadFile",method = RequestMethod.POST)
public void uploadFile(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
ServletFileUpload upload = new ServletFileUpload (new DiskFileItemFactory());
upload.setHeaderEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
List<FileItem> items = upload.parseRequest(request);
...
}
可以改成Spring MVC 提供的MultipartResolver来处理文件上传
<!-- 文件上传解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置默认的编码格式: -->
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 设置最大上传文件的总大小(字节) -->
<property name="maxUploadSize" value="52428800"></property>
<!-- 设置单个文件上传的大小: -->
<property name="maxInMemorySize" value="52428800"></property>
</bean>
@RequestMapping(value = "/uploadFile",method = RequestMethod.POST)
public void uploadFile(@RequestParam("file") MultipartFile file) throws IOException, ClientException {
String fileName = file.getOriginalFilename();
...
}
5.莫名其妙报service和dao里方法的错误
从头到尾检查dao对应的mapper文件!
即使是其他没用到的方法有错误也会报错!
6.ajax请求拿到的数据中文乱码
Controller注解里加上produces="text/html;charset=UTF-8"
@RequestMapping(value = "/login",method = RequestMethod.POST,produces="text/html;charset=UTF-8")
@ResponseBody
public String login(@RequestParam("uname") String uname, @RequestParam("upwd") String upwd, HttpSession session) {
xxx
}
7.修改嵌套标签里的某一项文本
如要在js里修改tester
<a href="javascript:;" id="userInfo">
<img src="../uicons/default.png" id="uicon" class="layui-nav-img">
tester
</a>
使用下列方法均会出现各种问题
$("#userInfo").contents().last().replaceWith("New Text Here");
$("#userInfo").contents().last()[0].nodeValue = 'New Text Here';
建议直接给tester套一层标签,然后用jquery选择器
<a href="javascript:;" id="userInfo">
<img src="../uicons/default.png" id="uicon" class="layui-nav-img">
<span id="userName">tester</span>
</a>
//js
$("#userName").text(user.uname);
8.layui其他样式正常,但部分组件无法显示(如开关/单选框)
缺少layui.js
9.layui弹出框请求别的页面,关闭后按钮无法点击也不报错
可以参考我的另一个帖子
10.在服务器运行SQL语句时Unknown collation:’utf8mb4_0900_ai_ci ‘
版本不一致导致的
打开sql文件,将文件中的所有 utf8mb4_0900_ai_ci替换为utf8_general_ci ,utf8mb4替换为utf8
11.本地正常运行,部署到服务器找不到表
windows系统上表名、列名还是数据库名默认不区分大小写
在类Unix系统(如 Linux、Mac OS X 等)上,MySQL 默认区分大小写
可通过配置项 lower_case_table_names 修改