iOS开发实现java第一个接口的艰辛之路

iOS项目终于上架了,年前工作的动力一下子被用完了,于是想起了多年前定的目标-java学习
于是打开了eclipse,回头看了一眼java大神,界面不一样,一问才知道,大神用的是IDEA,然后百度mac版本IDEA下载
IDEA下载地址
虽然软件是收费的,但是天朝吗
软件注册码获取

环境解决了,然后整理了一下思路
数据库------>后台整理(java、php处理)------>前台显示(iOS、安卓)

一、服务器端获取数据库
简单问了下大神,又百度了一下,java获取数据大多数用的都是框架,相当于iOS 的AFNetworking,初学者可以尝试一下jdbc,

        String URL="jdbc:mysql:xxxxxx(数据库地址,问后台要测试地址,随便你折腾)?characterEncoding=utf8";
        String USER="xxxxxx";
        String PASSWORD="xxxxxx";
        Class.forName("com.mysql.jdbc.Driver");

        ArrayList  listNew = new ArrayList();

        Connection conn = DriverManager.getConnection(URL, USER, PASSWORD) ;
        Statement st =  conn.createStatement();
        ResultSet rs = st.executeQuery("select * from app_user");

        listNew = new ArrayList();

        while (rs.next())
        {
            System.out.print(rs.getString("username") + "hello");
        }

        return listNew;

运行前要添加mysql的架包,mysql-connector-java-5.1.7-bin.jar


image.png

架包下载地址

image.png

当你看到打印结果的时候就恭喜你成功了一小步,别急,接下来还有大坑在等着你

二、返回数据给移动端

1.maven配置
创建项目的时候有个注意点,如图所示,勾选选择项 代表创建的额是javaWeb项目,未勾选代表创建的是javaEE项目,俩这的区别就是前者可以写页面,后者不可以,而且在后面加载tomcat的时候 用javaEE就会报错,加载不到项目,所以后来又改成了javaWeb项目,这一点答案没搞清楚,球大神路过留个答案。


image.png

maven的功能 就相当于iOS的pod (个人理解),在pom.xml里面填写依赖库的名称和版本,编辑器就会自动下载依赖库添加到项目中。

2.在我用java获取到了数据库返回的数据的时候,我觉得java还是很简单的吗,事实证明 还是太年轻,要把获取的数据经过处理再返回给移动端,就要用到一个框架,大名鼎鼎的 spring mvc 想了解的去度娘,这里不再复述。
网上百度 都是乱糟糟,直接问了后台,给了我一坨代码,直接copy进去了


<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/maven-v4_0_0.xsd">


  <modelVersion>4.0.0</modelVersion>
  <groupId>test</groupId>
  <artifactId>faf</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>faf Maven Webapp</name>
  <url>http://maven.apache.org</url>



  <properties><!-- spring版本号 -->
    <spring.version>4.2.5.RELEASE</spring.version>
  </properties>


  <dependencies>


    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

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

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

    <!-- 映入JSON -->
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
      <version>1.9.13</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.8.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.8.0</version>
    </dependency>




    <!-- 添加spring核心依赖 -->
    <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-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-context</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-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>



  </dependencies>





  <build>
    <finalName>faf</finalName>
  </build>
</project>

后面看了下,主要添加的是spring Mvc的依赖,复制进去的时候红了一大片,心凉了半截,急忙去问后台,是不是你给的代码错了啊,怎么都红了,后台说正在下载,等下载好了 就正常了,好吧,又满血复活,
说着后台又扔给我俩个文件,一个是log文件,一个是自动扫描文件,
log4j.properties

log4j.rootLogger=INFO,Console,A
#����̨��־
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n
log4j.appender.CONSOLE.Encoding=uft-8
log4j.appender.CONSOLE.Threshold=DEBUG

log4j.appender.A=org.apache.log4j.DailyRollingFileAppender  
log4j.appender.A.File=${catalina.home}/logs/FH_log/PurePro_
log4j.appender.A.DatePattern=yyyy-MM-dd'.log'
log4j.appender.A.layout=org.apache.log4j.PatternLayout  
log4j.appender.A.layout.ConversionPattern=[FH_sys]  %d{yyyy-MM-dd HH\:mm\:ss} %5p %c{1}\:%L \: %m%n

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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                         http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.2.xsd
                        http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc.xsd">  <!--启用spring的一些annotation -->
    <context:annotation-config/>
    <!--自动扫描 @Controller-->
    <context:component-scan base-package="com.luohao"/>

    <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
    <context:component-scan base-package="com.luohao.demoOne.controller">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!-- 配置注解驱动 可以将request参数与绑定到controller参数上 -->
    <mvc:annotation-driven/>

</beans>

添加这俩个文件时怎么编译都报错,后来研究了半天,点了一下 那个报错的小灯泡,里面有个Fetch什么的,编译器自动就配置好了,小坑路过。

到这里maven 和spring 的配置如果没报错的话 基本就可以了,

3.java代码结构(终于要敲代码了,麒麟臂已经饥渴难耐了)
请假了一下后台java代码是怎么布局的,iOS的话 我是按照页面来布局的,

image.png

java通常是按照功能来分类,图上 就是要实现一个demoOne功能的结构,
一个功能独立出一个包,包里面通常分为4个结构

controller    -    dao    -    entity    -    service

controller 用来做最后的调配处理
dao负责从数据库获取数据
entity放一些封装的类
service里面放 处理数据的类(从dao获取的数据 在service处理)
java的封装 真的爽的一比

首先 我再dao 里面创建一个接口,


image.png

因为java 是面向接口开发,大多数框架都是一个接口 (interface)一个类(class)
DemoOneDao代码


image.png

接口 我感觉就像iOS 里面的.h文件 实现类 就像.m文件 (实现类的命名基本上就是在接口的后面添加Impl字母)
DemoOneDaoImpl代码,箭头所指 是spring类声明
image.png

dao 里面负责从数据库里面获取数据,用ResultSet 来接收。

然后 在service里面同样的方法建立一个接口和一个类
DemoService里面 写方法名


image.png

DemoServiceImpl里面具体实现


image.png

利用spring的@Autowired 关键字 获取dao类 来创建对象
用ResultSet 来接收dao的数据,然后进行处理,这里的逻辑是 便利用户名和密码。到这里,一个简单的查询数据库用户名,并返回给移动端的接口代码就写完了。

4.tomcat配置
因为是mac开发,所以坑比较多一点,java项目要把项目部署到tomcat上面才能运行,于是 去官网上下载tomcat
[tomcat下载地址](https://tomcat.apache.org/download-80.cgi

image.png

然后部署在本地,然后在组件模块里 先配置好相关项目,
image.png

然后配置tomcat
image.png

image.png

最后运行


image.png

大功告成!!!

后记:期间遇到了各种错误,400、404、406、500
各种折腾,但是百度就能解决,这里就不多说了,感谢各位大神批评,求留言,求调教,嘻嘻。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352