SpringMVC开发移动端接口(返回Json数据)

来源:互联网 发布:对p2p网络信贷的看法 编辑:程序博客网 时间:2024/05/18 00:44

Eclipse+Spring+SpringMVC+Redis+MySql

+MyByties+Maven开发移动端接口


1、pom.xml文件,配置Maven本地仓库

pom文件是Maven的配置文件,可以加载依赖的jar。还可以加载本地的jar。打包项目等。
说明:

  • 1、本项目要用MVC返回json数据,除了要在controler中的对应方法上添加 @ResponseBody,来说明是返回特殊类型数据(非页面)外,还要引入com.fasterxml.jackson.core的jar包。具体可以参考下边的代码。
  • 2、本项目除了Maven管理和下载的jar包外,还有本地class路径下的lib目录里的本地jar包需要引用。用Maven打包管理项目,需要在pom文件中配置好本地jar。否则打包不成功。
    如:
<dependency>    <groupId>org.springside</groupId>    <artifactId>springside3-core</artifactId>    <version>3.3.4</version>    <scope>system</scope>      <systemPath>${project.basedir}/lib/springside3-core-3.3.4.jar</systemPath>   </dependency>

pom.xml配置如下:

<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>com.keegoo</groupId>    <artifactId>KeegooDService</artifactId>    <name>KeegooDService</name>    <!-- version不要修改,否则部署会失败 -->    <version>1.0-SNAPSHOT</version>    <packaging>war</packaging>    <properties>        <!-- finalName不要修改,否则部署会失败 -->        <finalName>ROOT</finalName>        <!-- <springVersion>4.3.12.RELEASE</springVersion> -->        <!-- springframe 版本控制 -->        <spring.version>4.2.4.RELEASE</spring.version>        <org.slf4j-version>1.6.1</org.slf4j-version>        <mybatis-version>3.4.0</mybatis-version>    </properties>    <repositories>        <repository>            <id>public</id>            <url>http://repo1.maven.org/maven2/</url>        </repository>    </repositories>    <dependencies>         <!-- springframe start -->        <dependency>          <groupId>org.springframework</groupId>          <artifactId>spring-core</artifactId>          <version>${spring.version}</version>        </dependency>        <dependency>          <groupId>org.springframework</groupId>          <artifactId>spring-web</artifactId>          <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-beans</artifactId>            <version>${spring.version}</version>        </dependency>        <dependency>          <groupId>org.springframework</groupId>          <artifactId>spring-oxm</artifactId>          <version>${spring.version}</version>        </dependency>        <dependency>          <groupId>org.springframework</groupId>          <artifactId>spring-tx</artifactId>          <version>${spring.version}</version>        </dependency>        <dependency>          <groupId>org.springframework</groupId>          <artifactId>spring-jdbc</artifactId>          <version>${spring.version}</version>        </dependency>        <dependency>          <groupId>org.springframework</groupId>          <artifactId>spring-webmvc</artifactId>          <version>${spring.version}</version>        </dependency>        <dependency>          <groupId>org.springframework</groupId>          <artifactId>spring-aop</artifactId>          <version>${spring.version}</version>        </dependency>        <dependency>          <groupId>org.springframework</groupId>          <artifactId>spring-context-support</artifactId>          <version>${spring.version}</version>        </dependency>        <dependency>          <groupId>org.springframework</groupId>          <artifactId>spring-test</artifactId>          <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-jms</artifactId>            <version>4.0.3.RELEASE</version>        </dependency>         <dependency>          <groupId>org.springframework</groupId>          <artifactId>spring-context</artifactId>          <version>${spring.version}</version>        </dependency>        <dependency>            <groupId>org.springside</groupId>            <artifactId>springside3-core</artifactId>            <version>3.3.4</version>            <scope>system</scope>              <systemPath>${project.basedir}/lib/springside3-core-3.3.4.jar</systemPath>          </dependency>    <!-- springframe end -->        <!-- Logging -->        <dependency>            <groupId>org.slf4j</groupId>            <artifactId>slf4j-api</artifactId>            <version>${org.slf4j-version}</version>        </dependency>        <dependency>            <groupId>org.slf4j</groupId>            <artifactId>jcl-over-slf4j</artifactId>            <version>${org.slf4j-version}</version>        </dependency>        <dependency>            <groupId>org.slf4j</groupId>            <artifactId>slf4j-log4j12</artifactId>            <version>${org.slf4j-version}</version>        </dependency>        <dependency>            <groupId>log4j</groupId>            <artifactId>log4j</artifactId>            <version>1.2.16</version>        </dependency>        <!-- Commons -->        <dependency>            <groupId>commons-dbcp</groupId>            <artifactId>commons-dbcp</artifactId>            <version>1.4</version>        </dependency>        <dependency>            <groupId>org.apache.shiro</groupId>            <artifactId>shiro-core</artifactId>            <version>1.2.3</version>        </dependency>        <!-- End Commons -->        <!-- DB -->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.13</version>        </dependency>        <!-- End DB -->        <!-- Servlet -->        <dependency>            <groupId>javax.servlet</groupId>            <artifactId>servlet-api</artifactId>            <version>2.5</version>            <scope>provided</scope>        </dependency>        <dependency>            <groupId>javax.servlet.jsp</groupId>            <artifactId>jsp-api</artifactId>            <version>2.1</version>            <scope>provided</scope>        </dependency>        <dependency>            <groupId>javax.servlet.jsp.jstl</groupId>            <artifactId>jstl-api</artifactId>            <version>1.2</version>        </dependency>        <!-- JSON begin -->        <dependency>                <groupId>com.fasterxml.jackson.core</groupId>                <artifactId>jackson-core</artifactId>                <version>2.8.5</version>            </dependency>            <dependency>                <groupId>com.fasterxml.jackson.core</groupId>                <artifactId>jackson-databind</artifactId>                <version>2.8.5</version>            </dependency>            <dependency>                <groupId>com.fasterxml.jackson.core</groupId>                <artifactId>jackson-annotations</artifactId>                <version>2.8.5</version>            </dependency>        <dependency>            <groupId>com.fasterxml.jackson.module</groupId>            <artifactId>jackson-module-jaxb-annotations</artifactId>            <version>2.3.3</version>        </dependency>        <dependency>            <groupId>org.codehaus.jackson</groupId>            <artifactId>jackson-mapper-asl</artifactId>            <version>1.9.13</version>        </dependency>        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>fastjson</artifactId>            <version>1.2.7</version>        </dependency>        <!-- JSON end -->        <!-- jms -->        <dependency>            <groupId>org.apache.activemq</groupId>            <artifactId>activemq-all</artifactId>            <version>5.4.2</version>        </dependency>        <!-- velocity 1.5 -->        <dependency>            <groupId>org.apache.velocity</groupId>            <artifactId>velocity</artifactId>            <version>1.5</version>        </dependency>        <!-- jredis -->        <dependency>            <groupId>redis.clients</groupId>            <artifactId>jedis</artifactId>            <version>2.5.1</version>        </dependency>        <dependency>            <groupId>com.google.collections</groupId>            <artifactId>google-collections</artifactId>            <version>1.0</version>        </dependency>        <dependency>            <groupId>org.apache.commons</groupId>            <artifactId>commons-lang3</artifactId>            <version>3.4</version>        </dependency>        <!-- 七牛SDK -->        <dependency>            <groupId>com.qiniu</groupId>            <artifactId>sdk</artifactId>            <version>6.1.9</version>        </dependency>        <!-- google zxing -->        <dependency>            <groupId>com.google.zxing</groupId>            <artifactId>core</artifactId>            <version>3.2.1</version>        </dependency>        <dependency>            <groupId>com.google.zxing</groupId>            <artifactId>javase</artifactId>            <version>3.2.1</version>        </dependency>        <dependency>            <groupId>net.spy</groupId>            <artifactId>spymemcached</artifactId>            <version>2.12.1</version>        </dependency>        <!-- mybatis核心包 -->        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis</artifactId>            <version>${mybatis-version}</version>        </dependency>        <!--  <dependency>             <groupId>baidu</groupId>             <artifactId>bccs-api</artifactId>             <version>3.0.1</version>        </dependency> -->        <dependency>             <groupId>baidu</groupId>             <artifactId>bccs-api</artifactId>             <version>3.0.1</version>            <scope>system</scope>              <systemPath>${project.basedir}/lib/bccs-api-3.0.1.jar</systemPath>          </dependency>        <!-- 淘宝阿里大鱼api -->        <!-- <dependency> <groupId>taobao</groupId>             <artifactId>sdk</artifactId>             <version>20160505</version>        </dependency>  -->        <dependency>             <groupId>taobao</groupId>             <artifactId>sdk</artifactId>             <version>20160505</version>            <scope>system</scope>              <systemPath>${project.basedir}/lib/taobao-sdk-java-auto.jar</systemPath>          </dependency>         <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->        <dependency>            <groupId>com.google.code.gson</groupId>            <artifactId>gson</artifactId>            <version>2.7</version>        </dependency>    </dependencies>    <!-- <distributionManagement>        <repository>            <id>keegoo-releases</id>            <name>keegoo-releases</name>            <url>http://182.92.72.143:8081/nexus/content/repositories/releases/</url>        </repository>        <snapshotRepository>            <id>keegoo-snapshots</id>            <name>keegoo-snapshots</name>            <url>http://182.92.72.143:8081/nexus/content/repositories/snapshots/</url>        </snapshotRepository>    </distributionManagement> -->    <build>        <outputDirectory>src/main/webapp/WEB-INF/classes</outputDirectory>        <finalName>${finalName}</finalName>        <plugins>            <plugin>                <artifactId>maven-compiler-plugin</artifactId>                <version>3.3</version>                <configuration>                    <source>1.7</source>                    <target>1.7</target>                    <encoding>UTF-8</encoding>                </configuration>            </plugin>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-war-plugin</artifactId>                <version>3.0.0</version>                <configuration>                    <failOnMissingWebXml>false</failOnMissingWebXml>                    <warName>${finalName}</warName>                </configuration>            </plugin>            <plugin>                <groupId>org.apache.tomcat.maven</groupId>                <artifactId>tomcat7-maven-plugin</artifactId>                <version>2.2</version>                <configuration>                    <server>tomcat-local</server>                    <path>/</path>                    <port>8085</port>                </configuration>            </plugin>            <!--<plugin> -->            <!--<groupId>org.apache.tomcat.maven</groupId> -->            <!--<artifactId>tomcat7-maven-plugin</artifactId> -->            <!--<version>2.2</version> -->            <!--<configuration> -->            <!--<url>http://101.201.52.184:8080/manager/text</url> -->            <!--<server>tomcat-ali</server> -->            <!--<path>/KeegooDService</path> -->            <!--<username>fengqiang</username> -->            <!--<password>qf19840815</password> -->            <!--</configuration> -->            <!--</plugin> -->        </plugins>    </build></project>
  • 3、配置Maven的本地仓库

