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的话 我是按照页面来布局的,
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
然后配置tomcat
image.png image.png
最后运行
image.png
大功告成!!!
后记:期间遇到了各种错误,400、404、406、500
各种折腾,但是百度就能解决,这里就不多说了,感谢各位大神批评,求留言,求调教,嘻嘻。