| 网站镜像:电信 网通 | 加入收藏 | 设为首页

基于J2EE的开发的一些经验

  •  

    1.CMP的findByPrimaryKey有时将返回NULL:
    给findByPrimaryKey送了一个数据库中不存在的键值,就抛出了异常
    如果参数是数据库中存在的一个关键字,则是返回对应的primarykey
    2.对于BMP,必须远程的调用一个create方法,否则只能被使用一次,就会出现JDBC的问题。这个create()如果不是用返回对象的话可以任意写一个返回primayKey值即可
    3.response.setContentType("text/xml;charset=UTF-8");
    PrintWriter out = response.getWriter();
    但需要指定编码时,这两条语句必须是这个顺序,否则就会出错。
    因为response.getWriter()的默认编码是ISO-5988-1,它是不能被转码成GB2312,UTF-8.
    而且这种编码时不支持中文的。                                                                                                                                   4.对于jsp页面,通常是不需要在web.xml文件中配置,就可以根据链接,就可以访问。只有对于于特定的访问就需要
    配置到web.xml文件中,以控制页面的走向。
    5.对于错误处理页面,只要在web.xml文件中设置如下:
            <error-page>
      <error-code>404</error-code>
      <location>/error.jsp</location>
     </error-page>
    即当页面访问出错时,就会显示该页面。对于请求所出的错误是没有办法的!
    6.对于jsp和servlet的显示和处理,经常可能出现乱码。
     通常
       对于jsp,有<%@ page contentType="text/html;charset=gb2312"%>
       对于servlet,有Response.setContentType("text/html;charset=gb2312");
       一般对于显示,中文上面是保险的办法,其他的一些编码会经常出乱码
    7.有时还需要对request的内容进行编码。如
       request.setCharacterEncoding("GBK");
    8.在servlet中从服务器的数据库中读出文件(上传可以用fileupload组件smartupload组件)的办法.例:
     String sql="SELECT FileSize,FileStore FROM ResourseStore where MagazineNumber='"+MIDValue+"'";
               stmt=con.prepareStatement(sql);
                 ResultSet rs=stmt.executeQuery();
                 if(rs.next()){
                   int len=rs.getInt("FileSize");
                   InputStream  in = rs.getBinaryStream("FileStore");//对于ResultSet而言,获取值得顺序同select中返回值的顺序,否则数据库会出异常。
                   byte b[]=new byte[len];
          while(true)
          {
           int readlen=in.read(b);
           if(readlen==-1)
           {
              break;
          }
          }
                   response.setContentType("application/x-msdownload");
                   ServletOutputStream op = response.getOutputStream();
                   op.write(b,0,b.length);
                   op.flush();
                   op.close();

    如果数据库支持clob或clob时(sql service不支持读取,也不支持URL),可以采用别的办法解决问题。如:读取二进制(如上),读入字符串,然后通过类型转换即可!