Maven本地仓库window系统下默认是 C:\Users\Administrator.m2\repository 这样的路径下。但因为C盘的重装系统等的原因,有时需要更改本地仓库路径。

设置本地maven仓库方法如下:
1、建立本地文件夹,做为仓库本地地址。如:D:\maven_local\repository

2、设置maven配置文件,:settings.xml。并将该文件复制到仓库目录下边。如:D:\maven_local 这里配置了国内镜像,是阿里云的。速度我很满意。感谢马云粑粑。

<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0           http://maven.apache.org/xsd/settings-1.0.0.xsd"><localRepository>D:\maven_local\repository</localRepository><mirrors><mirror>        <id>nexus-aliyun</id>        <mirrorOf>*</mirrorOf>        <name>Nexus aliyun</name>        <url>http://maven.aliyun.com/nexus/content/groups/public</url>    </mirror></mirrors></settings>

3、设置eclipse的maven的插件对应的setting文件。
eclipse点击windows->preferences->maven->User setting下
修改user setting选项为:D:\maven_local\settings.xml,并点击update settings。
并点击下面的reindex按钮更新索引

  • 4 这里该项目打包成war包是ROOT.war。本意是访问接口的时候不带工程名。将ROOT.war放到Tomcat路径下,自动解析,即可访问。如果是在Eclipse中debug或直接调试布置,需要更改Tomcat的虚拟路径。下边两个方法都可以达到这个目的。

