javascript
【SpringMVC】SpringMVC基础-SpringMVC项目快速搭建、日志框架为logback
轉載請注明出處:http://blog.csdn.net/qq_26525215
本文源自【大學之旅_諳憶的博客】
分析
Spring MVC提供了一個DispatcherServlet來開發(fā)Web應用。
在Servlet 2.5 及以下的時候只要在web.xml下配置<servlet>元素即可。
在下面的示例中,使用的是Servlet3.0+無web.xml的配置方式,在Spring MVC里實現WebApplicationInitialzer接口實現等同于web.xml的配置。
下面實例在IDEA中基于Maven搭建零配置的Spring MVC原型項目。
示例
構建Maven項目
pom.xml內容:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.chenhaoxiang</groupId><artifactId>highlight_springmvc4</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><!--Generic properties --><java.version>1.7</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!-- Web --><jsp.version>2.2</jsp.version><jstl.version>1.2</jstl.version><servlet.version>3.1.0</servlet.version><!-- Spring --><spring-framework.version>4.2.3.RELEASE</spring-framework.version><!--Logging --><logback.version>1.0.13</logback.version><slf4j.version>1.7.7</slf4j.version><log4j.version>1.2.17</log4j.version></properties><dependencies><dependency><groupId>javax</groupId><artifactId>javaee-web-api</artifactId><version>7.0</version><scope>provided</scope></dependency><!-- Spring MVC --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring-framework.version}</version></dependency><!-- 其他Web依賴 --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>${jstl.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${servlet.version}</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>${jsp.version}</version><scope>provided</scope></dependency><!-- Spring and Transaction --><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring-framework.version}</version></dependency><!-- 使用SLF4J和LogBack作為日志 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>${logback.version}</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>${logback.version}</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-access</artifactId><version>${logback.version}</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>${java.version}</source><target>${java.version}</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.3</version><configuration><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin></plugins></build></project>日志配置
在src/main/resources目錄下,新建logback.xml用來配置日志,內容如下:
<?xml version="1.0" encoding="UTF-8"?> <!-- 可以這樣描述配置文件的基本結構:以<configuration>開頭, 后面有零個或多個<appender>元素,有零個或多個<logger>元素,有最多一個<root>元素 --> <configuration debug="false" scan="true" scanPeriod="1 seconds"><!-- debug : 默認為false ,設置為true時,將打印出logback內部日志信息,實時查看logback運行狀態(tài)。scan : 配置文件如果發(fā)生改變,將會重新加載,默認值為true;scanPeriod : 檢測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位時毫秒,當scan為true時,這個屬性生效,默認時間間隔為1min。 --><contexListener class="ch.qos.logback.classic.jul.LevelChangePropagator"><resetJUL>true</resetJUL></contexListener><jmxConfigurator/><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><!-- <appender> 是 <configuration> 的子節(jié)點,是負責寫日志的組件。appender 有兩個必要屬性 name ,class 。name指定appender 的名稱, class 指定appender的全限定名class 包括 :ch.qos.logback.core.ConsoleAppender / ch.qos.logback.core.FileAppender/ ch.qos.logback.core.RollingFileAppender --><encoder><!--ch.qos.logback.core.ConsoleAppender 把日志添加到控制臺,有如下節(jié)點: <encoder> : 對日志進行格式化。<target> : 字符串System.out 或者 System.err, 默認 System.out;ch.qos.logback.core.FileAppender 把日志添加到文件ch.qos.logback.core.RollingFileAppender[常用] 滾動紀錄文件,先將日志記錄到指定文件,當符合某種條件時,將日志記錄到其他文件--><pattern>logbak: %d{HH:mm:ss.SSS} %logger{36} - %msg%n</pattern></encoder></appender><logger name="org.springframework.web" level="DEBUG"></logger><!--logger 是 <configuration> 的子節(jié)點 來設置某一個包或者具體的某一個類的日志打印級別,以及指定<appender>loger 僅有一個name屬性,兩個可選屬性 level/addtivityname : 用來指定受此loger約束的某一個包或者具體的某一個類level:用來設置打印級別,大小寫無關--><!-- 元素配置根 logger。該元素有一個 level 屬性。沒有 name 屬性,因為已經被命名 為“root”--><!-- 默認根節(jié)點是INFO級別的日志 --><!-- root:logger的根節(jié)點,就這一個,默認名稱就是rootlevel:日志級別appender-ref:確定使用哪個appender--><root level="info"><appender-ref ref="console"></appender-ref></root></configuration>將org.springframwork.web包下的類的日志級別設置為DEBUG,我們開發(fā)Spring MVC經常出現和參數類型相關的4XX錯誤,設置此項我們會看到更詳細的錯誤信息。
演示頁面
在這里有一個注意的地方,頁面的創(chuàng)建位置。
在src/main/resources下建立views目錄,并在此目錄下新建index.jsp。
內容如下:
這里的頁面不放在Maven標準的src/main/webapp/WEB-INF下,在這里這么放的原因是,Spring Boot的頁面是放置在src/main/resources下。
Spring MVC配置類
這個就是一個簡單的Spring配置類。
在這里配置了一個JSP的ViewResolver,用來映射路徑和實際頁面的位置,其中,@EnableWebMvc注解會開啟一些默認配置,如一些ViewResolver或者MessageConverter等
Spring MVC的ViewResolver,這個是Spring MVC視圖(JSP下就是html)渲染的核心機制;Spring MVC里有一個接口叫做ViewResolver(我們的ViewResolver都實現該接口),實現這個接口要重寫resolverViewName(),這個方法的返回值是接口View,而View的職責就是使用model、request、response對象,并將渲染的視圖(不一定是html,可能是json、xml、pdf)返回給瀏覽器。
可能會對映射路徑前綴配置為/WEB-INF/classes/views/有點奇怪,這不是我們放頁面的路徑啊。
這是因為看到的頁面效果是運行時而不是開發(fā)時的代碼,運行時代碼會將我們的頁面自動編譯到/WEB-INF/classes/views/下、
如圖:
這個是編譯后的路徑!
Web配置類
這個類就是為了代替web.xml的位置的。
package cn.hncu.springmvc;import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet;import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRegistration;/*** Created with IntelliJ IDEA.* User: 陳浩翔.* Date: 2016/12/19.* Time: 下午 3:44.* Explain:Web配置*/ public class WebInitializer implements WebApplicationInitializer {//WebApplicationInitializer是spring提供用來配置Servlet3.0+配置的接口,從而實現了替代web.xml的位置。//實現此接口將會自動被SpringServletContainerInitializer(用來啟動Servlet3.0容器)獲取到@Overridepublic void onStartup(ServletContext servletContext) throws ServletException {AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();context.register(MyMvcConfig.class);context.setServletContext(servletContext);//新建WebApplicationContext,注冊配置類,并將其和當前servletContext關聯ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher",new DispatcherServlet(context));//注冊Spring MVC的DispatcherServletservlet.addMapping("/");servlet.setLoadOnStartup(1);} }簡單的控制器
package cn.hncu.springmvc;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;/*** Created with IntelliJ IDEA.* User: 陳浩翔.* Date: 2016/12/19.* Time: 下午 3:55.* Explain:簡單控制器*/ @Controller //利用@Controller注解聲明是一個控制器 public class HelloController {@RequestMapping("/index")//利用@RequestMapping配置URL和方法之間的映射public String hello(){return "index";//通過上面ViewResolver的Bean配置,返回值為index,說明我們的頁面放置的路徑是:/WEB-INF/classes/views/index.jsp} }在這里,我們通過@RequestMapping配置URL和方法之間的映射,來訪問實際的頁面!
運行結果
最后,將程序部署到Tomcat中,啟動Tomcat,訪問:
http://localhost:8080/springMVC/index
本篇博客涉及到的源碼鏈接:
【->點擊訪問源碼-?CHX】本文章由[諳憶]編寫, 所有權利保留。
歡迎轉載,分享是進步的源泉。
轉載請注明出處:http://blog.csdn.net/qq_26525215
本文源自【大學之旅_諳憶的博客】
總結
以上是生活随笔為你收集整理的【SpringMVC】SpringMVC基础-SpringMVC项目快速搭建、日志框架为logback的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server表结构和数据导入到M
- 下一篇: CentOS6.8 mediawiki安