SSM小问题汇总

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 />

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值