实习生活记录——SINCE2019-04-19 第二、三、四周

2019-04-19 DAY6

前端到后端的一趟

先是在index。js里import一个/file的文件内容,再在下面concat加上一个filerouter。---可以从index。js里找到file在哪。然后/file里有各种功能,比如/add和/delete。可以分别路由到某个vue页面。再写一下vue页面,很简单的就可以,就是一个form表单.

form表单 action到后端的controller。

比如/filecontroller里面,写/upload的接口。具体实现写在???看一下项目里怎么写的。图片上上传到服务器,再到文件服务器,返回一个url地址。 vue页面上显示的这个图片url就是到这个服务器端的地址。 一般之后会加到数据库里面去,就是图片的id,name,url.

还有一般 /add。/select可以返回一个apiresult〈user〉泛型。

这样在swagger 里就可以看到他的很多信息。 dynamicbean就是一个动态的返回map?很多信息返回不了。
返回一个常量,以后就可以只改一个常量的值,不用每个地方都改。

用户,角色,权限的关系

1个用户可以有多个角色,一个角色可以有多个权限。
一般是,把权限(就是模块)给角色,再把角色给用户。
一个用户就有所有用的角色都权限了。

....实际操作起来和想象中不太一样。。。。。好困
下午了...........................

admin\src\main\java\com\lh\controller\FileUploadController.java

@Controller
@RequestMapping("fileupload")
public class FileUploadController {

@Value("${aliyun.oss-endpoint}")
String endpoint;

@Value("${aliyun.oss-access-key-id}")
String accessKeyId;

@Value("${aliyun.oss-access-key-secret}")
String accessKeySecret;

@Value("${aliyun.oss-bucket-name}")
String bucketName;

@Value("${aliyun.oss-cname}")
String ossCname;

private static OSS ossClient;

/**
 * 获取sts临时授权
 *
 * @param
 * @return
 */
@RequestMapping(value = "upload")
@ResponseBody
public ApiResult upload(HttpServletRequest req) {
    FileUtil fileUtil = new FileUtil();
    File file = fileUtil.getUploadFile(req);
    if (ossClient == null) {
        ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    }

    String key = "images/" + DateUtil.format("yyyyMMdd") + "/" + UUID.randomUUID().toString().replaceAll("-", "");
    String fileName = file.getName();
    String fileType = fileName.contains(".") ? fileName.substring(fileName.lastIndexOf(".") + 1) : "";
    if (StringUtil.hasLength(fileType)) {
        key = key + "." + fileType;
    }
    //System.out.println(key);
    ossClient.putObject(bucketName, key, file);
    ApiResult apiResult = ApiResult.build(200, "上传成功", "//" + ossCname + "/" + key);

    file.delete();
    //ossClient.shutdown();
    return apiResult;
}

}


在这里有常量

先贴一完整代码 ↑↑

一开始出现一个bug。为什么呢,因为没有写@Responsebody,就返回不出来了呀。!!!
image.png

image.png

image.png

image.png

image.png

阿里云-对象存储服务OSS-JAVA简单上传

文件上传

以下代码用于上传本地文件:
要有:endpoint;accesskeyid;accesskeysecret;再创建一个osslicent的实例,再putObject方法,就可以上传到服务器。到时候再存到数据库里去。

// Endpoint以杭州为例,其它Region请按实际情况填写。
 String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建    并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";

// 创建OSSClient实例。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

// 上传文件。<yourLocalFile>由本地文件路径加文件名包括后缀组成,例  如/users/local/myfile.txt。
ossClient.putObject("<yourBucketName>", "<yourObjectName>", new File("<yourLocalFile>"));

// 关闭OSSClient。
ossClient.shutdown();

2019-04-22 DAY7

一开始一直点不出来方法。。是因为没有定义成public的。。

mapper.xml可以不用写,用这种方式:

有一个updatecommand(比如),直接写mapper接口

service中的方法

service实现有很多种update重写的方法

当然service中要先定义这个mapper
注解别忘了写

2019-04-23 DAY8

今天有点懵懵的。。。。因为vue不会
刚刚一直登陆不进去,一开始说找不到一个bean,然后我写了整个类名,然后说resultmap,发现用resulttype就进去了!!!!!因为我没有定义resultmap

2019-04-23 DAY8

迷茫,不会vue,前后端分离不会写。打算看一下vue.js
老大帮我把bug都改好了。恩!我得学一下vue了


image.png

2019-04-24 DAY9

vue.js学习(一):