图片1
这里写图片描述

图片2
这里写图片描述

2、配置web.xml 和 SpringMVC

web.xml需要配置SpringMVC的监听器,加载spring的xml配置文件,配置springmvc DispatcherServlet ,和需要拦截的url等。废话不说了,直接上代码

<?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>KeegooDService</display-name>  <!-- 监听spring上下文容器 -->    <listener>      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>     </listener>  <!-- 加载数据字典  在Spring配置的下面-->  <listener>    <listener-class>com.keegoo.cache.InitDicListener</listener-class>  </listener>  <!-- 加载spring的xml配置文件到spring的上下文容器中 -->    <context-param>          <param-name>contextConfigLocation</param-name>          <param-value>classpath*:/spring-mvc.xml</param-value>    </context-param>    <!-- 配置springmvc DispatcherServlet  -->    <servlet>      <servlet-name>applicationContext</servlet-name>      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>      <init-param>          <param-name>contextConfigLocation</param-name>          <param-value>classpath*:/spring-mvc.xml</param-value>      </init-param>      <load-on-startup>1</load-on-startup>    </servlet>    <!-- 配置DispatcherServlet需要拦截的url -->    <servlet-mapping>      <servlet-name>applicationContext</servlet-name>      <url-pattern>/</url-pattern>    </servlet-mapping>   <!-- Filter 定义 Character Encoding filter -->    <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>forceEncoding</param-name>            <param-value>true</param-value>        </init-param>    </filter>    <!-- Filter 映射 -->    <filter-mapping>        <filter-name>encodingFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping></web-app>

