中北大学2014届毕业设计说明书
3.1.3数据库的连接原理
采用JDBC连接数据库的方式,只需在工程中导入对应数据库的jar包,就可以方便的对数据库进行连接,在程序中,用Class.forName()方法来加载驱动程序,在用DriverManager的getConnection()方法就可以创建一个数据库连接。程序采用的是DAO模式来操作数据库,DAO(Data Access Object,数据访问对象),是Java编程中的一种经典模式,已被广泛应用,也是J2EE架构中持久层框架的基础知识,基于分层次式的软件架构来实现对数据库的访问操作。DAO模式的主要思想就是从抽象数据源获取与操纵数据的方法。抽象数据的含义就是编写应用程序的程序员不必关心数据库的物理位置,已经是何种数据库,只需使用封装数据库中表示记录的数据对象即可。其思想如图3.10所示:
BusinessObject 使用 DataAccessObject 封装 DataSource
图3.4 DAO模式类图
获取/修改 DataTransferObject 创建/使用 图中BussinessObject是业务对象,是使用DAO模式的客户端;DataTransferObject数据传输对象,在应用程序不同层次之间传输对象,在一个分布式应用程序中,通常可以提高整理的性能;DataObjectAcces数据输入/输出对象封装了对数据源的一些基本操作;DataSource指的是数据源。可以从图中看出,DAO模式分离了业务逻辑和数据罗即将,是的编写的软件具有良好的层次式体系结构。本系统为了方便数据库的操作,主要使用DBContent的对象来接一个数据库(建立一个类DBContent),代码如下: public DBContent(){
String CLASSFORNAME=\;//连接数据库的驱动 String url=\;
第13页 共42页
中北大学2014届毕业设计说明书
String user=\;//连接数据库的用户名 String password=\;//连接数据库的密码 try{
Class.forName(CLASSFORNAME);
con= DriverManager.getConnection(url,user,password);//加载数据库的驱动
stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_U
PDATABLE);
}
catch(Exception ex){ } }
ex.printStackTrace();
在程序需要连接数据库的地方,只需要生成一个DBConnet的对象,就可以对数据库进行连接并操作。 3.2中文乱码问题处理
在程序中经常会遇到中文乱码的情况,如果手动的在servlet和jsp页面进行设置,相当麻烦。因此,在程序的开始就写了一个过滤器SetCharacterEncodingFilter。 在web.xml中配置:
第14页 共42页
中北大学2014届毕业设计说明书
对应的SetCharacterEncodingFilter.java文件中的重要代码,在初始化init()方法中定义: public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter(\); String value = filterConfig.getInitParameter(\); }
在工具包util包中同样定义了DataFormate类来处理字符转换: public statg gbStr){ic String toUni(Strin
String uniStr = \; /*把字符串转换成uincode编码*/ if(gbStr == null){ gbStr = \; } try{
byte[] tempByte = gbStr.getBytes(\); uniStr = new String(tempByte,\); }catch(Exception ex){ }
return uniStr; }
/* 把字符串转换成Utf8编码*/ public static String toUtf8String(String s) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c >= 0 && c <= 255) { sb.append(c); } else {
第15页 共42页
中北大学2014届毕业设计说明书
byte[] b; try {
b = Character.toString(c).getBytes(\); }catch (Exception ex) { System.out.println(ex); b = new byte[0]; return sb.toString();
}
for (int j = 0; j < b.length; j++) { int k = b[j]; if (k < 0) {
k += 256; sb.append(\ + Integer.toHexString(k). toUpperCase()); } }
}
第16页 共42页 }
相关推荐: