【Spring实战】----springMVC4.3.2的配置

来源:互联网 发布:网络本统考的时间 编辑:程序博客网 时间:2024/05/22 00:47

一、简单说明

本篇springMVC的配置涉及到springMVC配置、sitemesh配置、log4j2的配置

二、相关库文件

根据myeclipse中创建gradle web项目建立完成后,在build.gradle中添加下面库文件

apply plugin: 'java'apply plugin: 'war'sourceCompatibility = 1.5version = '1.0'jar {    manifest {        attributes 'Implementation-Title': 'Gradle Quickstart',                   'Implementation-Version': version    }}repositories {jcenter()    mavenCentral()}dependencies {    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'    testCompile group: 'junit', name: 'junit', version: '4.+'        //servlet    providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'    //在配置apply plugin: 'war'才可用    runtime("jstl:jstl:1.2")        //spring  def springVersion = "4.3.2.RELEASE";     compile "org.springframework:spring-context:$springVersion"      compile "org.springframework:spring-core:$springVersion"      compile "org.springframework:spring-webmvc:$springVersion"        //sitemesh    compile "org.sitemesh:sitemesh:3.0.0"        //log4j2    def log4j_version = "2.2";    compile "org.apache.logging.log4j:log4j-api:$log4j_version"compile "org.apache.logging.log4j:log4j-core:$log4j_version"compile "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"}test {    systemProperties 'property': 'value'}uploadArchives {    repositories {       flatDir {           dirs 'repos'       }    }}


三、web.xml

虽然spring从3.1版本后可以采用java配置的方式配置springMVC(具体可参见《spring实战第四版》)。但本文还是采用传统的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_3_0.xsd" id="WebApp_ID" version="3.0">  <display-name>SpringMango</display-name>  <!--==================== LISTENER Spring容器====================--><context-param>  <param-name>contextConfigLocation</param-name>  <param-value>classpath*:applicationContext-*.xml</param-value></context-param><listener>  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 防止内存泄漏 -->    <listener>        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>    </listener>        <!--==================== SERVLET Spring MVC====================--><servlet><servlet-name>Mango</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>Mango</servlet-name><url-pattern>/</url-pattern></servlet-mapping> <!--START 设置字符编码过滤器-->    <filter>        <description>字符集过滤器</description>        <filter-name>encodingFilter</filter-name>        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>        <init-param>            <description>字符集编码</description>            <param-name>encoding</param-name>            <param-value>UTF-8</param-value>        </init-param>    </filter>    <filter-mapping>        <filter-name>encodingFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>    <!--END 设置字符编码过滤器-->        <!--sitemesh装饰器--><filter><filter-name>sitemesh</filter-name><filter-class>org.sitemesh.config.ConfigurableSiteMeshFilter</filter-class><init-param><param-name>ignore</param-name><param-value>true</param-value></init-param><init-param><param-name>encoding</param-name><param-value>GBK</param-value></init-param></filter><filter-mapping><filter-name>sitemesh</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>

DispatcherServlet配置文件采用默认从/WEB-INF/下Mango-servlet.xml加载的方式,也可以通过contextConfigLocation指定xml文件路径:

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

四、servlet配置文件:Mango-servlet.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:context="http://www.springframework.org/schema/context"       xmlns:mvc="http://www.springframework.org/schema/mvc"       xsi:schemaLocation="http://www.springframework.org/schema/beans       http://www.springframework.org/schema/beans/spring-beans.xsd       http://www.springframework.org/schema/context       http://www.springframework.org/schema/context/spring-context.xsd       http://www.springframework.org/schema/mvc       http://www.springframework.org/schema/mvc/spring-mvc.xsd">    <!-- 扫描web包,应用Spring的注解 -->    <mvc:annotation-driven/>    <context:component-scan base-package="com.mango.jtt.controller"/>       <!-- jsp视图 -->    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />        <property name="prefix" value="/WEB-INF/views/jsp/"/>        <property name="suffix" value=".jsp"/>    </bean>        <!-- 静态资源不走controller --><mvc:resources mapping="/resources/**" location="/resources/" /><!-- or  <mvc:default-servlet-handler/> 与上面mvc:resources标签选其一即可,这里如果配置,必须配置<mvc:annotation-driven/>其他controller才可正常工作-->    </beans>

通过<mvc:annotation-driven/>启用springMVC的注解配置,该标签注册了多个特性:包括JSR-303校验支持,信息转换以及对域格式化的支持。

 <context:component-scan/>标签时查找对应支持的注解类并注册到容器中的bean

<mvc:resources/>标签配置静态资源文件不需要走控制器,直接映射到mapping下,该标签3.0.4及以后才有

五、controller

/** *  */package com.mango.jtt.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;/** * @author HHL * * @date 2016年11月22日 */@Controllerpublic class PageController {/** * 首页 映射/和/index路径 *  * @return * @throws Exception */@RequestMapping({ "/", "/index" })public String index() throws Exception {return "index";}}

六、index.jsp

采用了sitemesh装饰器

<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%><%@ include file="../includes/taglibs.jsp"%><!DOCTYPE html><html><head>    <title>Mango-Index</title><meta name="menu" content="home" />    </head><body><h1>欢迎光临!</h1><div style="text-align:center"><img src="<c:url value='/resources/images/team.jpg'/>" /></div></body></html>

装饰器sitemesh3.xml

<?xml version="1.0" encoding="UTF-8"?><sitemesh><mapping path="/" decorator="/WEB-INF/views/decorators/default.jsp" /><mapping path="/index" decorator="/WEB-INF/views/decorators/default.jsp" /></sitemesh>


default.jsp

<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%><%@ include file="../includes/taglibs.jsp"%><!doctype html><html><head><title><sitemesh:write property='title' /></title>    <meta http-equiv="Content-Type" content="text/html; charset=GBK"/><link rel="stylesheet" type="text/css" href="<c:url value='/resources/css/style.css'/>" /><sitemesh:write property='head' /><script type="text/javascript" src="<c:url value='/resources/js/jquery.js'/>"></script></head>    <div id="page">        <div id="header">            <jsp:include page="../includes/header.jsp"/>        </div>        <div id="content">        <ul id="tabmenu">        <li><a href="<c:url value='/'/>" class="current">首页</a></li>        </ul><div id="tabcontent"><sitemesh:write property='body'></sitemesh:write></div>        </div>        <div id="footer">            <jsp:include page="../includes/footer.jsp"/>        </div>    </div></body></html>


顺带着提下log4j2.xml

<?xml version="1.0" encoding="UTF-8"?><Configuration status="WARN">  <Appenders>    <Console name="Console" target="SYSTEM_OUT">      <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss.SSS} [%t] %-5level %l %msg%n"/>    </Console>        <RollingFile name="test_logger" filename="${sys:catalina.home}/logs/test_logger.log"      filepattern="${sys:catalina.home}/logs/test_logger.%d{yyyy-MM-dd-HH}.log">  <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss.SSS} %5p [%t] %c(%F:%L) - %msg%n" />      <Policies>      <!-- 文件大小配置 -->        <SizeBasedTriggeringPolicy size="100 KB"/>      </Policies>       <!-- 共存log文件数量 -->       <DefaultRolloverStrategy max="20"/>    </RollingFile>      </Appenders>    <Loggers>    <Root level="info">      <AppenderRef ref="Console"/>    </Root>    <!-- springMVC log配置 -->    <Logger name="org.springframework.web" level="info" additivity="false">      <AppenderRef ref="Console"/>    </Logger>    <!-- log文件配置 -->    <Logger name="test_logger" level="info" additivity="true">      <AppenderRef ref="test_logger"/>    </Logger>  </Loggers></Configuration>

七、异常处理(具体可参见《spring实战第四版》)

这里配置全局异常处理APPWideExceptionHandler.java

/** *  */package com.mango.jtt.controller;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;/** * 全局异常处理器 *  * @author HHL *  * @date 2016年11月23日 */@ControllerAdvicepublic class APPWideExceptionHandler {@ExceptionHandler(Exception.class)public String exceptionHandler(){return "errorPage/404";}}

404.jsp

<h2>Sorry, that page doesn't exist!</h2>


八、运行效果如下:

九、完整代码下载:

http://download.csdn.net/detail/honghailiang888/9690898  或  https://github.com/honghailiang/SpringMango


十、springMVC框架图









2 0
原创粉丝点击