在html中用{{}}传值,里面可以是data中的key值(属性)或者是methods中的方法名(带括号,可以传值)
vue中,当前对象的data中的key值用this.key在methods中传值。
image.png
image.png
属性绑定:v-bind绑在标签的属性值上,v-html可以放在标签的中间就是p标签的中间加了一个websitetag的值就是一个a标签。
image.png
image.png
关于方法给不给括号:如果在{{}中要给括号,不然以为是属性值,绑定事件上可以不给括号。
image.png
v-on:和@是一样的,一般用@比较方便
image.png
阻止事件冒泡事件;.once只执行一次:
image.png
image.png
键盘事件:可以指定按那两个键才触发方法
image.png
双向绑定:先在input中加个ref的属性给个名字,再在vue中用this.$refs.name.value拿到input传过来的值!
image.png
image.png
双向绑定用v-model更方便!vue的data中要有name属性,如果属性有值,name一开始{{name}}就能显示值
image.png
计算属性:大量耗时的时候使用,点击一个触发一个,不像methods,点一个,触发全部。在{{}}中写方法名的时候不能加()
image.png
image.png
v-if:v-else-if两个只会显示一个。
image.png
image.png
v-show和v-if的区别:v-show在标签中是存在的,只是display是不是none显不显示,而v-if不是。
image.png
v-for循环拿到数组中的每个元素值:
image.png
image.png
可以只拿到name和age不会有格式
image.png
用template标签不会像div那样创建很多的div,他只会有一个。
image.png
component组件:template模板里面只能有一个根标签,不可用全局的变量,不然一个改了全改了。
结构是这样的
在html中,只要创建一个<greeting></greeting>标签就行了~!
执行顺序:component中是注册app.vue这个组件。
先html,再main.js再app.vue
vue的结构:分三个部分
image.png
vue中调用别的组件。要在component中注册
先import进来,然后在components中注册,最后在template标签下使用。
image.png
局部组件的构建:
image.png
这样也可以
用了scoped,样式就不会影响到别的关联的vue了
image.png
父组件向子组件传值,属性传值props:
image.png
我觉得都写同名就好了
这样写更严谨
传值和传引用:
传值,只变一个,传引用,全变
子组件向父组件传值:
子组件中的点击事件
触发这个方法,注册的事件名字是titlechanged,参数是后面那个“”里的
接着去他的父组件里找
找到这个事件,他要执行这个update的方法,参数是一个事件
在方法里改变内容
这里的title就是方法中的参数穿过来的
生命周期钩子:
image.png
router-link不会重新加载页面,而a标签会
image.png

2019-04-26 DAY10

vue.js学习(二):

components中的模块名字如果是驼峰的,可以不加引号,如果不是,就要加引号,而且不能和已存在的标签重复。
非驼峰命名
注意上面的标签名都是app-heade
路由配置:
image.png
image.png
路由跳转不进行刷新,用view-view,不用a标签。(a标签会刷新一次)
因为有多个页面都在这一块区域显示,所以用这个标签
router-link不用a标签
不用href,用to属性
如果url输入错误可以用这个方式
跳转到home
给路由起名字:
image.png
在这里使用,注意to前面的冒号是绑定的意思
实现跳转:
image.png
好几种方式
二级路由
写在about的children里面
首先要包裹在一个div里面,,router-link的tag属性作用是把这一条标签作为一个li
image.png
默认展示:用redirect
image.png
点到关于我们,自动展示某个vue
全局守卫:就是在没有登录前不能看其他页面
image.png
后置钩子,组件内守卫(一般不怎么用,用的多是全局守卫)
就是说,进入到这个组件之后会怎么样
路由独享的守卫
两种方式,第二种是全局守卫复制过来的。就是要进入这个组件之前的守卫。next():进入这个组件,有flase参数就又进不去了
异步;beforeRouterEnter和beforeRouterLeave
beforeRouterEnter、就是进入组件之前
beforeRouterLeave:离开组件之前
复用router-view
image.png
就展示了一个组件:HOME
也展示其他组件用components,加一个default,一进去就展示的组件,全部,不是只有Home
结果
路由步骤:
routes.js
import进来
image.png
就是下面那个components里的组件可以用router-view跳转
加入history、可以去掉#,很好
添加header组件,放到app.vue里面,实现点哪个跳那个
image.png
image.png
效果

2019-04-28 DAY11

axios全局配置:
image.png
image.png
全局配置 或者:
image.png
image.png

Java中交互方式分为同步和异步两种,异同情况如下:

同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;
异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。
区别:一个需要等待,一个不需要等待,在部分情况下,我们的项目开发中都会优先选择不需要等待的异步交互方式。

async的用法,它作为一个关键字放到函数前面,用于表示函数是一个异步函数,因为async就是异步的意思, 异步函数也就意味着该函数的执行不会阻塞后面代码的执行。
await是等待的意思,那么它等待什么呢,它后面跟着什么呢?其实它后面可以放任何表达式,不过我们更多的是放一个返回promise 对象的表达式。注意await 关键字只能放到async 函数里面
image.png
image.png

2019-04-29 DAY12

新的一天,从报错开始

成功了!。
image.png

新的任务:做一个项目管理的增删查改,要有树形目录。
IMG_20190429_155215.jpg

2019-05-07 DAY13

这一天真的很累,完成了后端的基本内容,vue的树形怎么都不会写。

2019-05-09 DAY14

然后电脑又坏了。刚刚去找了老大,解决了一些问题。
1、前端没有显示添加的模块,但是输入接口能跳转。是因为没有配置模块里和到角色的权限里面。。
2、对于数据库的设计问题,id应该设置为自增长,number要计算。

3、前端中的新增按钮,不应该放在这里。
image.png
image.png

因为父级目录到时候肯定不止这么两个。,应该放在删除,下载,按钮旁边。无论在哪个文档下面都可以添加子文档。
4、树形结构的设计,后端再写一个接口,接受parentId,返回list。就是说接收到parentID为0,就是第一层。

................下午了........
脑子很乱,让我来理一下。
目前遇到的问题:
1、下载的接口写不好,不能从给的url地址下载下来文件。
2、上传文件的前端不知道怎么写,用他给的uploadfilebutton返回的url是个很诡异的地址,有80多k。
3、怎么把这一条数据的id传给这一条数据的按钮跳转的新增页面
4、关键字number在哪里计算。
5、树还是出不来

成功了!!!!!!!!!!!

2019-05-10 DAY15

昨天把功能基本写好了,今天就总结一下


image.png

emmmm下载好像还不行。。。现在是打开这个东西。

1、树形是怎么出来的

然后就去看vue.js了。。。。看的很困

2019-05-13 DAY16

又是周一,今天眼睛不是很舒服。
prop属性详解:https://www.cnblogs.com/xiaohuochai/p/7388866.html

静态Prop通过为子组件在父组件中的占位符添加特性的方式来达到传值的目的

image.png
image.png

动态props:动态地绑定父组件的数据到子模板的 props,与绑定到任何普通的HTML特性相类似,就是用 v-bind。每当父组件的数据变化时,该变化也会传导给子组件

image.png

总结一下:

子组件在props中创建一个属性,用以接收父组件传过来的值
父组件中注册子组件
在子组件标签中添加子组件props中创建的属性
把需要传给子组件的值赋给该属性

子组件向父组件传值

1.在子组件中创建一个按钮,给按钮绑定一个点击事件
image.png

2.在响应该点击事件的函数中

使用$emit来触发一个自定义事件,并传递一个参数
image.png

3.在父组件中的子标签中监听该自定义事件并添加一个响应该事件的处理方法
image.png

总结一下:

子组件中需要以某种方式例如点击事件的方法来触发一个自定义事件
将需要传的值作为$emit的第二个参数,该值将作为实参传给响应自定义事件的方法
在父组件中注册子组件并在子组件标签上绑定对自定义事件的监听

Vue的slot-scope的场景的个人理解(写的很好)

简单来说:

理解插槽作用域的使用方式

1.父组件传递了todos数组给子组件
2.子组件通过props接受了数组数据,这里应该没有任何问题
3.子组件拿到数组后v-for渲染列表,并且通过 <slot :todo="todo">的方式,把数组内的每一个todo对象,传递给父组件
4.父组件通过slot-scope="slotProps"的方式,接受todo对象,之后就可以通过slotProps.todo.xxx的方式来使用了

所以数据的流动经历了

父组件传递todos数组给子组件
子组件遍历todos数组,把里面的todo对象传递给父组件

props,scope,slot,ref,is,slot,sync等知识点(写的很好)

好了,看了近一天。。基本看懂vue了。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,307评论 0 9
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,744评论 0 10
  • 33、JS中的本地存储 把一些信息存储在当前浏览器指定域下的某一个地方(存储到物理硬盘中)1、不能跨浏览器传输:在...
    萌妹撒阅读 2,080评论 0 2
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,758评论 0 15
  • width: 65%;border: 1px solid #ddd;outline: 1300px solid #...
    邵胜奥阅读 4,810评论 0 1