Java EE架构设计与开发实践
上QQ阅读APP看书,第一时间看更新

实训2 JDBC数据库连接及常用开发工具使用

一、实验目的

1.完成一个简单的Java EE项目,掌握Java Web开发基本过程。

2.JDBC连接数据库(以SQL Server 2008为例)练习,掌握JDBC数据库连接方法。

3.日志记录练习(选做)。

4.Java图表使用(选做)。

二、实验内容

1.第一个Java EE应用:Helloworld

开发步骤如下。

(1)在MyEclipse中新建一个Web Project,工程名为HelloWorld,创建完毕的工程如图2-32所示。

图2-32 新建Web Project

(2)在创建项目的时候,在项目的WebRoot下会自动生成一个index.jsp文件,如需创建其他jsp文件,则选择WebRoot→new→jsp,打开index.jsp文件,将其内容修改为:

        <%@ page language="java" pageEncoding="ISO-8859-1"%>
        <head>
            <title>Hello page</title>
        </head>
        <body>
            Hello World!
        </body>

(3)部署Tomcat,单击图标,Project选择HelloWorld,单击Add按钮,Server选择Tomcat 7.0,单击Finish按钮,如图2-33所示。

图2-33 部署Tomcat

单击OK按钮即部署成功。

(4)启动Tomcat服务器。

(5)打开浏览器,在地址栏中输入http://localhost:8080/HelloWorld/index.jsp,出现如图2-34所示的界面。

图3-34 程序运行界面

2.通过JDBC连接SQL Server 2008

(1)修改SQL Server 2008。

首先要确保SQL Server数据库的登录方式是“混合验证模式”。如果不是也不要紧,数据库登录模式至少是 “Windows身份验证模式”,所以打开Microsoft SQL Server Management Studio,以Windows身份验证模式登录。在对象资源管理器内右击数据库,选择“属性”。在弹出的窗口左侧选择“安全性”,然后在右侧选中“SQL Server和Windows身份验证模式”单选按钮,单击“确定”按钮即可,操作过程如图2-35所示。

图2-35 修改为“混合验证模式”登录

(2)配置SQL JDBC驱动。

下载Microsoft JDBC Driver 6.0 for SQL Server,下载地址为http://www.microsoft.com/zh-cn/download/details.aspxid=11774

SQLJDBC 6.0版本支持的SQL Server有:

❑ Microsoft®SQL Server® 2016;

❑ Microsoft®SQL Server® 2014;

❑ Microsoft®SQL Server® 2012;

❑ Microsoft®SQL Server® 2008 R2;

❑ Microsoft®SQL Server® 2008;

❑ Microsoft®SQL Server® 2005;

❑ Microsoft®SQL Azure。

下载sqljdbc_4.0.2206.100_chs.tar.gz(2.2M),解压文件,得到sqljdbc.jar和sqljdbc4.jar。如果开发者使用的是jre1.7版本,则可忽略sqljdbc.jar(因为用不了,而且如果和sqljdbc4.jar一起用会出错),只留下sqljdbc4.jar。

解压缩后放在C:\Program Files\Microsoft SQL Server JDBC Driver目录下。然后配置环境变量:计算机→属性→高级→环境变量,在CLASSPATH中添加“ . ;C:\Program Files\Microsoft SQL Server JDBC Driver\sqljdbc_2.0\chs\sqljdbc.jar”。

(3)MyEclipse配置。

启动MyEclipse,调整视图到MyEclipse Database Explorer perspective。在DB Browser的空白处右击,在弹出的快捷菜单中选择New新建一个数据库连接。按照如图2-36所示填写数据即可。其中Driver template忽略,Driver name可自定义。单击Add JARs按钮,选择C:\Program Files\Microsoft SQL Server JDBC Driver\sqljdbc_2.0\chs\sqljdbc4.jar文件。

图2-36 添加sqljdbc4.jar驱动包

单击Test Driver就可以测试连接情况,如图2-37所示。

图2-37 成功连接测试结果

(4)如果是使用Tomcat做服务器,那么需要将sqljdbc4.jar类库文件复制到Tomcat安装目录的\lib目录下。

注意:添加驱动包时只有一个sqljdbc4.jar。如果把sqljdbc.jar和sqljdbc4.jar都放在一起的话,这样就算所有操作全都做对了,也会持续出现有“此驱动程序不支持JRE 1.7,请使用支持JDBC 4.0的sqljdbc4.jar的类库”的问题,因为JDK默认选择了sqljdbc.jar。

