項目生產環境下 log4j 和spring MVC視圖解析viewResolvers的配置

首先log4j和視圖解析viewResolvers在spring管理的項目中經常使用到,並且每次沒有配置好log4j,IDE集成工具的控制檯都很差看到輸出日誌。另外視圖解析viewResolvers的運用能夠幫咱們過濾web項目訪問的路徑的前綴和後綴。因此,我想把這兩個頻繁的配置整理一下。html

(1)先小結log4j的配置。這裏是spring3.1.2環境項目下的配置,咱們先在項目中導入log4j.jar包,在項目的web.xml配置中java

我加入上下文的配置文件的映入:代碼以下:web

 

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath*:applicationContext.xml
        </param-value>
    </context-param>

接着咱們在applicationContext.xml的上下文配置文件中 spring

 

加入log4j的屬性文件:代碼以下數據庫

 

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

這裏你只要加入log4j.properties屬性文件就能夠了,application.properties是個人數據庫配置文件,你不加apache

 

。其中log4j.properties屬性文件:json

 

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

1: 其中,屬性INFO是日誌的輸出的級別,通常發佈的時候用INFO,開發用 DEBUG瀏覽器

 

等級可分爲OFFFATALERRORWARNINFODEBUGALL,若是配置OFF則不打出任何信息,若是配置爲INFO這樣只顯示INFO, WARN, ERRORlog信息,而DEBUG信息不會被顯示tomcat

 

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 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL

%r 輸出自應用啓動到輸出該log信息耗費的毫秒數

%c 輸出所屬的類目,一般就是所在類的全名

%t 輸出產生該日誌事件的線程名

%n 輸出一個回車換行符,Windows平臺爲「rn」,Unix平臺爲「n」

%d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也能夠在其後指定格式,好比:%d{yyyy MMM dd HH:mm:ss,SSS},輸出相似:2002年10月18日 22:10:28,921

%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配置文件中加入代碼:

 

<servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                classpath*:/mvc/applicationContext-mvc.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

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

applicationContext-mvc.xml文件中,咱們加入代碼:

 

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
		<!-- 設置爲true以忽略對Accept Header的支持(瀏覽器不一樣有可能不一樣)-->
		<property name="ignoreAcceptHeader" value="true"/>

		<!-- 在沒有擴展名時即: "/user/1" 時的默認展示形式 -->
		<property name="defaultContentType" value="text/html"/>

		<!-- 擴展名至mimeType的映射,即 /user.json => application/json -->
		<property name="mediaTypes">
			<map>
				<entry key="json" value="application/json"/>
				<!-- <entry key="xml" value="application/xml" /> -->
				<entry key="htm" value="text/html"/>
				<entry key="do" value="text/html"/>
				<entry key="qd" value="text/html"/>
			</map>
		</property>

		<property name="viewResolvers">
			<list>
				<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
					<property name="prefix" value="/pages/"/>
					<property name="suffix" value=".jsp"></property>
				</bean>

			</list>
		</property>

		<property name="defaultViews">
			<list>
				<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
				<!--<bean class="com.daguu.base.view.MappingFastJsonView"/>-->
			</list>
		</property>

	</bean>

解釋一下配置文件:

在Spring MVC中,由於ViewResolver是使用bean來配置的,因此擴展起來很是的容易,能夠根據本身的須要定製ViewResolver,其中屬性prefix是視圖的前綴,suffix是視圖的後綴,這裏以個人路徑來解釋:

看個人這個項目路徑,這裏我邏輯路徑是/pages/index.jsp通過濾和配置中

<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兩種常見配置本身的理解。

後續有不少開發填坑的文章發佈,若是對你有幫助,請支持和加關注一下

http://e22a.com/h.05ApkG?cv=AAKHZXVo&sm=339944

https://shop119727980.taobao.com/?spm=0.0.0.0 

相關文章
相關標籤/搜索