三天时间包括配置好环境:idea2021,jdk17,jdk11,配置环境步骤在我的收藏夹中。两个jdk都配置吧,省的后面啰嗦。
(抱歉,写的没有目录箭头那些,将就看把,我从1018到1021,三天从配置环境到运行出最基础的接口,这是我个人总结,注意,需要至少学过一点软件基础的,至少配置环境得会吧,然后各种语言代码的意思都差不多,不懂就去搜,要不让ai给你写)
先明确大概要干什么才能copy别人的代码进行运行:
用idea创建一个空project,选择springboot,在名为demo2的project中,controller下面的那些类和pojo下的那些类,是需要自己创建,在里面写代码的,static中的1.jpg,2.jpg等等是接口需要访问到的图片存放地址,注意,static是需要创建在resources中的。而controller和pojo是需要自己创建在com.example.demo2中的。其余都是创建空project自带的,或者运行代码生成的。
运行该project就是点进Demo2Application,点绿色三角进行运行。(文末写好的接口代码可以附上)
一、创建一个空project,并且是springboot的
(为什么idea可以写springboot,因为idea集成了spring的各种功能,其中包括springboot,除此之外idea还能代替navicat,sqlyog等,idea直接成为数据库的图形化工具,除了下载mysql不需要多下软件了,不过这里先只说springboot,因为我还没学到操作数据库)
注意:左侧选择spring 右侧注意jdk都要选择一致的,就是17,17那里。demo代表新建project的名字,可以自定义,type选择maven不动,language选择java,location可以自己定义存在某个地址。注意:location末尾和artifact是会自动一致的。全部设置好选择next。
注意,我当前的时间是3.1.5版本的springboot,它默认支持的是jdk17,所以我叫你们下17,当然你也可以选择其他版本的sprinboot,然后配置对应支持的jdk版本。不过就是啰嗦点。
要在web中选择spring web,并且勾选上面的download,springboot的版本也要选择。最后选finish,就创建好啦。
新创建好的project就长这样,pom.xml是我们需要看的,这里面放的是依赖,jar包,就是说你的代码需要用到什么,都声明在这里,右边代码中有个3.1.5,就是springboot的版本,下面有个java.version,是17,就是jdk的版本,but我这里居然又报错了,泽,反正步骤就是这样,具体报错原因我还不知道,但是有时候又是成功的。接下来就是创建class。
二、创建写代码的地方
这是创建成功的,java会变成蓝色,我们只需要在自带的com.example.demo2下创建controller 和pojo就可以了,用到图片的话,就在resources中创建static。
在com.example.demo2上右键选择new,java class
输入controller,再创一个pojo,一般来说这两个命名大家都是默认这样的,别自己起。(黑马视频是这样)
然后再在这两个下面创建自己起名的class
方法一样。
注意 RequestController中写了pojo中包含的所有的控制类。而pojo中所有定义的类的内容都和RequestController中的控制类有关。看看例子。
第二个:
下面这个就是控制类,前面有个@的,后面跟着的绿色getWoman就是你设置的,前端输入的接口名,输入这个就能访问接口中的信息惹。
再看一个:
这result很特殊,这是限制端口返回信息的格式的。
看看端口返回的内容:
一般都是 code、msg、data。code200代表成功,msg就是成功,data就是接口传给前端的数据。注意这个数据是后端自己写的。result类就是控制每个接口传送的信息都是同样的格式。所以每个控制类都得写上result,看看文末的代码就懂了。
好了现在你只需要按照自己的需求创造class,并在其中写入符合接口需求的代码就能运行了。
假如接口要求为:
名字为猜你喜欢,内容为图片、描述、价格、销量。
则需要在pojo中定义一个recommend类,并在RequestController中添加对应的recommend的控制类代码
package com.example.demo2.pojo;//pojo下的recommend类的代码
public class Recommend{//猜你喜欢
private int ID;//id是默认要有的,唯一标识
private String Image;//服装图片
private String Desc;//服装描述
private float Price;//价格
private int SaleNumber;//销量
//下面是get、set方法和tostring方法,声明好上面的信息后,直接按alt+insert就可以选择自动创建了,注意全选,选择的时候要按住ctrl然后鼠标去点。
public int getID() {
return ID;
}
public void setID(int ID) {
this.ID = ID;
}
public String getImage() {
return Image;
}
public void setImage(String image) {
Image = image;
}
public String getDesc() {
return Desc;
}
public void setDesc(String desc) {
Desc = desc;
}
public float getPrice() {
return Price;
}
public void setPrice(float price) {
Price = price;
}
public int getSaleNumber() {
return SaleNumber;
}
public void setSaleNumber(int saleNumber) {
SaleNumber = saleNumber;
}
@Override
public String toString() {
return "Recommend{" +
"ID=" + ID +
", Image='" + Image + '\'' +
", Desc='" + Desc + '\'' +
", Price=" + Price +
", SaleNumber=" + SaleNumber +
'}';
}
}
放在这里按alt+insert
按住ctrl鼠标点全部变成蓝色
点ok
就生成getset方法。
生成tostring:
就好了。保姆级。
------------------------------------------------------------------------------
添加对应的控制类代码:
package com.example.demo2.controller;
import com.example.demo2.pojo.*;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//import javax.xml.transform.Result;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
//以上这些都是声明,
//你写完下面的代码自己会出来的,
//可以不用管,如果代码中有单词是红的,
//可能是缺少了对应的import
//按照提示添加就行
@RestController
public class RequestController {
@RequestMapping ("/recommend")
public Result recommend(){
Result result = new Result();
// 创建一个装Recommend对象的List集合
List<Recommend> recommendList = new ArrayList<>();
// 向List集合中添加Recommend对象
Recommend r1 = new Recommend();
r1.setID(1);
r1.setImage("http://192.168.199.146:8080/file/clothes/1.jpg");
//
//注意,这里的地址需要改成自己主机的地址,
//比如我的是位数为113,你自己的多少,自己查下。
//后面的文件地址会在下面解释,如果没有图片要传入,
//可以把图片地址删了,先试试自己能不能运行。
//这些都是多个同样的数据,
//能运行一个就能运行多个。这是因为我这个是对象,
//然后创建了多个对象实例,实例保存数据,
//最终一次性传入多个对象list。好像叫集合。
//就是多个数据用的是集合传给前端。
r1.setDesc("女士优质双排口西装套装裙");
r1.setPrice(230.20f);
r1.setSaleNumber(21340);
recommendList.add(r1);
Recommend r2 = new Recommend();
r2.setID(2);
r2.setImage("http://192.168.199.146:8080/file/clothes/2.jpg");
r2.setDesc("女士灰麻色高级小香风短圆领外套");
r2.setPrice(890.10f);
r2.setSaleNumber(15320);
recommendList.add(r2);
Recommend r3 = new Recommend();
r3.setID(3);
r3.setImage("http://192.168.199.146:8080/file/clothes/3.jpg");
r3.setDesc("男士看似是衬衫实际是鹅绒服轻薄舒适");
r3.setPrice(1199.09f);
r3.setSaleNumber(1830);
recommendList.add(r3);
Recommend r4 = new Recommend();
r4.setID(4);
r4.setImage("http://192.168.199.146:8080/file/clothes/4.jpg");
r4.setDesc("男士棕色亮面皮衣夹克帅气有型");
r4.setPrice(370.99f);
r4.setSaleNumber(2601);
recommendList.add(r4);
Recommend r5 = new Recommend();
r5.setID(5);
r5.setImage("http://192.168.199.146:8080/file/clothes/5.jpg");
r5.setDesc("儿童薄羽绒外套藏青色加橘色点缀");
r5.setPrice(348.80f);
r5.setSaleNumber(1985);
recommendList.add(r5);
Recommend r6 = new Recommend();
r6.setID(6);
r6.setImage("http://192.168.199.146:8080/file/clothes/6.jpg");
r6.setDesc("童趣轻羽绒外套戴帽杏色卡通印花");
r6.setPrice(280.60f);
r6.setSaleNumber(2457);
recommendList.add(r6);
// 将List集合设置到Result对象的data属性中
result.setCode(200);
result.setMsg("success");
result.setData(recommendList);
return result;
}
}
代码复制好了,就运行
点绿色三角,
出现这个spring 就运行成功了,在接口显示界面就是下面这样的。
关于resources中的static怎么设置:
java静态文件映射的问题:就是,如何输入接口就能访问存在自己电脑上的图片?就是下面这个链接的问题
就是添加静态文件(在resources中添加static,然后打开文件夹,把图片拖到static中就行了)
注意命名一般是跟我一样的,叫static。创建完之后就可以在文件夹中找到了。图片拖入static就行。
113是我自己的主机号,需要输入cmd进入然后查询自己的主机号。同理进入别人的就是输入别人的主机号。
b站直接搜:
java静态资源映射,用于解决访问服务端存放的图片问题
创建静态资源
多层级的定义:
接口要求如下
package com.example.demo2.pojo;
import java.util.List;
public class Category {
private Integer id;
private String name;
private Integer parentCategoryID;
private int level;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getParentCategoryID() {
return parentCategoryID;
}
public void setParentCategoryID(Integer parentCategoryID) {
this.parentCategoryID = parentCategoryID;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
@Override
public String toString() {
return "Category{" +
"id=" + id +
", name='" + name + '\'' +
", parentCategoryID=" + parentCategoryID +
", level=" + level +
'}';
}
}
//在之前的recommend下面添加该代码
@RequestMapping("/category")
public Result axa(){
List<Category> categoryListLevel1 = new ArrayList<>();
Result result = new Result();
Category c1 = new Category();
c1.setId(1);
c1.setName("女装");
c1.setLevel(1);
Category c2 = new Category();
c2.setId(2);
c2.setName("男装");
c2.setLevel(1);
Category c3 = new Category();
c3.setId(3);
c3.setName("童装");
c3.setLevel(1);
Category c4 = new Category();
c4.setId(4);
c4.setName("裙装");
c4.setParentCategoryID(1);
c4.setLevel(2);
Category c5 = new Category();
c5.setId(5);
c5.setName("T-short");
c5.setParentCategoryID(1);
c5.setLevel(2);
Category c6 = new Category();
c6.setId(6);
c6.setName("长袖");
c6.setParentCategoryID(1);
c6.setLevel(2);
Category c7 = new Category();
c7.setId(7);
c7.setName("长裤");
c7.setParentCategoryID(1);
c7.setLevel(2);
Category c8 = new Category();
c8.setId(8);
c8.setName("T-short");
c8.setParentCategoryID(2);
c8.setLevel(2);
Category c9 = new Category();
c9.setId(9);
c9.setName("外套");
c9.setParentCategoryID(2);
c9.setLevel(2);
Category c10 = new Category();
c10.setId(10);
c10.setName("长袖");
c10.setParentCategoryID(2);
c10.setLevel(2);
Category c11 = new Category();
c11.setId(11);
c11.setName("长裤");
c11.setParentCategoryID(2);
c11.setLevel(2);
Category c12 = new Category();
c12.setId(12);
c12.setName("裙装");
c12.setParentCategoryID(3);
c12.setLevel(2);
Category c13 = new Category();
c13.setId(13);
c13.setName("上装");
c13.setParentCategoryID(3);
c13.setLevel(2);
Category c14 = new Category();
c14.setId(14);
c14.setName("下装");
c14.setParentCategoryID(3);
c14.setLevel(2);
categoryListLevel1.add(c1);
categoryListLevel1.add(c2);
categoryListLevel1.add(c3);
categoryListLevel1.add(c4);
categoryListLevel1.add(c5);
categoryListLevel1.add(c6);
categoryListLevel1.add(c7);
categoryListLevel1.add(c8);
categoryListLevel1.add(c9);
categoryListLevel1.add(c10);
categoryListLevel1.add(c11);
categoryListLevel1.add(c12);
categoryListLevel1.add(c13);
categoryListLevel1.add(c14);
result.setCode(200);
result.setMsg("success");
result.setData(categoryListLevel1);
return result;
}
看看这里的层级关系。我也一知半解,但是能运行满足基本要求。。
关于readme.md,readme文件怎么写?看看recommend接口的例子:
别人说用.txt写也行,可以不用.md
README
#Api
##recommmend
`eg :
`get http://192.168.199.113:8080/recommend`
```json
{
"code": 200,
"msg": "success",
"data": [
{
"desc": "法式复古气质吊带连衣裙外搭开衫两件套高级温柔风",
"id": 1,
"image": "http://192.168.199.113:8080/Woman1.jpg",
"price": 288.9,
"saleNumber": 21340
},
{
"desc": "港味复古chic上衣披肩春秋新款衬衫设计感小众条纹",
"id": 2,
"image": "http://192.168.199.113:8080/Woman3.jpg",
"price": 479.88,
"saleNumber": 15320
},
{
"desc": "新款宽松直筒工装裤男百搭休闲拖地长裤",
"id": 3,
"image": "http://192.168.199.113:8080/man1.jpg",
"price": 158,
"saleNumber": 1830
},
{
"desc": "插件开衫连帽卫衣男春秋oversize情侣宽松重磅国潮外套",
"id": 4,
"image": "http://192.168.199.113:8080/man2.jpg",
"price": 233.09,
"saleNumber": 2601
},
{
"desc": "男童外套2023秋季加绒夹棉恐龙儿童拉链外套",
"id": 5,
"image": "http://192.168.199.113:8080/children5.jpg",
"price": 139,
"saleNumber": 1985
},
{
"desc": "宝宝棉服秋冬季婴幼儿加厚外套男女通用",
"id": 6,
"image": "http://192.168.199.113:8080/children6.jpg",
"price": 230,
"saleNumber": 2457
}
]
}
```
*image:图片url
*desc:商品描述
格式就是这样:中间写的是接口运行输出的信息。
暂时到这里。
看黑马javaweb这几门课。
数据库操作的话,看mybatis。目前还没涉及到。我还没学完