1、ora-01000: maximum open cursors exceeded.
conn.createStatement()和conn.preparedStatement()未及时关闭
2、ServletActionContext
虽然是使用静态方法获取的request、response,仍然能保证获取的当前用户、当前线程的request、response,不会发生混淆。因为Struts 2利用ThreadLoca来维护当前线程的request、response等数据。
3 、帖到地址栏
avascript:R=0;%20x1=.1;%20y1=.05;%20x2=.25;%20y2=.24;%20x3=1.6;%20y3=.24;%20x4=300;%20y4=200;%20x5=300;%20y5=200;%20DI=document.images;%20DIL=DI.length;%20function%20A(){for(i=0;%20i-DIL;%20i++){DIS=DI[%20i%20].style;%20DIS.position='absolute';%20DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5;%20DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5);%20void(0);
4、使用XML配置数据校验Validator
下面对addBook.action进行校验,首先将BookAction继承ActionSupport以支持校验。校验配置XML文件名应为BookAction-addBook-validation.xml,位置与BookAction.class位于同一个包下。
5、以上校验是在服务器端完成的。Struts 2也支持客户端JavaScript校验。方法很简单,再将JSP的标签添加validate="true"属性即可。Struts 2的客户端校验与Struts 1不同,Struts 1使用了提示框显示错误信息,Struts 2抛弃了烦人的提示框,显示错误方式与服务器端校验完全一样。
6、Struts 2自带许多的校验器,包括字符串校验器、数字校验器、字符长度校验器、日期校验器、URL校验器、电子邮件校验器等。如果都不能满足,还可以使用正则表达式校验,正则表达式校验基本上可以满足所有的情况。
7、Struts 2颠覆了Web编程的传统,去掉了HttpServletRequest、HttpServletResponse、HttpSession、Cookie等Servlet API。不过如果需要,仍然可以获取到这些对象。Struts 2能自动转换数据类型,可以自定义数据转换器。同Struts 1一样,Struts 2也提供Validator,可以使用XML与@Java注解等两种方式配置。
8、JSP提交的数据全部是String类型的。Struts 2也是通过request.getParameter(name)获取到String类型数据,并通过拦截器将String转换各种常用的数据类型,如Date、Time、Timestamp等,然后通过getter、setter方法设置到Action对应的属性上。