java restful项目打包_66-JT项目04(项目打包发布/JSON/项目业务)
关于项目打包/发布问题说明
利用maven工具项目打包
说明: 父级JT 其中包含了2个子级项目
jt-manager 依赖于jt-common.所以项目打包是有顺序的.要先打包被依赖的项目
或者直接打包父级工程也可以
maven-install
1.项目打包
2.打包效果
3.打包位置
本地仓库中
SpringBoot项目发布
说明: springBoot项目中,内置了tomcat服务器. 所以发布项目时,只需要通过java命令让程序执行即可.
JAVA命令: java -jar xxxxx.jar/war
关闭tomcat服务器: ctrl + c
页面通用跳转
F12工具说明
页面请求
- 新增商品
- 查询商品
- 规格参数
关于RestFul风格说明
package com.jt.controller;
@Controller
public class IndexController {
@RequestMapping("/page/{moduleName}")
public String itemAdd(@PathVariable String moduleName) {
return moduleName;
}
/*
* //@RequestMapping(value = "/item", method = RequestMethod.GET)
*
* @GetMapping("/item") public void getItem(Integer id) { //执行查询业务 }
*
* @RequestMapping(value = "/item", method = RequestMethod.POST)
* //@PostMapping("/item") public void saveItem(Item item) { //执行新增业务 }
*/
}
面试问题: 你说说你是怎么用restFul的.
/**
* 面试问题: 你说说你是怎么用restFul的.
* 用法1: 可以用来动态的接收url中的参数.之后完成业务调用
* 方法2: 可以通过不同的请求类型来标识不同的业务需求.
*
* 用法1: 动态获取url中的参数,简化了Controller中方法的个数.
* 需求:利用一个请求方法.实现页面通用跳转
* 页面url地址:
* /page/item-add
* /page/item-list
* /page/item-param-list'
* 思路: 只要能够获取url中的第二个参数就可以实现通用的页面跳转功能.
* 如何获取url中的参数?????
* 解决方案: 使用restFul风格
* 语法:
* 1.参数与参数之间使用/分隔
* 2.参数使用{}形式包裹
* 3.定义参数使用特定的注解接收. @PathVariable
* 用法2
* 说明:
* 利用restFul风格,可以简化用户url的写法.
* 例子:
* 利用同一个请求http://localhost:8091/item 实现CRUD操作
* 知识回顾:
* http://localhost:8091/item/save?xxxx
* http://localhost:8091/item/delete?xxxx
* http://localhost:8091/item/update?xxxx
* http://localhost:8091/findItemxxxx
* 多个页面请求
* 优化:
* http://localhost:8091/item?xxxx
* type="GET" 查询操作
* type="POST" 新增操作
* type="PUT" 更新操作
* type="DELETE"删除操作
*/
页面表格数据展现
表格数据的入门案例
1.表格页面结构.
通过数据请求创建表格
定义表格,并且通过url访问json数据, fitColumns:true表示自动适应,singleSelect:true 表示选中单个
data-options="url:'datagrid_data.json',method:'get',fitColumns:true,singleSelect:false,pagination:true">
CodeNamePrice
2.表数据返回值格式要求
{
"total":2001,
"rows":[
{"code":"A","name":"果汁","price":"20"},
{"code":"B","name":"汉堡","price":"30"},
{"code":"C","name":"鸡柳","price":"40"},
{"code":"D","name":"可乐","price":"50"},
{"code":"E","name":"薯条","price":"10"},
{"code":"F","name":"麦旋风","price":"20"},
{"code":"G","name":"套餐","price":"100"}
]
}
关于JSON串说明
JSON介绍
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。
语法错误: JSON的实质就是字符串 json串 JS对象
Object格式
举例:
{“id”:“1”,“name”:“tom”}
Array格式
举例:
[“1”,“2”,“3”]
嵌套用法
值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
举例:
{
"id":"1",
"value":[1,2,3,4],
"name":{"name1":"黄忠","name2":"吕布"}
}
表格数据展现VO对象封装
package com.jt.vo;
//vo对象的封装
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class EasyUITable {
private Long total;
private List rows;
}
商品列表展现
商品列表表格页面展现
根据UI框架,搭建表格页面 .注意url地址及返回值数据格式要求.
说明:表格属性 url地址发起ajax请求. 由于分页原因.所以会动态的添加分页的参数. page=1&rows=20
data-options="singleSelect:false,fitColumns:true,collapsible:true,pagination:true,url:'/item/query',method:'get',pageSize:20,toolbar:toolbar">
商品ID商品标题叶子类目卖点价格库存数量条形码状态创建日期更新日期
编辑商品POJO对象
package com.jt.pojo;
@JsonIgnoreProperties(ignoreUnknown=true) //表示JSON转化时忽略未知属性
@TableName("tb_item")
@Data
@Accessors(chain=true)
public class Item extends BasePojo{
@TableId(type=IdType.AUTO)
private Long id;//商品id
private String title;//商品标题
private String sellPoint;//商品卖点信息
private Long price;//商品价格 Long > dubbo
private Integer num;//商品数量
private String barcode;//条形码
private String image;//商品图片信息 1.jpg,2.jpg,3.jpg
private Long cid;//表示商品的分类id
private Integer status;//1正常,2下架
//为了满足页面调用需求,添加get方法
public String[] getImages(){
return image.split(",");
}
}
编辑ItemController
package com.jt.controller;
@RestController
@RequestMapping("/item")
public class ItemController {
/**
- 业务: 根据分页要求展现商品列表.要求将最新最热门的商品首先给用户展现.
- url: url:'/item/query
- 参数: page=1&rows=20 page当前页 rows 记录数
- 返回值: EasyUITable
- 编码习惯: mapper-service-controller-页面js 手敲 自下而上的开发
- 课堂代码格式:
- url-controller-service-mapper 结构代码自动生成 自上而下开发
- */
@Autowired
private ItemService itemService;
/**
* 根据分页数据展现商品的列表数据
* 要求将最新最热门的商品首先给用户展示
* url以及参数 : /item/query?page=1&rows=20
* @param page 当前页
* @param rows记录数
* @returnEasyUITable
*/
@RequestMapping("/query")
public EasyUITable doFindEasyUITable(Integer page,Integer rows) {
//调用业务层,获取商品分页信息
return itemService.findItemByPage(page, rows);
}
}
编辑ItemService
package com.jt.service;
@Service
public class ItemServiceImpl implements ItemService {
@Autowired
private ItemMapper itemMapper;
/**
* 执行步骤:1.手动编辑sql 2.利用MP机制 动态生成
* SELECT * FROM tb_item LIMIT 起始位置,查询记录数
/*第一页 java中数组运算 一般都是含头不含尾
SELECT * FROM tb_item LIMIT 0,20;
/*第二页
SELECT * FROM tb_item LIMIT 20,20;
/*第三页
SELECT * FROM tb_item LIMIT 40,20;
*第N页
SELECT * FROM tb_item LIMIT (n-1)ROWS,ROWS;
*/
@Override
public EasyUITable findItemByPage(Integer page, Integer rows) {
//参数1.记录总数 参数2: rows 当前页的记录数
long total = itemMapper.selectCount(null);
int startIndex = (page - 1) * rows;
List itemList =
itemMapper.findItemByPage(startIndex,rows);
return new EasyUITable(total,itemList);
}
}
编辑ItemMapper
package com.jt.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Select;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jt.pojo.Item;
public interface ItemMapper extends BaseMapper{
//利用注解执行sql.
@Select("SELECT * FROM tb_item ORDER BY updated DESC LIMIT #{startIndex},#{rows}")
List findItemByPage(Integer startIndex, Integer rows);
}
页面效果展现
利用MP方式实现分页查询
核心配置: MybatisPlus中的分页需要添加配置类.
编辑ItemService
//利用MP
@Override
public EasyUITable findItemByPage(Integer page, Integer rows) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("updated");
//Page 参数1: page 表示页码值 参数2 : rows 表示页面大小
IPage iPage = new Page<>(page, rows);
//根据分页模型执行分页操作,并将结果返回给分页对象
iPage = itemMapper.selectPage(iPage, queryWrapper);
long total = iPage.getTotal();//获取总记录
List itemList = iPage.getRecords();//获取当前页记录
return new EasyUITable(total, itemList);
}
编辑分页配置类
@Configuration //标识我是一个配置类
public class MybatisPlusConfig {
//将分页的拦截器交给spring容器管理.
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
商品列表数据格式化
页面JS如何引入
1.页面包含信息
2.页面引入JS
pageEncoding="UTF-8"%>
格式化价格
1.查看页面信息
价格
2.检查格式化JS
formatPrice : function(val,row){
return (val/100).toFixed(2);
},
格式化状态
1.页面状态标识
状态
2.页面格式化操作
// 格式化商品的状态
formatItemStatus : function formatStatus(val,row){
if (val == 1){
return '上架';
} else if(val == 2){
return '下架';
} else {
return '未知';
}
},
格式化商品分类目录
业务需求说明
商品列表展现时,需要在商品分类目录中展现具体的名称.而不是分类的ID值. 560代表的是手机信息
编辑页面ajax
//格式化商品名称
findItemCatName : function(val,row){
var name;
$.ajax({
type:"post",
url:"/item/cat/queryItemName",
data:{itemCatId:val},
cache:true, //缓存
async:false, //表示同步 默认的是异步的true
dataType:"text",//表示返回值参数类型
success:function(data){
name = data;
}
});
return name;
},
标识POJO对象
package com.jt.pojo;
@TableName("tb_item_cat")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class ItemCat extends BasePojo {
@TableId(type = IdType.AUTO)
private Long id;
private Long parentId;//父级ID
private String name;//分类名称
private Integer status; //状态信息1正常,2删除'
private Integer sortOrder; //排序号
private Boolean isParent; //是否为父级. true/fase
}
java restful项目打包_66-JT项目04(项目打包发布/JSON/项目业务)相关推荐
- jekenis父子结构项目打包_全栈之DevOps系列 - 发布 Python 项目 开源/私有 包
DevOps目前并没有权威的定义,普遍认为,DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快.更频繁地交付更稳定的软件. 作者以 dukepy 系 ...
- 项目放到iis服务器,在Visual studio上发布web项目,并添加到IIS服务器上。
解决$.getJSON在IE浏览器下出现数据缓存,第一次访问某个后台路径之后,再次访问该路径不再走后台的方法. 最近写代码的时候遇到一个小问题,我用的是火狐,项目里测试人员用的是IE,当用jquery ...
- liunx新装tomcat之后,tomcat不能识别新发布的项目
遇到的问题 在liunx新装tomcat之后,发布之前的项目,发现在tomcat不能识别新发布的项目,打成war包,还是直接把项目拷贝过去都不行. 环境:虚拟机:VMware 主机系统:win10 虚 ...
- vue项目构建实战基础知识:SPA理解/RESTful接口介绍/static目录配置/axios封装/打包时map文件去除...
一.SPA 不是指水疗.是 single page web application 的缩写.中文翻译为 单页应用程序 或 单页Web应用,更多解释请自行搜索. 所有的前端人员都应该明白我们的页面的 u ...
- java项目打成war包,使用ide打包部署在tomcat中
原因:需要打包一个项目进tomcat中部署 因为不是使用maven管理 所以需要手动打包 参考:https://www.cnblogs.com/javaxiaodoufu/p/7701847.html ...
- JAVA项目的打包及生成.exe文件或者打包安装软件
总体思路是先打成jar再把jar打成exe.主要看1.3和2.3里的内容就可以了. 1.将项目打成jar: 1.1要将项目打包成jar文件,方法很多,可以用Eclipse自带的打包工具Ant打包,也可 ...
- 软件测试实战项目04:打包app
测试奇谭,BUG不见. 大家好,我是谭叔. 本期,我会将之前的项目分别打包成app.小程序.H5,在手机上(或模拟器)上使用它们. 接下来,请跟随我一步步操作打包吧. 一.打包 打开HBuilderX ...
- php代码里怎么写html代码_菜鸟青铜变白银!Python 项目代码写完了,然后怎么打包和发布?...
你把你的代码写完了,是不是要给别人使用下,怎么打包你的项目代码呢?喂,开源么?接下来小帅b就跟你说说,如何打包你的代码.就拿我们上次演示的 todo为例,写完代码之后,代码的目录是这样的: 在 tod ...
- 阿里云自动java和mysql数据库_阿里云服务器之基于Linux系统部署上线JavaWeb项目和连接MySQL数据库(从购买云服务器到发布JavaWeb项目全套详细流程)...
阿里云服务器之基于Linux系统部署上线JavaWeb项目和连接MySQL数据库(从购买云服务器到发布JavaWeb项目全套详细流程) (仅此纪念人生第一篇学习博客) 前阵子接了一个小小的JavaWe ...
最新文章
- 数据类型_插入数据_选取数据_修改数据——删除行
- 汇编: 使用[bx]代替[0]获取内存数据
- 小程序自动化测试--测试3
- 各种说明方法的答题格式_【技巧】小学语文万能答题公式(六)阅读万能答题公式...
- JDK7的六个新特性回顾和讲解
- spark mllib推荐算法使用
- java水晶报表pull模式_水晶报表Pull模式 每次调用水晶报表的时候都要输入数据库密码的解决方案...
- c程序 wrapper_如何使 Python 程序能让他提速 30%?
- 三个点在同一个半圆的概率_圆形水池中的四只小鸭子出现在同一个半圆中的概率是?...
- java移位操作示例
- C++(opencv)简单拼接两幅图像
- 常用SEISMIC BINARY数据的读取
- java字符串反转reverse();
- 分析器错误消息: 该配置节不能包含 CDATA 或文本元素。
- 【内联函数】inline关键字的作用与内联函数的特性
- 面试技巧--国企银行篇
- BFC、IFC、GFC 和 FFC
- 索尼的hlg是什么_索尼HLG的拍摄使用方法
- Echarts - 柱状图(Simple Encode) 样式修改
- 今天心情很down~
热门文章
- COJ1183(计算表达式的值)
- 你还在使用IE6浏览器么?
- RTT的IPC机制篇——消息队列
- C语言课后习题(9)
- 如何快速打好java基础_学习Java课程时如何才能打好基础呢?
- Oracle 12.2新特性 | 基于权重的节点驱逐
- Git工作流中常见的三种分支策略:GitFlow、GitHubFlow和GitLabFlow
- 开发实践丨用小熊派STM32开发板模拟自动售货机
- 加快脑动脉瘤检测,AI来了
- CSE 支持spring 4/5 以及spring boot 1/2 maven组件依赖关系配置参考