这里需要加载classpath*:/spring-mvc.xml
spring-mvc.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" xmlns:tx="http://www.springframework.org/schema/tx"    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd        http://www.springframework.org/schema/tx        http://www.springframework.org/schema/tx/spring-tx-4.0.xsd        http://www.springframework.org/schema/context         http://www.springframework.org/schema/context/spring-context-4.0.xsd"    default-lazy-init="true">    <!-- 通过component-scan让spring扫描package下的所有类,让spring的注解生效 -->    <context:component-scan base-package="com.keegoo"></context:component-scan>    <mvc:interceptors>        <!-- 对过慢请求打印请求路径及时间 -->        <mvc:interceptor>            <mvc:mapping path="/**" />            <bean class="com.keegoo.interceptor.PrintSlowReqToLogInterceptor" />        </mvc:interceptor>        <!-- 打印所有请求路径及请求参数(调试时使用) -->        <mvc:interceptor>            <mvc:mapping path="/**" />            <bean class="com.keegoo.interceptor.CommonLogInterceptor" />        </mvc:interceptor>    </mvc:interceptors>    <!--默认注解映射的支持 -->    <mvc:annotation-driven />    <!-- 访问静态资源文件  -->      <!--     <mvc:default-servlet-handler/>     <mvc:resources location="/" mapping="/"/> -->    <bean        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />        <property name="ignoreResourceNotFound" value="true" />        <property name="locations">            <list>                <value>classpath*:/application.properties</value>                <value>classpath*:/log4j.properties</value>            </list>        </property>    </bean>    <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>    <!-- 配置springmvc的视图渲染器,让其前缀为:/ 后缀为: .jsp 将视图渲染到 /views/<method返回值>.jsp中 -->    <bean        class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="prefix" value="/WEB-INF/views/"></property>        <property name="suffix" value=".jsp"></property>        <property name="viewClass"        value="org.springframework.web.servlet.view.JstlView" />    </bean>    <mvc:view-controller path="/" view-name="redirect:/index" />    <!-- 开发测试环境数据源配置,使用应用内的DBCP数据库连接池 -->    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"        destroy-method="close">        <property name="driverClassName" value="${connection.driver}" />        <property name="url" value="${connection.url}" />        <property name="username" value="${connection.username}" />        <property name="password" value="${connection.password}" />        <!--连接池配置 -->        <property name="initialSize" value="${connection.initialSize}"></property>        <property name="maxActive" value="${connection.maxActive}" />        <property name="maxIdle" value="${connection.maxIdle}" />        <property name="minIdle" value="${connection.minIdle}" />        <property name="maxWait" value="${connection.maxWait}" />        <property name="removeAbandoned" value="${connection.removeAbandoned}" />        <property name="removeAbandonedTimeout" value="${connection.removeAbandonedTimeout}" />    </bean>    <!-- JdbcTemplate -->    <bean id="template" class="org.springframework.jdbc.core.JdbcTemplate">        <property name="dataSource" ref="dataSource" />    </bean>    <!-- NamedParameterJdbcTemplate -->    <bean id="namedParameterJdbcTemplate"        class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">        <constructor-arg>            <ref bean="dataSource" />        </constructor-arg>    </bean>    <bean id="txManager"        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">        <property name="dataSource" ref="dataSource" />    </bean>    <!-- 事务控制 -->    <tx:annotation-driven transaction-manager="txManager" />    <!-- <import resource="applicationContext-jms.xml"/> -->    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">        <property name="maxTotal" value="${redis.maxActive}" />        <property name="maxIdle" value="${redis.maxIdle}" />        <property name="maxWaitMillis" value="${redis.maxWait}" />    </bean>    <bean id="jedisPool" class="redis.clients.jedis.JedisPool">        <constructor-arg index="0" ref="jedisPoolConfig" />        <constructor-arg index="1" value="${redis.host}" />        <constructor-arg index="2" value="${redis.port}" type="int" />        <constructor-arg index="3" value="${redis.timeout}"            type="int" />        <!--<constructor-arg index="4" value="${redis.password}"/> -->    </bean></beans>

