java web gridview_项目中的小实现(安卓,javaweb,前端)

会不定时更新,有些项目需要重构,可能造成链接失效

Android

第30行,通过自定义的ImagePipelineConfig和OkHttpClient,在自定义的OkHttpClient中加入SSL证书。

通过实现okhttp的Interceptor实现,在me/jcala/xmarket/network/ReqExecutor.java的61行进行注册。

在第47行,证书所在位置R.raw.xmarket,证书利用JDK的keytool工具生成。

第41行,需要导入依赖compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'

实现了安卓的Service,设置onStartCommand方法的返回值可以设置后台轮询的类型,使用了RxJava的Observable.interval方法。如果需要后台服务更新ui,可以通过在需要更新ui的页面接收广播实现。

目的:减少Activity代码量,实现分层,提高可维护性

目的:降耦合,不是类似spring ioc的反射注入,而是编译生成代码注入,不会降低性能,但也明显不如spring ioc或者google guice的简洁

每次打开Activity,从Realm中读取数据(37行),每次下拉刷新后,先删除原有数据,再存入新的数据(69行)。这里没有判断新数据与原数据相同,一并删除,可以自己判断下

public class SplashActivity extends BaseActivity {

//...

protected void initVariables() {

view=(SimpleDraweeView)findViewById(R.id.loading_gif);

DraweeController builder = Fresco.newDraweeControllerBuilder()

.setAutoPlayAnimations(true)

.setUri(Uri.parse("res://drawable/" + R.drawable.splash_loading))//设置uri

.build();

view.setController(builder);

}

//...

}

通过CommonAdapter和me/jcala/xmarket/view/ViewHolder,在me/jcala/xmarket/mvp/sort/TradeTagPresenterImpl.java的47行有对他的使用

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/info_avatar"

android:layout_width="56dp"

android:layout_height="56dp"

fresco:roundedCornerRadius="56dp"

fresco:roundBottomLeft="true"

fresco:roundBottomRight="true"

fresco:placeholderImage="@mipmap/person"

android:layout_margin="16dp"/>

retrofit的接口方法,这里通过在ReqExecutor单例中通过tradeReq()方法获取TradeReq的实例

public interface TradeReq {

@GET(ApiConf.get_school_trades)

Observable>> getSchoolTrades(

@Path("schoolName") String school,

@Query("page") int page,

@Query("size") int size

);

}

retrofit中的接口方法需要将图片文件转为MultipartBody.Part类型(me/jcala/xmarket/mvp/trade/add/TradeAddPresenterImpl.java的77行)

public interface TradeReq {

@Multipart

@POST(ApiConf.create_trade)

Observable> addTrade(

@Part("trade") RequestBody trade,

@Part List parts);

}

java web

在MongoRepository满足不了要求可通过MongoTemplate实现,spring中已经有MongoTemplate的实例,直接注入使用即可

安卓客户端部分如上:retrofit实现多图片和javabean同时上传

获取x-access-token的值,验证成功返回自定义的HTTP状态码210,否则返回401

返回值为Docket的方法即是配置swagger的配置类,在me/jcala/xmarket/server/ctrl包下的控制器类有swagger的注解

默认读取一个记录的所有属性,只读取特定的属性,可通过@Query(fields = "{ 'id': 1,'title':1}")设置

第99行,在application.yml中设置了JWT的密匙和生命周期

xmarket.keystore数字证书通过keytool生成

ssl:

key-store: classpath:xmarket.keystore

key-store-password: 546sdhjdf

key-password: sdjkasl465sd

keyAlias: xmarketkey

enabled: true

keytool -genkey -alias xmarketkey -keyalg RSA -keysize 1024 -keypass sdjkasl465sd -validity 365 -keystore g:\home\xmarket.keystore -storepass 546sdhjdf //生成证书

keytool -list -v -keystore g:\home\xmarket.keystore -storepass 546sdhjdf //查看证书

keytool -export -alias xmarketkey -keystore g:\home\xmarket.keystore -file g:\home\xmarket.crt -storepass 546sdhjdf //导出证书

keytool -printcert -file g:\home\xmarket.crt //查看证书

第60行有其配置,通过org.mybatis.spring.boot:mybatis-spring-boot-starter:1.1.1整合

注解对复杂操作也越来越好,如插入之后返回id值(89行)

需要在application.yml中配置宏文件位置,如velocimacro.library: VM_global_library.vm。

将spring.datasource.initialize设置为true; spring.datasource.schema指向创建数据库和表的sql文件,如classpath:import.sql;spring.datasource.data指向初始数据sql文件

server:

compression:

min-response-size: 512 #压缩文件最小大小(kb)

enabled: true #是否压缩

mime-types: text/html,text/css,text/javascript,application/javascript,image/gif,image/png,image/jpg #要压缩的文件格式

加密过程: 获取图片md5值--md5的16个字节加到图片最末尾。验证过程: 取出图片末尾16个字节--并删除图片末尾16个字节--重新获取图片的md5值--两个md5进行比对。这里只是简单实现,代码没有进行优化

前端

包括getters,mutations,actions等,components下的组件中有其具体调用方式。

将图片放到static文件夹下,npm run dev时node的server会将static目录加入到服务器中,url如/static/img/wood.jpg即可访问

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值