spring 4.2.3返回视图(jsp/vm)或者json

web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"  xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <!-- 加载spring的配置和日志的配置 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <!--项目字符集设置-->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <!--字符集设置-->
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <!--是否强制字符集转化-->
        <init-param>
            <param-name>forceEndofing</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- 在启动Web容器时,自动装配spring applicationContext.xml的配置信息 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>fymSpringTest</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--加载spring的配置-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-servlert.xml</param-value>
        </init-param>
        <!--设置某项的启动顺序,一般像数据库连接池等模块需要优先启动的,就在web.xml中设置启动优先级。如:
        中间的值越小,优先级就越高-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>fymSpringTest</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>
</web-app>

spring-servlert.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">

    <context:component-scan base-package="com.galaxy.fym.action"></context:component-scan>

    <!-- 返回json 方法一 需要导入 fastjson.jar包 -->
    <mvc:annotation-driven>
        <mvc:message-converters register-defaults="false">
            <!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
            <bean id="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <!-- 这里顺序不能反,一定先写text/html,不然ie下出现下载提示 -->
                        <value>text/html;charset=UTF-8</value>
                        <value>application/json;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

    <!-- 配置视图解析器 -->
    <!--返回vm文件-->
    <bean class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
        <property name="suffix" value=".vm" />
        <property name="contentType" value="text/html;charset=utf-8" />
    </bean>
    <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
        <property name="resourceLoaderPath" value="WEB-INF/view/" />
    </bean>
    <!--返回jsp文件-->
    <!--<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="view/"/>
        <property name="suffix" value=".jsp"/>&lt;!&ndash;可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑  &ndash;&gt;
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    </bean>-->
</beans>

logback.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>

    <!-- 日志存放路径 -->
    <property name="LOG_PATH" value="./log" />

    <!-- error的日志 -->
    <appender name="errorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/all_error.log</File>
        <!-- 所有ERROR级别的日志文件打印在一个文件里 过滤器只会过滤对应的日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/all_error.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>5</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <!-- common下的类打印日志 -->
    <appender name="commonLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/common.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/common.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>5</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <!-- front下的类打印日志 -->
    <appender name="frontLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/front.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/front.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>100MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <!-- job下的类打印日志 -->
    <appender name="jobLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/job.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/job.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>100MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <!-- remote下的类打印日志 -->
    <appender name="remoteLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/remote.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/remote.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>100MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <!-- service下的类打印日志 -->
    <appender name="serviceLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/service.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/service.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>100MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <!-- 支付日志 -->
    <appender name="payLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/pay.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/pay.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>100MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <logger name="com.galaxy.fym.common" level="ERROR">
        <appender-ref ref="commonLog"/>
    </logger>
    <logger name="com.galaxy.fym.front" level="ERROR">
        <appender-ref ref="frontLog"/>
    </logger>
    <logger name="com.galaxy.fym.job" level="INFO">
        <appender-ref ref="jobLog"/>
    </logger>
    <logger name="com.galaxy.fym.remote" level="INFO">
        <appender-ref ref="remoteLog"/>
    </logger>
    <logger name="com.galaxy.fym.service" level="INFO">
        <appender-ref ref="serviceLog"/>
    </logger>
    <logger name="com.galaxy.fym.pay.Pay" level="INFO">
        <appender-ref ref="payLog"/>
    </logger>

    <!-- 框架的输出 -->
    <!--<logger name="org.springframework.core" value="ERROR" />
    <logger name="org.springframework.beans" value="ERROR" />
    <logger name="org.springframework.context" value="ERROR" />
    <logger name="org.springframework.web" value="ERROR" />
    <logger name="org.apache.zookeeper" value="ERROR" />-->

    <!-- 对所有的class文件都会起效果 -->
    <root>
        <appender-ref ref="errorLog"/>
    </root>