这里又用到了Redis和数据库访问是配置文件classpath*:/application.properties

application.properties的代码如下

#jms#jms.brokerURL=tcp\://10.171.43.136\:61616?wireFormat.maxInactivityDuration\=0jms.brokerURL=tcp\://127.0.0.1\:61616?wireFormat.maxInactivityDuration\=0#1(\u56fd\u90fd);2(\u4f0a\u7f8e);3(\u901a\u8fbe)smsChannelTrigger=3#mysqlconnection.driver=com.mysql.jdbc.Driverconnection.url=jdbc:mysql://localhost:3306/keegoo?useUnicode=true&characterEncoding=utf8connection.username=rootconnection.password=123456#connection.url=jdbc:mysql://101.200.113.76:3306/kee61?autoReconnect=true&amp;characterEncoding=utf8#connection.username=kgtest#connection.password=JG2016dev!connection.initialSize=10connection.maxActive=100connection.maxIdle=30connection.minIdle=5connection.maxWait=5000connection.removeAbandoned=trueconnection.removeAbandonedTimeout=3000connection.logAbandoned=false#redis的服务器地址redis.host=127.0.0.1#redis的服务端口redis.port=6379#密码#redis.password=#链接数据库redis.default.db=0#客户端超时时间单位是毫秒redis.timeout=10000#最大连接数redis.maxActive=300#最大空闲数redis.maxIdle=100#最大建立连接等待时间redis.maxWait=1000#isdev=ture表示开发环境,isdev=false表示生产环境isdev=true

3、Redis

本项目需要安装和开启Redis。
可参考 http://www.runoob.com/redis/redis-tutorial.html
这里只上几张截图即可。
用到的cmd命令为:

  • 1.打开一个 cmd 窗口 使用cd命令切换目录到 C:\redis(你下载解压的目录即可)
    运行 redis-server.exe redis.windows.conf

  • 2.切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。
    设置键值对 set myKey abc
    取出键值对 get myKey

下边直接上截图

这里写图片描述

这里写图片描述

这里写图片描述

原创粉丝点击