代码拉取完成,页面将自动刷新
用vue来创建界面,使用webview承载页面,通过反射实现请求数据
软件架构说明,使用android webview 承载vue页面,在vue页面请求通过webView调用js方法,通过反射执行请求,并返回结果。
npm i
命令初始化vue项目com.orange.ldv.Config
类中修改配置参数APK=false
;当打包时反之(注
打包前请先使用npm run build
打包vue项目,之后在打包APK
)APK
之后修改getWebIndexUrl()
方法中的返回值,根据实际情况进行修改。如果使用手机调试请修改成http://ip地址:端口号
,如果使用androi stuido 自带模拟器则需要修改成对应的ip(10.0.2.2
根据实际情况修改);showTitle
和showStatusBar
进行控制basePackages
参数|-app
|--main
|--assets //存放web页面
|--ui //存放vue项目生成文件。在vue目录使用`npm run build`会自动复制到当前目录
|--java
|--com.orange.ldv //项目包
|--annotation //反射所需要的注解类
|--controller //(包名不可更改)请求控制类
|--entity //实体类
|--response //请求相应类
|--services //服务类
|--res
|--vue //vue //项目开发目录,
更多的类型转换需要你的支持
)范围 | 类型 |
---|---|
基本类型 | String ,Boolean ,Integer ,Double ,Float ,Long ,Byte ,Short ,Character ,Date (Date的各种格式支持需要在Config 类中添加支持,可以将使用频率高的格式配置在数组最开始位置) |
数组和集合 | 数组如Article [] (实体类数组) ,String [] 字符串数组等其他类型;集合List<?> ,ArrayList<?> |
目前的项目中有请求相关的示例
package com.orange.ldv.controller;
import com.orange.ldv.annotation.AppAutowired;
import com.orange.ldv.annotation.AppController;
import com.orange.ldv.annotation.AppRequestMapper;
import com.orange.ldv.annotation.AppRequestMethod;
import com.orange.ldv.entity.Article;
import com.orange.ldv.services.TestServices;
import java.util.Date;
import java.util.List;
@AppController(path = "test")
public class TestController {
/**
* 单字符串
*/
@AppRequestMapper(path = "/get6", method = AppRequestMethod.GET)
public String getTest6(String str) {
return str;
}
/**
* 多个参数
*/
@AppRequestMapper(path = "/get", method = AppRequestMethod.GET)
public String getTest(String str, int str2) {
return "这是修改后的字符串" + str + "," + str2;
}
/**
* 多个字符串返回数组
*/
@AppRequestMapper(path = "/get2", method = AppRequestMethod.GET)
public String[] getTest2(String str, int str2) {
return new String[]{"这是修改后的字符串", str, str2 + ""};
}
/**
* 多个参数和数组
*/
@AppRequestMapper(path = "/get3", method = AppRequestMethod.GET)
public String[] getTest3(String[] str, int str2) {
return new String[]{"这是修改后的字符串", "数组长度是:" + str.length, str2 + ""};
}
/**
* 实体类
*/
@AppRequestMapper(path = "/get4", method = AppRequestMethod.GET)
public Article getTest4(Article article) {
article.setUpdatedTime(new Date());
return article;
}
/**
* 集合,泛型为实体类 List<Article>
*/
@AppRequestMapper(path = "/get5", method = AppRequestMethod.GET)
public List<Article> getTest5(List<Article> articles) {
return articles;
}
/**
* 自动注入调用时实例化
*/
@AppAutowired
private TestServices testServices;
/**
* 测试自动注入实例化对象
*/
@AppRequestMapper(path = "/get7", method = AppRequestMethod.GET)
public String getTest7() {
return testServices.getString();
}
}
在请求方法中对请求类型和请求参数做了默认值处理,当
method
为假值时,默认请求为GET,当请求参数为params
假值时,默认做''处理
/**
* 单字符串。当有且仅有一个参数时,直接是参数值
*/
let res=this.$ano.requestSync('test/get6','get','张三');
/**
* 多个参数
*/
let res=this.$ano.requestSync('test/get','get',{str2: '2',str: 'html'});
/**
* 多个字符串返回数组
*/
let res=this.$ano.requestSync('test/get2','get',{str2: '2',str: 'html'});
/**
* 多个参数和数组
*/
let res=this.$ano.requestSync('test/get3','get',{
str2: '2',
str: ['html', '张某某']
});
/**
* 实体类
*/
let res=this.$ano.requestSync('test/get4','get', {
content: '这是文章内容',
id: '123',
image: 'imagess',
isDelete: '0',
createdBy: '1',
createdTime: new Date(),
updatedTime: '2014年02月08日',
title: '这是标题'
});
/**
* 集合,泛型为实体类 List<Article>
*/
let res=this.$ano.requestSync('test/get5','get', [{
content: '这是文章内容1',
id: '123',
image: 'imagess1',
isDelete: '0',
createdBy: '1',
createdTime: new Date(),
updatedTime: '2014年02月08日',
title: '这是标题'
}, {
content: '这是文章内容2',
id: '123',
image: 'imagess2',
isDelete: '1',
createdBy: '2',
createdTime: new Date(),
updatedTime: '2023年02月08日',
title: '这是标题3'
}]);
/**
* 测试自动注入实例化对象
*/
let res=this.$ano.requestSync('test/get7');
@AppController
添加到controller
包下的类
上的注解
path
表示请求路径
package com.orange.ldv.controller;
@AppController(path = "test")
public class TestController {
}
@AppRequestMapper
添加到controller
保险类的方法
上的注解
path
表示请求路径 ;method
表示请求方式
package com.orange.ldv.controller;
@AppController(path = "test")
public class TestController {
/**
* 单字符串
*/
@AppRequestMapper(path = "/get6", method = AppRequestMethod.GET)
public String getTest6(String str) {
return str;
}
}
@AppAutowired
在controller
包下的申明变量时,有需要实例化的对象变量
上
package com.orange.ldv.controller;
@AppController(path = "test")
public class TestController {
/**
* 自动注入调用时实例化
*/
@AppAutowired
private TestServices testServices;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。