admin管理员组文章数量:1033074
JavaWeb开发中遇到的坑(更新2021.6.24)
1. Cookie里面不能有空格,所以不能写成以下的形式
代码语言:javascript代码运行次数:0运行复制Date d = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
String currentTime = format.format(d);
//存入到cookie中
Cookie c = new Cookie("lastVisit",currentTime);
xx日 和 hh之间一定不能有空格,不然会报错
2.数据库某一列存储日期用datetime,因为之后会根据日期范围进行查询
暂时的理解是这样,当然也可以用varchar,查询的时候进行格式转换。
3.数据库的id列一定要用String类型!!!!!!要不然会给自己埋很多坑,比如
- ①后期条件查询的时候,用string可以方便判断是否为空以及去除多余的空字符串,
id != null && !id.trim().equals("")
- ②向数据库添加id时,不设置id递增,而是直接传进去一个
UUID.randomUUID().toString()
4.form表单中如果有enctype="multipart/form-data"
,在Servlet中无法通过request.getParameter()
接收数据
5.商品删除分为逻辑删除和物理删除,逻辑删除是update操作,在数据库增加flag值;物理删除是delete操作,在数据库真正删除。
6.通过a标签的onclick=function()
传参时,EL表达式要加引号!
<a href="javascript:;" onclick="delProduct('${product.pid}','${product.pname}')">
<img src="${pageContext.request.contextPath}/images/i_del.gif" width="16" height="16" border="0" style="CURSOR: hand">
</a>
7.向后台传递参数时,可以使用隐藏域
代码语言:javascript代码运行次数:0运行复制<input type="hidden" name="" value="">
8.在进行条件筛选(搜索)时,可以建议一个VO层(独立于domain层)存放实体,比如下图,建立一个pname、is_hot、category组成的实体,方便操作。
9.通过queryrunner
核心类中的query方法查询数据总条数时,new一个ScalarHandler
对象,它的返回值是object类型的,如果需要获得int类型,需要转换两次。
先强转为Long
,再使用intValue()
转换为int
Long count = (Long)queryRunner.query(sql, new ScalarHandler());
return count.intValue();
10.在分页操作中,总页数 = ( 总条数 / 每页显示的条数 )向上取整,也就是Math.ceil(
总条数 / 每页显示的条数
)
如果总条数和每页显示的条数为int,需要给总条数乘以1.0!,即 Math.ceil(
1.0 * 总条数 / 每页显示的条数 )
Math.ceil( 1.0 * 总条数 / 每页显示的条数 )
11.将<script>
中的内容提取到单独的js文件中时,需要修改url中的${pageContext.request.contextPath}/
因为.js不支持EL表达式!
12.<script>中的js代码可以获取作用域中的值,比如request中的、session中的,因此可以用js接收后端传来的数据。注意,同11一样不能放到单独的.js文件中。
13.Mysql5.7支持中文检索(where = 中文),但是需要设置编码为UTF-8,需要修改两个地方,打开文件C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
。
- 在[client]中添加
default-character-set=utf8
- 在[mysqld]添加
character-set-server=utf8
注意:在MySQL5.7中,不需要在[mysql]或者[mysqld]下添加 default-character-set=utf8,那是以前老版本的方法,添加之后会造成Mysql无法启动
14.使用BeanListHandler
时,定义的Javabean的属性名要跟数据库返回值的字段名相同!!!!
15.MYSQL某一字段为int且所有值都为0时,不管查询条件如何,都会返回所有行。
原因:在Mysql中字符串和整数比较都会进行转换后再行比较,然而任何没有有效整数的字段都将转换成为0,因为把VARCHAR类型转换成整数类型, 不符合整数类型的被转为0,所以造成你的结果不是你想要的;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2021-04-30 ,如有侵权请联系 cloudcommunity@tencent 删除表单开发数据字符串数据库JavaWeb开发中遇到的坑(更新2021.6.24)
1. Cookie里面不能有空格,所以不能写成以下的形式
代码语言:javascript代码运行次数:0运行复制Date d = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
String currentTime = format.format(d);
//存入到cookie中
Cookie c = new Cookie("lastVisit",currentTime);
xx日 和 hh之间一定不能有空格,不然会报错
2.数据库某一列存储日期用datetime,因为之后会根据日期范围进行查询
暂时的理解是这样,当然也可以用varchar,查询的时候进行格式转换。
3.数据库的id列一定要用String类型!!!!!!要不然会给自己埋很多坑,比如
- ①后期条件查询的时候,用string可以方便判断是否为空以及去除多余的空字符串,
id != null && !id.trim().equals("")
- ②向数据库添加id时,不设置id递增,而是直接传进去一个
UUID.randomUUID().toString()
4.form表单中如果有enctype="multipart/form-data"
,在Servlet中无法通过request.getParameter()
接收数据
5.商品删除分为逻辑删除和物理删除,逻辑删除是update操作,在数据库增加flag值;物理删除是delete操作,在数据库真正删除。
6.通过a标签的onclick=function()
传参时,EL表达式要加引号!
<a href="javascript:;" onclick="delProduct('${product.pid}','${product.pname}')">
<img src="${pageContext.request.contextPath}/images/i_del.gif" width="16" height="16" border="0" style="CURSOR: hand">
</a>
7.向后台传递参数时,可以使用隐藏域
代码语言:javascript代码运行次数:0运行复制<input type="hidden" name="" value="">
8.在进行条件筛选(搜索)时,可以建议一个VO层(独立于domain层)存放实体,比如下图,建立一个pname、is_hot、category组成的实体,方便操作。
9.通过queryrunner
核心类中的query方法查询数据总条数时,new一个ScalarHandler
对象,它的返回值是object类型的,如果需要获得int类型,需要转换两次。
先强转为Long
,再使用intValue()
转换为int
Long count = (Long)queryRunner.query(sql, new ScalarHandler());
return count.intValue();
10.在分页操作中,总页数 = ( 总条数 / 每页显示的条数 )向上取整,也就是Math.ceil(
总条数 / 每页显示的条数
)
如果总条数和每页显示的条数为int,需要给总条数乘以1.0!,即 Math.ceil(
1.0 * 总条数 / 每页显示的条数 )
Math.ceil( 1.0 * 总条数 / 每页显示的条数 )
11.将<script>
中的内容提取到单独的js文件中时,需要修改url中的${pageContext.request.contextPath}/
因为.js不支持EL表达式!
12.<script>中的js代码可以获取作用域中的值,比如request中的、session中的,因此可以用js接收后端传来的数据。注意,同11一样不能放到单独的.js文件中。
13.Mysql5.7支持中文检索(where = 中文),但是需要设置编码为UTF-8,需要修改两个地方,打开文件C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
。
- 在[client]中添加
default-character-set=utf8
- 在[mysqld]添加
character-set-server=utf8
注意:在MySQL5.7中,不需要在[mysql]或者[mysqld]下添加 default-character-set=utf8,那是以前老版本的方法,添加之后会造成Mysql无法启动
14.使用BeanListHandler
时,定义的Javabean的属性名要跟数据库返回值的字段名相同!!!!
15.MYSQL某一字段为int且所有值都为0时,不管查询条件如何,都会返回所有行。
原因:在Mysql中字符串和整数比较都会进行转换后再行比较,然而任何没有有效整数的字段都将转换成为0,因为把VARCHAR类型转换成整数类型, 不符合整数类型的被转为0,所以造成你的结果不是你想要的;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2021-04-30 ,如有侵权请联系 cloudcommunity@tencent 删除表单开发数据字符串数据库本文标签: JavaWeb开发中遇到的坑(更新2021624)
版权声明:本文标题:JavaWeb开发中遇到的坑(更新2021.6.24) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747997873a2239506.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论