3.Java项目如何记录日志

因为Log4j的强大,同时开发者又不希望对Log4j的依赖性太强。所以目前比较流行的是commons-logging和Log4j结合使用。下面通过一个简单实例了解它们的使用。在MyEclipse的Java项目中新建一个Test.java文件,添加日志包工程目录结构如图2-38所示。

图2-38 添加日志包文件

(1)右击项目,在弹出的快捷菜单中选择Java Build Path→Libraries→Add Libraries添加相应的包,导入如上log中对应Commons Logging.jar和log4j-1.2.14.jar包。

(2)在src下新建log4j.properties文件,内容如下:

        #定义DEBUG优先级,R为日志输出目的
           log4j.rootLogger= DEBUG, R
          #设置日志输出类型为文件类型
           log4j.appender.R= org.apache.log4j.FileAppender
          #设置日志文件名logRecord.log,输出到应用服务器或MyEclipse工作区的logs目录下
           log4j.appender.R.file= ../logs/logRecord.log
          #每次在文件尾写入新的日志信息
           log4j.appender.R.Append= true
        #日志输出信息格式类型
           log4j.appender.R.layout= org.apache.log4j.PatternLayout
          #日志输出信息格式为 换行、日期、优先级、 [ 全类名 ] 、日志信息、换行
           log4j.appender.R.layout.ConversionPattern= %n%d%p [%l] %m%n

(3)编写测试类Test.java。

        import org.apache.commons.logging.Log;
        import org.apache.commons.logging.LogFactory;
          /*一个简单使用日志记录的例子
        *  Java EE架构设计与开发实践》-清华大学出版社,方巍,2017
        */
          public class Test {
            //在任何需要记录日志的类中添加下面语句
            Log loger = LogFactory.getLog( this .getClass());
          public void one() {
              loger .info( "进入方法内!" );
              try {
                  System.out.println(8/0);  //测试异常语句信息
              } catch (RuntimeException e) {
                  loger.error(e.getMessage());
              }
              loger.info( "从方法内出来!" );
          }
        public static void main(String[] args) {
              new Test().one();
          }
        }

(4)打开MyEclipse的Workspaces中设置的子目录logs\logRecord.log,查看记录的日志如下:

        2016-08-01 21:23:10,961INFO [Test.one(Test.java:11)] 进入方法内!
        2016-08-01 21:23:10,963ERROR [Test.one(Test.java:15)] / by zero
        2016-08-01 21:23:10,964INFO [Test.one(Test.java:17)] 从方法内出来!

说明:

使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法如下。

        static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName
          () ) ;

推荐使用commons-logging结合log4j进行日志记录:

        private static Log logger = LogFactory.getLog(Yourclass.class);

其次,插入记录信息(格式化日志信息),常使用的类如下:

❑ org.apache.log4j.HTMLLayout(以HTML表格形式布局);

❑ org.apache.log4j.PatternLayout(可以灵活地指定布局模式);

❑ org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串);

❑ org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)。

最后,当上两个必要步骤执行完毕后,使用不同优先级别的日志记录语句插入到程序中想记录日志的任何地方,其语法如下:

❑ Logger.debug ( Object message);

❑ Logger.info ( Object message);

❑ Logger.warn ( Object message);

❑ Logger.error ( Object message);

使用Log4j代码如下:

        import org.apache.commons.logging.Log;
        import org.apache.commons.logging.LogFactory;
        //Log4j代码
        public class TestLog {
          private static Log log = LogFactory.getLog(TestLog.class);
          public void log() {
            log.debug("Debug info.");
            log.info("Info info");
            log.warn("Warn info");
            log.error("Error info");
            log.fatal("Fatal info");
        }
        public static void main(String[] args) {
            TestLog test = new TestLog();
            test.log();
        }
      }

查看logs/logRecord.log文件记录的日志如下:

    2016-08-01 22:22:12,358DEBUG [TestLog.log(TestLog.java:8)] Debug info.
    2016-08-01 22:22:12,361INFO [TestLog.log(TestLog.java:9)] Info info
    2016-08-01 22:22:12,361WARN [TestLog.log(TestLog.java:10)] Warn info
    2016-08-01 22:22:12,361ERROR [TestLog.log(TestLog.java:11)] Error info
    2016-08-01 22:22:12,361FATAL [TestLog.log(TestLog.java:12)] Fatal info

4.Java图表JFreeChart使用

完成本章2.6.4节中报表图形引擎JFreeChart中的实例(选做)。