SSH框架学习之Spring ---- 3、Spring封装的监听器和log4j的用法

第一部分:监听器

问题所在:

action调用service、service调用dao。每次访问action的时候,都要创建一次对象,且加载一次配置文件,这显得很耗费资源。

底层解决方案

仅在服务器启动的时候,创建对象加载文件,通过在底层使用监听器、servletContext对象,在ServletContext的init()时加载配置文件。

Spring封装的解决方案

Spring封装了一个监听器(实现了servletContextListener接口)

第一步:导入jar包 spring-web-4.2.4RELEASE.jar

第二步: 在web.xml引入配置监听器

在这里插入图片描述
第三步:指定加载的spring配置文件的位置
在web.xml中添加

	<!-- 指定spring配置文件位置 -->
	<context-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:bean1.xml</param-value>
  	</context-param>

最终的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>spring_day02_webdemo</display-name>
  
  	<!-- 指定spring配置文件位置 -->
  	<context-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:bean1.xml</param-value>
  	</context-param>
  	
      <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <!-- 配置监听器 -->
    <listener>
    	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

效果:访问action时,不会每次都加载文件!

第二部分:log4j

通过log4j,可以看到程序运行过程中更详细的信息

(1)需要导入log4j.jar 包
(2)复制这个文件到src下

在这里插入图片描述

code:log4j.properties


  
### \u8F93\u51FA\u4FE1\u606F\u5230\u63A7\u5236\u62AC ###  
log4j.appender.stdout = org.apache.log4j.ConsoleAppender  
log4j.appender.stdout.Target = System.out  
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout  
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} %m%n  
  
### \u8F93\u51FADEBUG \u7EA7\u522B\u4EE5\u4E0A\u7684\u65E5\u5FD7\u5230=E://logs/log.log ###  
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender  
log4j.appender.D.File = ./logs/log.log  
log4j.appender.D.Append = true  
log4j.appender.D.Threshold = INFO   
log4j.appender.D.layout = org.apache.log4j.PatternLayout  
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %p ]  [ method:%l ]  %m%n

### \u8F93\u51FAERROR \u7EA7\u522B\u4EE5\u4E0A\u7684\u65E5\u5FD7\u5230=E://logs/error.log ###  
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender  
log4j.appender.E.File = ./logs/error.log   
log4j.appender.E.Append = true  
log4j.appender.E.Threshold = ERROR   
log4j.appender.E.layout = org.apache.log4j.PatternLayout  
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %p ]  [ method:%l ]  %m%n
###
log4j.rootLogger=debug, stdout

猜你喜欢

转载自blog.csdn.net/qq_37591656/article/details/84899236