1、mybatis插入返回主键
<!--mapper.xml文件处添加
useGeneratedKeys="true" ==》取值范围true|false 默认值是:false。 含义:设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。
keyProperty="user_id" ==》将主键返回至user_id的java对象属性名
-->
<insert id="userInsert" parameterType="User" useGeneratedKeys="true" keyProperty="user_id">
</insert>
说明:将新插入的对象的主键返回,使主键的值存在插入对象的user_id中
eg:
User u = new User();
u.setLogin_count(u.getLogin_count() + 1);
u.setNick_name(nick_name);
.....
//u.getUser_id = 0;
userService.userInsert(u);//假设新主键值为1,执行该插入语句后,主键值返回
//u.getUser_id = 1;
2、url中/和./和../和无/的区别(ajax请求后台地址)
方式一:
没有斜杠,跳转到和自己(rootPath.html)同目录下的layout页面
方式二:
单斜杠加前有一点,跳转到和自己(rootPath.html)同目录下的layout页面
总结:方式一和方式二效果是相同的。
方式三:
单斜杠,跳转到整个网站根目录下的(如果是在本机测试,也就是
http://localhost:8080/,注意此路径不包括项目名,只到项目名的上一级,易错认为是到webapp目录,我是在这个地方出错了,花了好长时间才发现问题所在)
方式四: 两点加单斜杠,跳转到上一级目录
方式五: 多个两点加单斜杠连续用,每一次“../”往上跳转一级,有几个“
../”,就向上跳几级(ps:我以前错以为只能写一个“../”)
方式六:全路径方法:路径+项目名+文件在wbapp下的位置
---------------------
作者:虽然我很自强,但我也怕孤独
来源:CSDN
原文:https://blog.csdn.net/weixin_41267342/article/details/78750289
3、静态资源访问
<!-- 配置静态资源 -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/js/*</url-pattern>
<url-pattern>/css/*</url-pattern>
<url-pattern>/images/*</url-pattern>
</servlet-mapping>
4、消灭textarea神秘空格
转自:https://blog.csdn.net/CzRger/article/details/82730407
今天写网页时,初始化后发现textarea文本区域内有空格
反复查看代码之后发现并无错误,直到后来发现了一个小细节
<td><textarea id="content" class="article" name="content" rows="30"
cols="50" style="color: #ccc;" id="co1" value="" >
</textarea></td>
文本区域的标签头与尾并不在同一行,这在我们平常写代码时已经养成习惯了
改为
<td><textarea id="content" class="article" name="content" rows="30"
cols="50" style="color: #ccc;" id="co1" value="" ></textarea></td>
问题解决
5、jsp页面session与request的setAttribute
session相当于全局变量,在网页中setAttribute控制器中仍可读取
request相当于局部变量,在网页中setAttribute控制器中无法读取
6、字体显示会有浮动
对文本框进行监听,判断数据库中是否存在院系,之前将表格的大小直接用px定死,发现‘已存在’和‘可用’状态的改变会引起整个表格浮动,最后通过设置百分比宽度解决(第一列30%,第二列40%,第三列30%)。
7、AJAX传中文值到后台会乱码
方法一:用post,不要有get
方法二:
转自:https://blog.csdn.net/lilovfly/article/details/70256383
以下为转载,尊重原创
这几天,好久没有写过了,今天一个ajax提交中文乱码的问题需要解决,在徘徊了一天,看到了一个人的高见,必杀技解决了这个问题,页面有个中文搜索需要传递到后台,发现jquery都会出现中文乱码,有人说可以采用encodeURI对中文编码,是的这个是个好的办法,但是也存在着问题,后台服务器解码后通过: new String(传过来的参数.getBytes("ISO8859_1"),"UTF-8")这样转换回来,这样能转换成功的前提是,我们知道服务器采用了ISO8859_1编码,如果不是,这样我们就只剩下干瞪眼了,在解决这个问题间,我在别人的一个发帖的回复中,看到了一个牛人提出的一个必杀技,称之为必杀技确实它可以顺利解决你中文在页面编码一次,后台就能直接通过服务器解码得到中文,连那个string编码转换都省了,附上他的必杀技:在tomcat的server.xml中的
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8"/>这段中加上 URIEncoding="utf-8",这个确实是个好想法,但是公司的人员都是人来人往,可能开发的人知道把这个tomcat的配置加上这个,但是某天换了一个人,tomcat重新部署,可以这个注意项可能就遗忘在漫漫的岁月中了,况且可能将来的someday,不用tomcat这个问题又会出现,虽然效果是挺好,但是后遗症比较麻烦,在一个人的博客中看到了一个方式,这个方式我比较推崇,真是一个一劳永逸的方式,简单说说这个原理,那就是对中文的字段在前端进行编码两次,英文编码后传到后台是什么就是什么,编码一次,到后台服务器自动解码,这样中文会因为服务器的默认编码发生变化,两次编码的话服务器解码一次,还剩一次编码,这样不会因为服务器的编码而发生编码(因为编码后都是数字和字母以及%),这样再解码一次,就可以转换为中文了。这样就绕过了不知道到服务器的默认编码是什么的问题。完美解决。附上,前端编码与后端解码的语句:
前端编码两次:encodeURI(encodeURI(要编码的中文),'')
后端解码:URLDecoder.decode(request.getParameter(对应的字段名称), "UTF-8")
或者把请求方式变为post也能解决这个问题,想后端通过http的方式调用远程的接口,可以把中文编码,对header中加入
httpGet.setHeader("Content-Type","application/text; charset=UTF-8");这样相当于告诉了接收方字符的类型和编码方式。
---------------------
作者:超越自己看到的
来源:CSDN
原文:https://blog.csdn.net/lilovfly/article/details/70256383
版权声明:本文为博主原创文章,转载请附上博文链接!
8、注销登录后重定向问题
9、日期相加减问题
Java有自带的日期加减,不用自己手动撸代码。
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Main {
public static void main(String[] args) {
try{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str="2019-04-23 12:05:00";
Date dt=sdf.parse(str);
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(dt);
rightNow.add(Calendar.HOUR, 4);
rightNow.add(Calendar.MINUTE, (int)(60 * 3.5));
//rightNow.add(Calendar.YEAR,-1);//日期减1年
//rightNow.add(Calendar.MONTH,3);//日期加3个月
//rightNow.add(Calendar.DAY_OF_YEAR,10);//日期加10天
Date dt1=rightNow.getTime();
String reStr = sdf.format(dt1);
System.out.println(reStr);
}catch (Exception e){
e.printStackTrace();
}
}
}
10、input会记住历史值。
eg:
解决办法:在input 内添加 autocomplete="off"
<input class="input-text" autocomplete="off" id="dtp_input1" value="" name="date_start" placeholder="点击选择时间"/><br />