</configuration>

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">
    <!-- 声明项目描述符遵循哪一个POM模型版本 -->
    <modelVersion>4.0.0</modelVersion>
    <!--项目的全球唯一标识符 -->
    <groupId>com.galaxy.fym</groupId>
    <!--构件的标识符 -->
    <artifactId>logback</artifactId>
    <!--项目当前版本,格式为:主版本.次版本.增量版本-限定版本号-->
    <version>1.0.0-SNAPSHOT</version>
    <!--项目产生的构件类型,例如jar、war、ear、pom等-->
    <packaging>war</packaging>
    <!--项目的名称, Maven产生的文档用-->
    <name>log test</name>
    <!--项目主页的URL, Maven产生的文档用-->
    <url>http://www.baidu.com</url>
    <!--项目的详细描述, Maven 产生的文档用。-->
    <description>MADE IN FYM</description>
    <!--描述了这个项目构建环境中的前提条件。-->
    <prerequisites>
        <!--构建该项目或使用该插件所需要的Maven的最低版本-->
        <maven></maven>
    </prerequisites>
    <!--项目开发者列表-->
    <developers>
        <developer>
            <id>fengyiming</id>
            <name>Errom</name>
            <email>fengyiming2012@sina.com</email>
            <url>http://blog.csdn.net/abcde474524573</url>
        </developer>
    </developers>
    <!--pom文件里通用参数-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>4.2.3.RELEASE</spring.version>
        <project.version>1.0.0.SNAPSHOT</project.version>
    </properties>

    <!--通过maven依赖jar包-->
    <dependencies>
        <!-- 日志jar包 依赖slf4j-api logback-core  start-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-access</artifactId>
            <version>1.1.5</version>
        </dependency>
        <!-- 日志jar包 依赖slf4j-api logback-core end -->

        <!--spring依赖的jar包 start-->
        <!--
        Spring包依赖说明:
        1) spring-core.jar需commons-collections.jar,spring-core.jar是以下其它各个的基本。
        2) spring-beans.jar需spring-core.jar,cglib-nodep-2.1_3.jar
        3) spring-aop.jar需spring-core.jar,spring-beans.jar,cglib-nodep-2.1_3.jar,aopalliance.jar
        4) spring-context.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,commons-collections.jar,aopalliance.jar
        5) spring-dao.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,spring-context.jar
        6) spring-jdbc.jar需spring-core.jar,spring-beans.jar,spring-dao.jar
        7) spring-web.jar需spring-core.jar,spring-beans.jar,spring-context.jar
        8) spring-webmvc.jar需spring-core.jar/spring-beans.jar/spring-context.jar/spring-web.jar
        9) spring -hibernate.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,spring- dao.jar,spring-jdbc.jar,spring-orm.jar,spring-web.jar,spring-webmvc.jar
        10) spring-orm.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,spring- dao.jar,spring-jdbc.jar,spring-web.jar,spring-webmvc.jar
        11) spring -remoting.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,spring- dao.jar,spring-context.jar,spring-web.jar,spring-webmvc.jar
        12) spring-support.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,spring-dao.jar,spring-context.jar,spring-jdbc.jar
        13) spring-mock.jar需spring-core.jar,spring-beans.jar,spring-dao.jar,spring-context.jar,spring-jdbc.jar -->
        <!--Spring框架基本的核心工具类-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--spring mvc使用的jar-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--自动载入WebApplicationContext特性的类、 Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- velocity模板类 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--spring依赖的jar包 end-->

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.7</version>
        </dependency>

        <!-- jackson start-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.7.0</version>
        </dependency>
        <!-- jackson end-->

        <!--jsp start-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!--jsp end-->

        <!--velocity start-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-tools</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.6.3</version>
        </dependency>
        <!--velocity end-->
    </dependencies>
</project>

跨域处理

package com.galaxy.mobile.front.action;

import com.galaxy.mobile.model.annotation.MethodAnnotation;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.AbstractJsonpResponseBodyAdvice;

/**
 * Created by fengyiming on 2016/8/30.
 */
@ControllerAdvice
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {

    @MethodAnnotation(desc = "当请求参数里包含callback或者jsonp信息时做跨域处理")
    public JsonpAdvice(){
        super("callback","jsonp");
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值