`
zzc1684
  • 浏览: 1229765 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

项目生产环境下 log4j 和spring MVC视图解析viewResolvers的配置

阅读更多

首 先log4j和视图解析viewResolvers在spring管理的项目中常用到,而且每次没有配置好log4j,IDE集成工具的控制台都不好看到 输出日志。另外视图解析viewResolvers的运用可以帮我们过滤web项目访问的路径的前缀和后缀。所以,我想把这两个频繁的配置整理一下。

(1)先小结log4j的配置。这里是spring3.1.2环境项目下的配置,我们先在项目中导入log4j.jar包,在项目的web.xml配置中

我加入上下文的配置文件的映入:代码如下:

 

1 <context-param>
2        <param-name>contextConfigLocation</param-name>
3        <param-value>
4            classpath*:applicationContext.xml
5        </param-value>
6    </context-param>

接着我们在applicationContext.xml的上下文配置文件中 

 

加入log4j的属性文件:代码如下

 

1 <context:property-placeholder ignore-resource-not-found="true"
2                                   location="classpath*:application.properties,log4j.properties"/>

这里你只要加入log4j.properties属性文件就可以了,application.properties是我的数据库配置文件,你不加

 

。其中log4j.properties属性文件:

 

1 log4j.rootLogger=INFO, A1
2 log4j.appender.A1=org.apache.log4j.ConsoleAppender
3 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
4 log4j.appender.A1.layout.ConversionPattern=%m%n

1: 其中,属性INFO是日志的输出的级别,一般发布的时候用INFO,开发用 DEBUG

 

等级可分为OFFFATALERRORWARNINFODEBUGALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO, WARN, ERRORlog信息,而DEBUG信息不会被显示

 

2: log4j.appender.A1=org.apache.log4j.ConsoleAppender

此句为定义名为A1的输出端是哪种类型,可以是

org.apache.log4j.ConsoleAppender(控制台),

org.apache.log4j.FileAppender(文件),

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

3: 

 log4j.appender.A1.layout.ConversionPattern= [QC] %p [%t] %C.%M(%L) | %m%n

如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:

%m 输出代码中指定的消息

%p 输出优先级,即DEBUGINFOWARNERRORFATAL

%r 输出自应用启动到输出该log信息耗费的毫秒数

%c 输出所属的类目,通常就是所在类的全名

%t 输出产生该日志事件的线程名

%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:20021018 221028921

%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

4: 

 

 log4j.appender.A1.layout=org.apache.log4j.PatternLayout

此句为定义名为A1的输出端的layout是哪种类型,可以是

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

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

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

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

 

这样你的log4j的生产环境就配置好了,之后运行你的项目中,tomcat和控制台可以看到日志的输入了。

(2)接着继续分析spring的视图的解析viewResolvers

1:首先我们还是在项目的web.xml配置文件中加入代码:

 

01 <servlet>
02        <servlet-name>springMVC</servlet-name>
03        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
04        <init-param>
05            <param-name>contextConfigLocation</param-name>
06            <param-value>
07                classpath*:/mvc/applicationContext-mvc.xml
08            </param-value>
09        </init-param>
10        <load-on-startup>1</load-on-startup>
11    </servlet>

servlet初始化好Spring MVC的上下文applicationContext-mvc.xml配置文件

applicationContext-mvc.xml文件中,我们加入代码:

 

01 <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
02     <!-- 设置为true以忽略对Accept Header的支持(浏览器不同有可能不同)-->
03     <property name="ignoreAcceptHeader" value="true"/>
04  
05     <!-- 在没有扩展名时即: "/user/1" 时的默认展现形式 -->
06     <property name="defaultContentType" value="text/html"/>
07  
08     <!-- 扩展名至mimeType的映射,即 /user.json => application/json -->
09     <property name="mediaTypes">
10         <map>
11             <entry key="json" value="application/json"/>
12             <!-- <entry key="xml" value="application/xml" /> -->
13             <entry key="htm" value="text/html"/>
14             <entry key="do" value="text/html"/>
15             <entry key="qd" value="text/html"/>
16         </map>
17     </property>
18  
19     <property name="viewResolvers">
20         <list>
21             <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
22                 <property name="prefix" value="/pages/"/>
23                 <property name="suffix" value=".jsp"></property>
24             </bean>
25  
26         </list>
27     </property>
28  
29     <property name="defaultViews">
30         <list>
31             <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
32             <!--<bean class="com.daguu.base.view.MappingFastJsonView"/>-->
33         </list>
34     </property>
35  
36 </bean>

解释一下配置文件:

在Spring MVC中,因为ViewResolver是使用bean来配置的,所以扩展起来非常的容易,可以根据自己的需要定制ViewResolver,其中属性prefix是视图的前缀,suffix是视图的后缀,这里以我的路径来解释:

看我的这个项目路径,这里我逻辑路径是/pages/index.jsp经过滤和配置中

1 <entry key="htm" value="text/html"/>

类型转换后,最后我们的逻辑路径是index.htm

  ViewResolver接口是在DispatcherServlet中进行调用的,当DispatcherServlet调用完Controller 后,会得到一个ModelAndView对象,然后DispatcherServlet会调用render方法进行视图渲染。

这句话很重要,我们之前在web.xml中已经初始化了servlet了,接着我写出我的Controller控制类,通过它去转到jsp页面:

Controller类:

@Controller
@RequestMapping("/")
public class AuthController extends BaseControllerSupport{

    @Resource
    private BlogsService blogsService;

    @RequestMapping("/index")
    public String index(Model model, Page<Blog> page) {    
        blogsService.getBlogsList(page);      
        model.addAttribute("page", page);
        return "index";
    }

这里你只要关注
RequestMapping("/index")和return “index”即可,

在webapps的根目录下:

在index.jsp中写上基本路径和重定向的路径:

<%@ page language="java" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + 
request.getServerPort() + path + "/";
    response.sendRedirect(basePath+"index.htm");
%>

这样我们访问/pages/index.jsp的流程就是这样的,启动tomcat之后,先在web.xml中初始化

servlet和配置文件→appicationContext-mvc.xml过滤之后→Contrller类中return到webapps根目

录下的index.jsp中→重定向sendRedirect到index.htm(如果你是本地服务器的话,地址会是
http://localhost:8080/index.htm)

这就是我理解的spring MVC的视图解析ViewResolver


以上是我对log4j和ViewResolver两种常见配置自己的理解。

分享到:
评论

相关推荐

    spring mvc log4j

    - 通过 Spring 提供的 `Log4jConfigurer` 支持在运行时动态更新 Log4j 配置,通常用于开发和测试环境。 - 使用 `log4jConfigLocation` 参数在 Spring 配置文件中指定 `log4j.properties` 或 `log4j.xml` 文件的...

    项目配置文件( spring-mvc.xml spring-mybatis.xml web.xml log4j.properties)

    这里提到的四个关键配置文件——`spring-mvc.xml`、`spring-mybatis.xml`、`web.xml`以及`log4j.properties`,对于一个基于Java的Web应用来说至关重要,特别是使用Spring MVC和MyBatis框架的时候。接下来,我们将...

    springmvc log4j 配置 demo

    在IT行业中,日志记录是系统开发不...通过这个demo,你可以理解如何在Spring MVC项目中整合Log4j,以及如何有效地利用日志系统来跟踪和调试你的应用程序。这有助于提升开发效率,优化系统性能,并为问题排查提供便利。

    spring+springmvc+mybatis+log4j+springtest的demo

    这是一个基于Java技术栈的Web应用示例项目,主要采用了Spring、SpringMVC、MyBatis、Log4j和SpringTest等组件。以下是这些技术及其在项目中的应用详解: 1. **Spring**:Spring是一个全面的Java企业级应用开发框架...

    springmvc5+hibernate5+junit4+log4j2整合实例

    4. **配置Spring MVC**:配置Spring MVC的DispatcherServlet,设置拦截器、视图解析器、以及Spring的ApplicationContext,其中包含服务层和DAO层的bean定义。 5. **配置Hibernate**:创建Hibernate的SessionFactory...

    spring mvc 项目所需的jar包

    1. **Log4j**:这是一个流行的日志记录库,提供灵活的日志配置,可以根据不同的环境(开发、测试、生产)调整日志级别和输出格式。 2. **SLF4J (Simple Logging Facade for Java)**:它是一个日志抽象层,允许...

    搭建SSH框架需要引入的Struts2包(log4j,spring-web,struts2-spring-plugin)

    Log4j提供了丰富的配置选项,允许开发者定制日志级别、输出格式和目的地,使得在项目运行过程中可以方便地收集和分析信息。 在实际搭建SSH框架时,我们需要将这些jar文件添加到项目的类路径中。对于Struts2和Spring...

    spring mvc+hibernate+spring完整配置步骤

    在配置Spring MVC时,我们需要引入相应的库,包括Spring、Spring MVC、Hibernate、数据库驱动、日志库(如log4j)、数据源(如c3p0)等。然后,我们需要在web.xml中配置DispatcherServlet,定义HandlerMapping和...

    spring mvc jar包

    以上这些库构成了 Spring MVC 开发的基础环境,开发者可以利用它们来创建控制器、定义模型、配置视图解析器,以及实现事务管理、数据访问等复杂功能。通过 Spring MVC,开发者能够以声明式的方式组织应用程序,提高...

    spring mvc 项目

    调试时,可以借助日志系统(如Log4j)记录运行信息,或者使用Spring提供的MockMVC进行单元测试。 7. **持续学习与进阶** 对于初学者,理解并实践这个项目能帮助掌握Web开发的基本流程。进一步,你可以学习Spring ...

    spring+spring mvc+mybatis案例整合.docx

    在项目创建和配置中,我们首先创建了一个 Java Web 项目,然后导入了必要的依赖项,包括 Spring-webmvc、Spring-aspect、Spring-orm 和 Spring-test 等。接着,我们导入了 MyBatis 依赖项,包括 MyBatis核心依赖项和...

    maven+springmvc+mybatis+log4j框架搭建

    本教程将详细阐述如何使用四个关键组件——Maven、SpringMVC、MyBatis和Log4j——来搭建一个强大的Web应用框架,旨在提高开发效率并优化项目管理。 **Maven** 是一个流行的项目管理和综合工具,它通过统一的构建...

    spring mvc +mysql+log4j+aop

    综上,这个项目涵盖了Spring MVC作为web应用的核心框架,利用MySQL存储和处理数据,Log4j实现日志记录,AOP增强Controller的功能,DRUID作为高效的数据库连接池,以及对旧版浏览器的兼容性处理。对于初学者来说,这...

    spring+springMVC+mybatis+log4j框架整合

    1. 引入相关jar包:添加Spring、SpringMVC、Mybatis和log4j的依赖库到项目中。 2. 配置Spring:创建ApplicationContext.xml,定义Bean的配置。 3. 集成SpringMVC:配置web.xml,设置DispatcherServlet,定义servlet-...

    spring mvc_08

    在本项目"spring mvc_08"中,我们探讨了如何将Spring MVC与MyBatis集成,并结合Log4j进行日志管理。这个演示应用旨在帮助开发者理解这些技术的协同工作方式,以便在实际开发中高效构建Web应用程序。 首先,Spring ...

    spring3mvc导入包

    总之,"spring3mvc导入包大全"是一个集合了构建Spring3MVC项目所需的所有核心库和其他相关依赖的资源包,对于初学者来说,这是一个非常实用的起点,可以帮助快速搭建起一个功能完备的Spring MVC开发环境。

    spring mVC项目

    在这个项目中,我们看到Spring MVC与两个重要的技术——JPA(Java Persistence API)和log4j——进行了整合。 **Spring MVC** Spring MVC的核心组件包括DispatcherServlet、Controller、ViewResolver和ModelAndView...

    spring mvc所用jar包

    7. **其他辅助库**: 在实际项目中,我们可能还需要添加额外的 jar 包,如 Apache Commons Lang、Log4j 或 SLF4J 用于日志记录,Jackson 或 Gson 用于 JSON 处理,Hibernate 或 MyBatis 用于数据库操作等。...

    Spring 3 MVC - Part 1 & Part 2 (with log4j)

    7. **log4j集成**:介绍如何将日志系统log4j集成到Spring MVC项目中,实现日志记录和配置。 8. **单元测试**:学习使用JUnit和Mockito进行Controller的单元测试,保证代码质量。 通过本教程,读者将全面了解Spring...

    idea工具创建的Spring+SpringMVC+Hibernate+maven项目

    通过学习这个项目,你可以了解如何设置IDE、配置项目结构、使用Maven管理依赖、编写Spring配置、设计Spring MVC控制器、集成Hibernate进行数据库操作等。在实际操作中,你可能还会接触到JDBC、模板引擎(如Thymeleaf...

Global site tag (gtag.js) - Google Analytics