生产实习中遇到的问题小结

1。关于所谓session被覆盖问题
当一个用户登录后访问首页面,只要你点击这个页面而打开的窗口都属于同一session,这个时候假如你在其中某一窗口页面里,直接修改URL访问登录页面重新以另一用户名登录,然后你刷新其他的页面,你会发现其他的页面也会相应的定向到后面登录的用户session里,因为这些窗口都是关联属于一个session的,改变一个,其他也会改变。刚开始没注意到这一点,以为是代码有问题导致session被覆盖,其实这个时候,前一个session仍然存在,并未消失。
我当初的想法就是:同时登录两个用户,进行在线聊天的测试。只是没注意到上面的问题,总是在登录一个用户后,访问首页,点一个连接出来一个窗口页,再点这个页面里的一个连接进入聊天系统,我这个时候就图方便直接把前一个页面的URL改了访问登录页面来登录另一用户名,结果刷新的时候,所有页面都归属到后来登录用户的session了。没想明白之前,怀疑是自己代码问题,导致后面登录的会覆盖前面的,后来才发现其实只要你不是在前面打开的窗口里直接修改URL登录另一用户,而是重新启动浏览器打开新窗口来登录就不会出现上面的问题,这样就能保证两个用户同时访问相互不干扰

2。当将一个临时对象A set给另一对象B,然后保存B时经常会看到这样的异常:org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.lingirl.domain.News#1]
比如:User user=new User();
      news.setUser(user);
      newsDao.save(news);
这个时候的user是个临时对象,当执行newsDao.save(news);的时候就会抛上面的异常。
解决方法:先userDao.save(user)将user临时对象持久化,然后再news.setUser(user);newsDao.save(news);
(User,News一对多双向关联)

3。类型为Integer的字段最好初始化为0,否则默认为NULL容易抛空指针异常NullPointerException
比如News实体类里的字段hit为Integer,我没有对hit初始化,结果执行到news.setHit(news.getHit()+1);这行代码就出了空指针异常
news.getHit()取值为NULL,解决方法:News里set方法里进行判断后再初始化给值:
          public void setHit(Integer hit) {
           if(hit==null)
              hit=new Integer(0);
          else this.hit = hit;
          }

4。还经常一不小心就碰到这样的问题:org.apache.jasper.JasperException: /list.jsp(14,12) quote symbol expected
一般是因为${user.isadmin}少了双引号
比如:
java 代码
 
  1. <c:if test="${user.isadmin}">  
<c:if test="${user.isadmin}">
写成了
java 代码
 
  1. <c:if test=${user.isadmin}>  
<c:if test="${user.isadmin}"></c:if></c:if>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值