您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页实验3 使用Spring IoC、JDBC和AOP实现日志记录 (1)

实验3 使用Spring IoC、JDBC和AOP实现日志记录 (1)

来源:意榕旅游网
学号 姓名 实验时间 实验地点

实验3 使用Spring IoC、JDBC和AOP实现日志记录

实验目的:

1. 掌握使用注解和XML进行bean配置的方法。

2. 初步掌握使用Spring JDBC进行数据库操作的方法。

3. 初步掌握使用AOP实现切面编程和日志记录的方法。

4. 初步掌握Java中日志类的使用方法。

实验内容:

1. 使用Eclipse创建一个Gradle项目(java项目),写出gradle中的依赖配置以满足本项目的要求。

《J2EE应用框架设计与项目开发》实验报告

学号 姓名 实验时间 实验地点

configurations { pmd } dependencies { pmd group: 'pmd', name: 'pmd', version: '4.2.5' } task check << { 《J2EE应用框架设计与项目开发》实验报告

学号 姓名 实验时间 实验地点

ant.taskdef(name: 'pmd', classname: 'net.sourceforge.pmd.ant.PMDTask', classpath: configurations.pmd.asPath) ant.pmd(shortFilenames: 'true', failonruleviolation: 'true', rulesetfiles: file('pmd-rules.xml').toURI().toString()) { formatter(type: 'text', toConsole: 'true') fileset(dir: 'src') } } 2.写出Spring Beans配置文件中,数据源、jdbcTemplate等的定义。

《J2EE应用框架设计与项目开发》实验报告 学号 姓名 实验时间 实验地点

destroy-method=\"close\"

p:driverClassName=\"${driver}\"

p:url=\"${url}\"

p:username=\"${username}\"

p:password=\"${password}\">

p:dataSource-ref=\"dataSourse\">

《J2EE应用框架设计与项目开发》实验报告

学号 姓名 实验时间 实验地点

p:jdbcTemplate-ref=\"template\"> 3.在数据库中设计两个表,在新闻系统表中添加日志表

log(id,username,logtime,content)。为对应表分别设计POJO类,增加getter,setter和构造方法。

(1)为article表设计DAO类,使用Spring JdbcTemplate完成相关的CRUD操作,注意在DAO类中注入jdbcTemplate bean。给出DAO类的大纲视图并做说明。

《J2EE应用框架设计与项目开发》实验报告

学号 姓名 实验时间 实验地点

(2)定义增强类,通知,切点等,对DAO类中涉及数据库内容修改的操作进行增强,获取DAO类方法的参数并进行日志记录(使用jdbcTemplate写入log表)。写出相关的要素。

定义通知

@Aspect @Component public class TimeRecordingAspect { @Pointcut(\"execution(* com.tianmaying.aopdemo..*.bookFlight(..))\") private void timeRecordingPointCut() { } @Around(\"timeRecordingPointCut()\") //1 《J2EE应用框架设计与项目开发》实验报告

学号 姓名 实验时间 实验地点

public Object recordTime(ProceedingJoinPoint pjp) throws Throwable { //2 long start = System.currentTimeMillis(); Object retVal = pjp.proceed(); // 3 long duration = System.currentTimeMillis() - start; System.out.println(String.format( \"time for booking flight is %d seconds\ return retVal; } } 切点:

@Pointcut(\"execution(public * *(..))\") // 1 private void anyPublicOperation() {} @Pointcut(\"within(com.xyz.someapp.web..*))\") // 2 《J2EE应用框架设计与项目开发》实验报告

学号 姓名 实验时间 实验地点

private void inTrading() {} @Pointcut(\"anyPublicOperation() && inTrading()\") // 3 private void tradingOperation() {} @within(org.springframework.transaction.annotation.Transactional) // 4 private void transactionalClass() {} @annotation(org.springframework.transaction.annotation.Transactional) //5 private void transactionalMethod() {} (3)在将日志写入数据库的同时,希望能在屏幕或文本文件中进行日志记录。使用 java.util.Logger类、apache commons-logger或log4j实现本功能。写出修改之后的增强类。

1.首先封装了个LogManager。该类的主要作用就是static块中的代码,意在读取properties文件,初始化日志属性。 import java.io.IOException; import java.io.InputStream; import java.util.logging.Logger; 《J2EE应用框架设计与项目开发》实验报告 学号 姓名 实验时间 实验地点

public class LogManager {

// 初始化LogManager

static {

// 读取配置文件

ClassLoader cl = LogManager.class.getClassLoader();

InputStream inputStream = null;

if (cl != null) {

inputStream = cl.getResourceAsStream(\"log.properties\");

} else {

inputStream = ClassLoader

.getSystemResourceAsStream(\"log.properties\");

}

java.util.logging.LogManager logManager = java.util.logging.LogManager

《J2EE应用框架设计与项目开发》实验报告

学号 姓名 实验时间 实验地点

.getLogManager();

try {

// 重新初始化日志属性并重新读取日志配置。

logManager.readConfiguration(inputStream);

} catch (SecurityException e) {

System.err.println(e);

} catch (IOException e) {

System.err.println(e);

}

}

/**

* 获取日志对象

* @param clazz

《J2EE应用框架设计与项目开发》实验报告

学号 姓名 实验时间 实验地点

* @return

*/

public static Logger getLogger(Class clazz) {

Logger logger = Logger

.getLogger(clazz.getName());

return logger;

}

}

2.在需要记录日志的地方,通过LogManager.getLogger()方法得到Logger对象,然后调用其记录日志的方法记录日志。这里,我记录错误堆栈信息是用的 log(Level level, String msg, Throwable thrown) 。

贴出我的properties配置文件内容,其中handlers属性一定别忘了,我就因为缺少这个属性花费了很多时间找原因。

#Level的五个等级SEVERE(最高值) 、WARNING 、INFO 、CONFIG 、FINE 、FINER 、FINEST(最低值) 。这个不同于log4j

《J2EE应用框架设计与项目开发》实验报告

学号 姓名 实验时间 实验地点

#为 Handler 指定默认的级别(默认为 Level.INFO)。

java.util.logging.ConsoleHandler.level=INFO

# 指定要使用的 Formatter 类的名称(默认为 java.util.logging.SimpleFormatter)。

java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter

# 为 Handler 指定默认的级别(默认为 Level.ALL)。

java.util.logging.FileHandler.level=INFO

# 指定要使用的 Formatter 类的名称(默认为 java.util.logging.XMLFormatter)。

java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

# 指定要写入到任意文件的近似最大量(以字节为单位)。如果该数为 0,则没有限制(默认为无限制)。

java.util.logging.FileHandler.limit=1024000

# 指定有多少输出文件参与循环(默认为 1)。

java.util.logging.FileHandler.count=1

《J2EE应用框架设计与项目开发》实验报告

学号 姓名 实验时间 实验地点

# 为生成的输出文件名称指定一个模式。有关细节请参见以下内容(默认为 \"%h/java%u.log\")。 java.util.logging.FileHandler.pattern=C:/SSLog%u.log # 指定是否应该将 FileHandler 追加到任何现有文件上(默认为 false)。 java.util.logging.FileHandler.append=true handlers= java.util.logging.ConsoleHandler,java.util.logging.FileHandler 请将本实验的代码压缩之后作为文件2上传到作业系统。

《J2EE应用框架设计与项目开发》实验报告

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务