2018.03.03、android-照虎画猫搭建简易Rest服务器

690 阅读3分钟

一、前言

对于android开发人员经常需要一个测试的接口来进行网络请求的测试,每次都需要自己上网查找合适的接口。对于开发者来说太浪费自己的宝贵时间了。基于此 一直想做一个属于自己管控服务器。

二、搭建环境介绍

1、开发工具: IntelliJ IDEA 2017.1.5
选择 Ultimate(最终)的版本
下载地址

2、服务器框架:
1、Jersey:java中的restful web服务的框架
2、guava:java封装的
3、Hibernate:处理数据库与对象关系的映射框架

3、环境
mySQL、Tomcat、java8

三、搭建步骤

1、通过 菜单 file ---> new --->project
2、选择java 和web 点击 下一步

Alt text
3、填写GroupID 、ArtifaactID 下一步
4、完成之后工程

5、 接下来就是配置 Tomcat了

6、在build.gradle文件中dependencies 添加jersey \ Gson \ Guava

    compile 'com.google.code.gson:gson:2.8.0'
    //java 类的封装 包比较大
    compile 'com.google.guava:guava:21.0'

    //jersey restful 进行接口请求
    compile 'org.glassfish.jersey.core:jersey-client:2.26-b03'
    compile 'org.glassfish.jersey.core:jersey-server:2.26-b03'
    compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.26-b03'
    //Gson 解析库
    compile 'org.glassfish.jersey.media:jersey-media-json-jackson:2.26-b03'
    
    //数据库操作框架 先加上
    // https://mvnrepository.com/artifact/org.hibernate/hibernate-core
    compile 'org.hibernate:hibernate-core:5.2.9.Final'
    // https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager
    compile 'org.hibernate:hibernate-entitymanager:5.2.9.Final'
    // https://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0
    compile 'org.hibernate:hibernate-c3p0:5.2.9.Final'

    // https://mvnrepository.com/artifact/mysql/mysql-connector-java
    compile group: 'mysql', name: 'mysql-connector-java', version: '6.0.6'

就像这样 -.-||

7、在webapp 文件夹下创建WEB-INF \ web.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
    <display-name>Jersey</display-name>
    <servlet>
        <servlet-name>IDoubleApiServlet</servlet-name>
        <!--容器-->
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <!--映射的包名,用于搜索处理类-->
            <param-value>net.doubelman.web.service</param-value>
        </init-param>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>net.doubelman.web.Application</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!--映射-->
    <servlet-mapping>
        <servlet-name>IDoubleApiServlet</servlet-name>
        <!--访问路径-->
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>
</web-app>

8、映射创建:
包:net.doubelman.web
文件:Application
文件夹:service

注意创建顺序!

AccountService 内容:

package net.doubelman.web.service;

import javax.ws.rs.GET;
import javax.ws.rs.Path;

/**
 * Created by fmm on 2018/3/3.
 */
@Path("/account")
public class AccountService {

    @GET
    @Path("/login")
    public String login(){

        return "Hello tom !";
    }
}

Application内容:

package net.doubelman.web;

import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
import net.doubelman.web.service.AccountService;
import org.glassfish.jersey.server.ResourceConfig;

import java.util.logging.Logger;

/**
 * Created by fmm on 2018/3/3.
 */
public class Application extends ResourceConfig {

    public Application() {
        //添加一个扫描的服务包
        packages(AccountService.class.getPackage().getName());
        //注册Jackson 解析器
        register(JacksonJsonProvider.class);
        //注册日志 Logger
        register(Logger.class);
    }
}

至此一个基本的restful 服务器基本搭建完成了

四、测试搭建结果

点击运行按钮

在浏览器中输入:http://localhost:8080/api/account/login
运行结果:

调接口成功 哈哈!

但是 搞了半天,说好的返回json呢!!别急 接着看!

package net.doubelman.web.service;

import com.google.gson.Gson;
import net.doubelman.web.Bean.Student;

import javax.ws.rs.GET;
import javax.ws.rs.Path;

/**
 * Created by fmm on 2018/3/3.
 */
@Path("/account")
public class AccountService {

    @GET
    @Path("/login")
    public String login(){
        //自己创建Student类哈  不要懒
        Student student = new Student();
        student.setAge(18);
        student.setId("20180303");
        student.setName("Tom");

        //临时的哈  正式的可不能这么干!
        Gson gson = new Gson();
        String stuStr = gson.toJson(student);
        return stuStr;
    }
}

最终的目的:

好了基本的服务器的搭建就完成了!
当然这这是初步的搭建
例如:如何统一处理返回Json数据、数据库连接、添加数据库、创建数据表等功能还都未实现, 以后有机会吧。
最起码以后想使用接口Api 可以自己搞了哈!