1、关闭数据库连接
使用数据库连接时,记住要在finally中关闭,如果用到了连接池的话,实际上关闭操作实际上把连接归还给连接池;
2、从1开始
在使用ResultSet读取列值时,列是从左到右编号,第一列是1;比如"select id,name from student",可以使用rs.getString(2),也可以使用rs.getString("name")读取,但是前一种速度快些,后面一种可维护性强些,并且第二种方法中使用列名作为参数的时候,列名是不区分大小写的,所以也可是使用rs.getString("Name")读取;另外在用PreparedStatement的设置参数的时候,也是从1开始的;
3、安全的提供文件下载
在提供文件下载的时候,要防止盗连.内容被盗的损失不计,还加重了自己服务器的负担,而且还防止有人循环下载某一区间段的所有附件.解决问题的方法常见的有通过Apache Http Server来配置,只有满足一定条件的HTTP请求才允许下载;另一种是服务器生成一个随即的值,并放在Session对象中,当用户下载的文件的时候,必须把该随即值传回到服务器端,服务器断再判断该随即值是否和Session中的随即值一致;
4、forword与sendRedirect的区别
forword:RequestDispatcher dispatcher=request.getRequestDispatcher("/test.jsp");
dispatcher.forword(request,response);
sendRedirect:response.sendRedirect("/test.jsp");
如果称forword是一个导水渠,那么redirect则是一个指路人.forword将上一个流程的数据转向下一个流程,而redirect只是提示浏览器需要访问的下一个页面.因此forword只可以在同一个context中使用;
5、Action与DispatchAction
如果很多操作都是触发同一个已定义的Action,只是所带的method参数不同,这样设计方便把功能类似的操作定义在同一个Action里面,然后根据不同的method参数调用不同的方法.在定义Action的时候继承DispatchAction;而且在应用服务器中,每个Servlet就是一个线程,后一种办法会导致系统中存在大量的处理用户请求的线程,线程之间的切换的开销回严重降低应用服务器的性能;
6、sesson的关闭
一般情况下session都是存储在内存里,当服务器进程被停止或者重启的时候,内存里的session也会被清空.但是并不是浏览器关闭的时候session就消失了,这是不正确的.一般说来,session在下列情况下会被删除:
1)程序调用HttpSession.invalidate();
2)距离上一次收到客户端发送的session id时间间隔超过了session的超时限制;
3)服务器进程被停止或者重启;
7、java函数值传递还是引用传递?
java数据类型有两类:元数据类型和引用数据类型.在使用元数据类型进行传递的时候传递的是元数据类型本身的值,在传递引用数据类型的时候,传递的是这个引用对象的地址;
☆页面编码设置
1、保证JSP向客户端输出时是采用中文编码方式输出的,JSP源代编中加入以下一行:
<%@page contentType="text/html; charset=gb2312"%>
2、让JSP能正确获得传入的参数,在JSP源文件头加入下面一句:
<%request.setCharacterEncoding("GB2312");%>
3、让JSP编译器能正确地解码我们的含有中文字符的JSP文件,在JSP源文件中指定我们的JSP源文件的编码格式
<%@page pageEncoding="GB2312"%>
posted on 2007-05-30 17:17
破茧而出 阅读(328)
评论(0) 编辑 收藏 所属分类:
Java