前言:本人独立开发的一款兴趣社交APP“萌土”,涉及到Android端和Java服务器端。
一、Android前端
萌土下载地址:https://www.pgyer.com/mengtuDownload 内测安装密码:666
测试用户名和密码:1 123
1、项目介绍
名称:萌土
类型:社交+新闻APP
核心功能:
网罗全网热点:浏览热映电影、美食菜谱、NBA新闻和爆笑段子
热门榜:了解每天发生的热门事件,类似于微博热搜榜
个人主页:记录生活,留住感动基本模块:
欢迎界面加载(2.5s,点击可跳过)——Thread相关
用户注册/登录————Okhttp向Java服务器端发起请求,客户端保存有cookie方便下次直接登录
底部导航栏——BottomNavigationView(用来切换几个Fragmant于FrameLayout中)
头部导航控件——ToorBar(Material Design 风格的)
侧滑设置菜单(关于萌土+用户反馈+清理缓存+退出系登录)——DrawerLayout+NavigationView
横向滑动列表显示新闻类别——Tablayout页卡+ViewPager视图翻页工具(提供了多页面切换的效果)
主页(显示新闻列表)——RecyclerView列表视图(用于大量数据展示的滑动组件)+SwipeRefreshLayout下拉刷新
发现(热门用户动态)——RollPagerView轮播图
我(个人主页,点击头像进入资料卡片界面)
资料卡片(展示用户特立独行的一面,可更换用户头像和修改用户资料)——CardView卡片视图
发动态(我界面右上角点击编辑按钮)——知乎开源图片选择框架com.zhihu.android:matisse:0.4.3和imagepicker:0.6.1
点击查看新闻详情——WebView+支持JavaScript注入取修改原网页标题和logo+支持去JavaScript注入掉头部广告或引导下载banner+支持网页视频全屏播放。
备注:Android开发最常见的控件和布局使用,以及Activity和Fragment生命周期的管理这些基本的就不赘述了。
2、应用截图
①基本界面:欢迎界面加载、登录/注册界面
②主界面:首页、发现、我
③资料卡片和新闻详情界面
④设置界面和发送动态编辑页面
3、Android开发总结
萌土APP基于 Okhttp+Glide+Jsoup,整体界面采用了Material Design简约纯粹的设计风格。
①khttp是处理网络请求的开源框架,是安卓端最火热的轻量级框架,用于替代HttpUrlConnection和Apache HttpClient(android API23 6.0里已移除HttpClient,现在已经打不出来),本人就是用此框架向我的阿里云服务器上传个人主页动态和用户资料的普通文字和图片文件的,还有基本的登录注册功能、资料卡片修改和头像更改功能;
②Glide是支持多种数据源的主流图片加载库,我主要用来加载存在阿里云服务器上的图片;
③Jsoup是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。此App的新闻部分就是我用Google F12开发者工具仔细分析了几个网站的网页源代码,然后用Jsoup把对应URL的html文档转成Doucment对象,接着用jsoup elements对象支持类似CSS或者JQuery的选择器Selector,来实现非常强大及灵活的查找功能,因此可以实现指定元素的过滤,或者链式选择访问。最终我们就可以提取到我们想要的数据封装于实体类JavaBean中,再用RecyclerViewAdapter装载数据展示在APP界面上即可。
Android项目代码结构图如下:
二、Java服务器端
基于Tomcat+Servlet+Mysql。内容来源为两部分,一是Jsoup直接去相应网站在线爬虫解析而来;二是通过Okhttp向Java服务器端发送请求,Tomcat服务器响应请求后,从Mysql数据库里面取出数据封装成json格式返回给客户端展示。
1、Mysql
涉及数据库表的设计、各种增删改查的SQl语言编写、Mysql数据的迁移和备份
2、Servlet
(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务端程序,运行于支持Java的Web应用服务器中,主要功能在于生成动态Web内容,大多用来响应任HTTP协议类型的请求。简单来说我就是用来响应Android客户端发送的get或post请求,然后从Mysql数据库中进行CRUD增删改查操作,然后将取得的数据或者结果返回给客户端展示即可。
Java服务器端代码结构:
注意:Servlet坑之处就是每一个请求都要重写一个对应的Servlet贼麻烦,所以学习Java Spring+SpringMVC+MyBatis框架就很有必要。(SpringMVC是基于Servlet实现的)
3、Tomcat:
Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
①当在一台机器上配置好Apache 服务器,可利用它响应HTML静态页面的访问请求。Apache是一个web服务器环境程序 ,启用他可以作为web服务器使用,不过只支持静态网页 如(asp,php,cgi,jsp)等动态网页的就不行 ,需要再安装相应语言的解释器才能支持动态网页,比如PHP,举个栗子:
②所以,如果要支持JSP动态网页的话,我们需要tomcat在apache后台支撑,将客户端动态页面请求由apache转发给tomcat处理。实际上Tomcat是Apache 服务器的扩展,但是可以独立于apache运行。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
现在JSP的运行环境就是apache+tomcat,当配置正确时,Apache 为HTML静态页面服务,而Tomcat 实际上运行JSP页面和Servlet。简而言之,如果客户端请求的是静态页面,则只需要Apache服务器响应请求;如果客户端请求动态页面,则是Tomcat服务器响应请求编译解释生成动态HTML文档,然后再由apache转发html页面。
③Apache的发展时期很长,而且是毫无争议的世界第一大服务器。它有着很多优点:稳定、开源、跨平台等等。它出现的时间太长了,它兴起的年代,互联网产业远远比不上现在。所以它被设计为一个重量级的。它不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。
这些都决定了Apache不可能成为高性能WEB服务器,轻量级高并发服务器Nginx就应运而生了。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
注意:在连接高并发的情况下,Nginx是Apache服务不错的替代品,能够支持高达 50,000 个并发连接数的响应。Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。