一.Strus2+JSP+js实现....................................................................................................................1Struts2的token使用...............................................................................................................1常见问题:...............................................................................................................................2二.Struts2+Hibernate实现............................................................................................................51.系统介绍(在线购物/电子商务)............................................................................................52.系统的架构设计....................................................................................................................53.数据库设计.........................................................................................................................64.搭建工程结构........................................................................................................................6利用Myeclipse生成hbm和pojo...........................................................................................7Sh常见问题:.......................................................................................................................11使用@JSON(serialize=false)注解将get方法注释掉,就是不让该类序列化...............15MySQL的timeout那点事....................................................................................................24(2):HowtodecreaseInnoDBshutdowntimes................................................................27MySQLINNODB锁机制简单试验..............................................................................31(三)当当Struts2+hibernate3+spring..............................................................................................34相关问题:.............................................................................................................................34关于org.apache.struts2.json.JSONException:org.apache.struts2.json.JSONException异常的解决.........................................................................................................................34一.Strus2+JSP+js实现Struts2的token使用s:token/标签防止重复提交,用法如下:第一步:在表单中加入s:token/s:formaction=helloworld_othermethod=postnamespace=/tests:textfieldname=person.name/s:token/s:submit//s:form第二步:actionname=helloworld_*class=cn.itcast.action.HelloWorldActionmethod={1}interceptor-refname=defaultStack/!--增加令牌拦截器--interceptor-refname=token!--哪些方法被令牌拦截器拦截--paramname=“includeMethodssave/param/interceptor-ref!--当表单重复提交转向的页面--resultname=invalid.token/WEB-INF/page/message.jsp/result/action以上配置加入了“token”拦截器和“invalid.token”结果,因为“token”拦截器在会话的token与请求的token不一致时,将会直接返回“invalid.token”结果。在debug状态,控制台出现下面信息,是因为Action中并没有struts.token和struts.token.name属性,我们不用关心这个错误:严重:ParametersInterceptor-[setParameters]:UnexpectedExceptioncaughtsetting'struts.token'on'classxxx:Errorsettingexpression'struts.token'withvalue'[Ljava.lang.String;@39f16f'严重:ParametersInterceptor-[setParameters]:UnexpectedExceptioncaughtsetting'struts.token.name'常见问题:1.自动增长的id值如何获取?2.在设置配置文件时,因为默认的提交方式是转发,转发会携带所有的数据进入到下一个页面,这样可能会造成重复匹配action,这个可能是struts2标签的问题,很奇怪,解决方式是在配置文件上面加上type=redirect,让其提交方式变成重定向就可以了,但是不知道为什么?3.系统自动生成的get/set方法要注意,今天遇到的问题是分页时一个属性名为cTwo,生成的get方法是getcTwo,这样导致了当点击二级目录时,无法获取cTwo,出现了空指针异常,这个问题非常隐蔽,不是特别的好找,所以要非常注意。4.关于session的问题(刷新页面的时候会出现问题,最后得出可能是缓存的问题)1。问题一从register_form.js中,发送请求时,验证码这一项出现乱码。$.post(validImage.action,{code:code},function(se){if(se){$(#number\\.info).html(验证码正确);}else{$(#number\\.info).html(验证码错误);//$(#noSee).click();}});解决方法:还改回用$.post方法。$.ajax({url:validImage.action,async:false,data:{code:code},success:function(se){if(se){$(#number\\.info).html(验证码正确);}else{$(#number\\.info).html(验证码错误);//$(#noSee).click();}}});2,类别流程:main/main.jsp-根据$(#left).load(category.action)解发aciton-/main/category.jsp-ahref='booklist.action?cid=${c2.id}&pid=${c1.id}'${c2.name}/a-/main/book_list.jsp3,写好逻辑后,类别加载不上:struts-user.xml中:actionname=loginclass=org.tarena.dang.action.user.LoginActionresultname=successtype=redirect/main/main.jsp/result必须加上type=redirect,因为在main/main.jsp中,如下代码:scripttype=text/javascript$(function(){$(#left).load(category.action);});/script必须在页面加载完成后,再执行。而在main/mian.jsp中有如下代码:s:actionname=findnewnamespace=/mainexecuteResult=true/s:action在它执行完毕后,关闭了数据库Connection,页面加载后,用默认的转发是一个请求之间,所以就得不到数据。改为重定向,就可以解决了。3问题:CartServiceImpl.java引发的购物车不能删除或全删问题必须通过引入,不能在迭代时删除,然后在循环外边删除。不然有java.util.ConcurrentModificationExceptionpublicbooleandelete(intpid){CartItemc=null;for(CartItemcart:items){if(cart.getPro().getId()==pid){dItem.add(cart);cart.setBuy(false);//booleanb=items.remove(cart);//动态删除有异常ConcurrentModificationExceptionc=cart;//引入,能过从外部删除可以解决上句异常}}items.remove(c);returntrue;}4问题:!)Cookie,关闭浏览器后,再打开浏览器时,showCart()不能显示以前的定单,而在order_info.jsp中确能显示以前放入Cookie里的信息。2)删除后,定单转入恢复栏后,关闭浏览器后。恢复里的东西不能回显。3)使用删除或恢复后出现递增删除,递增恢复的情况4)打开浏览器后,回显以前的数据,回显得到的确是上次更改前的定单数据。解决:1)把订单中删除的和没删除的都放在一个集合里面。用isBuy这个属性来控制是否是购买的2)把service/impl/CartServiceImpl类中的analyze()和re