JaveWeb项目开发注意事情12

JaveWeb项目开发注意事情

#JaveWeb项目开发注意事情

遵守REST开发规范
REST风格,表述性状态转换,它是一种软件架构风格。
传统风格
GET 查询id为1的用户
POST 新增用户
POST 修改用户
GET 删除id为1的用户
REST风格
GET 查询id为1的用户
POST 新增用户
PUT 修改用户
DELETE 删除id为1的用户
REST风格不是规定,可以打破,描述模块的功能通常使用复数加s表述,表示此类资源,不是单个资源。

先需求分析然后查看接口文档,理清思路,进行功能代码的实现。

开发过程
1,数据库准备好表
2,IDEA创建项目,填写type为Maven,Artifact为项目名,JDK和Java都选11。勾选Spring Boot为2.7.15
Dependencies选择,Developer Tools中的Lombok,web中的Spring Web和SQL中的MyBatis Framework 和MySQL Driver后,在新建项目的pom文档中会自动引用,写在dependence中,Maven的依赖中会显现。
3.application.properties中填写配置
4,创建项目文件,根据分层解藕,pojo文件夹中填写实体类文件,controller文件夹中填写控制类文件,mappe中填写针对数据库的接口文件,services文件夹中填写实现的方法和方法使用的接口。

controller类调用service类,service类中使用引入的service接口,同时调用mapper接口,mapper接口操作数据库,得到的数据,返回service接口类型的数据到service类中,然后返回控制层。

controller类
@Slf4j
@RestController
public class DeptController {
//定义log输出日志对象
// private static Logger log= LoggerFactory.getLogger(DeptController.class); //等价于@Slf4j
@Autowired
private DeptService deptService;

// @RequestMapping(value = “/depts”,method = RequestMethod.GET) //限制请求路径为get
@GetMapping(“/depts”) //限制请求路径为get
public Result list(){
log.info(“查询全部部门数据”);
//
//调用deptservice 查询全部部门数据
List deptList = deptService.list();
return Result.success(deptList);

}

}

service类

@Service
public class DeptServiceImpl implements DeptService {

@Autowired
private DeptMapper deptMapper;

@Override
public List<Dept> list() {
    return deptMapper.list();
}

}

service接口
public interface DeptService {
/查询全部数据/
List list();
}

mapper接口
@Mapper
public interface DeptMapper {
/**
* 查询全部数据信息
* */
@Select(“select * from emp”)
List list();
}

@RequestMapping(“/depts”)抽取公共路径

查询操作,@GetMapping
所以一个完整的请求路径,应该是类上的@RequestMapping的value属性+方法上的@RequestMapping的属性。

@RequestParam(defaultValue=“1”) // 设置请求参数默认值。

// 分页查询获取数据
//参数不能传递的两种解决方法,1
// @Select(“select * from emp limit #{org1},#{org2}”)
// List pageLimit(Integer start, Integer pageSize);
//参数不能传递的两种解决方法,2
@Select(“select * from emp limit #{start},#{pageSize}”)
List pageLimit(@Param(“start”) Integer start, @Param(“pageSize”)Integer pageSize);

分页插件PageHelper
1.pom文件引入依赖

    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.4.6</version>
    </dependency>

//员工信息查询,pageHelper插件
@Select("select * from emp ")
public List list();

service文件中
@Override
public PageBean page(Integer page, Integer pageSize) {
//
PageHelper.startPage(page,pageSize);

    List<Emp> empList = empMapper.list();
    Page<Emp> p = (Page<Emp>) empList;

// 3封装数据
PageBean pageBean = new PageBean(p.getTotal(),p.getResult());
return pageBean;
}

//@PathVariable 传递id时不能缺少路径参数
//传递实体类参数,需要@RequestBody注解

文件上传,指将本地图片,视频音频等文件上传到服务器,供其他用户浏览或下载的过程。
文件上传在项目中应用非常广泛,
2前端页面三要素
form表单中设置input type=“file”。method=“post”。enctype=“multipart/form-data”(文件分多部分提交)
3.服务器接收文件
//MultipartFile 上传文件

文件上传到本地,UUID唯一文件名
@PostMapping(“/upload”)
//MultipartFile 上传文件
public Result upload(String name, Integer age,@Param(“image”) MultipartFile image) throws Exception{
log.info(“文件上传,{},{},{}”,name,age,image);
//获取文件原始名称
String originalFilename = image.getOriginalFilename();

    //获取文件唯一名称 UUID
    int i = originalFilename.lastIndexOf(".");
    String extname = originalFilename.substring(i);
    String newName = UUID.randomUUID().toString()+extname;


    //保存上传的文件到磁盘目录中
    image.transferTo(new File("E:\\FOut\\"+newName));

    return Result.success();
}

突破默认文件传输IMB的限制
#单个文件最大上传10MB
spring.servlet.multipart.max-file-size=10MB
##多个文件上传,总共合计最大的大小为100MB
spring.servlet.multipart.max-request-size= 100MB

String getOriginalFilename(); //获取原始文件名
void transferTo(File dest); //将接收的文件转存到磁盘文件中
long getSize(); //获取文件的大小,单位:字节
byte[] getBytes(); //获取文件内容的字节数组
inputStream getInputStream();//获取接收到文件内容的输入流。

4。文件存储方式
本地存储,无法直接访问,磁盘空间限制,磁盘损坏。

阿里云OSS(Object Storage Service),是一款海量,安全,低成本,高可靠的云存储服务。
SDK(software Development kit),软件开发工作包,辅助软件开发和做入门程序。

AccessKey
LTAI5tS3xJE1Z6D5x6aRFxEC ID
pcjo1N5LJLXArZVy32WyaS8OD4xrBL Secret

勾选文件扩展名,更改文件后缀名

参数配置化 springs配置文件 解决阿里云上传文件硬编码的问题
@Value注解用于外部配置的属性注入,具体用法 @Value(“${alyun.oss.bucketName}”)

@Value(“ a l y u n . o s s . e n d p o i n t " ) p r i v a t e S t r i n g e n d p o i n t ; / / p r i v a t e S t r i n g a c c e s s K e y I d = " L T A I 5 t S 3 x J E 1 Z 6 D 5 x 6 a R F x E C " ; @ V a l u e ( " {alyun.oss.endpoint}") private String endpoint; // private String accessKeyId = "LTAI5tS3xJE1Z6D5x6aRFxEC"; @Value(" alyun.oss.endpoint")privateStringendpoint;//privateStringaccessKeyId="LTAI5tS3xJE1Z6D5x6aRFxEC";@Value("{alyun.oss.accessKeyId}”)
private String accessKeyId;
// private String accessKeySecret = “pcjo1N5LJLXArZVy32WyaS8OD4xrBL”;
@Value(“ a l y u n . o s s . a c c e s s K e y S e c r e t " ) p r i v a t e S t r i n g a c c e s s K e y S e c r e t ; / / p r i v a t e S t r i n g b u c k e t N a m e = " h m l e a d n e w s s − w e b − f r a m e w o r k 01 " ; @ V a l u e ( " {alyun.oss.accessKeySecret}") private String accessKeySecret ; // private String bucketName = "hmleadnewss-web-framework01"; @Value(" alyun.oss.accessKeySecret")privateStringaccessKeySecret;//privateStringbucketName="hmleadnewsswebframework01";@Value("{alyun.oss.bucketName}”)
private String bucketName;

SpringBoot提供了多种配置方法
常见的配置文件格式对比
XML 文件格式臃肿
properties 层级结构不清晰
yml/yaml 简洁,以数据为中心 (推荐)

yml 基本语法
1大小写敏感
2数值前边必须有空格作为分隔符
3.使用缩进表示层级关系,缩进时不允许使用Tab键,只能用空格(idea中自动将Tab转为空格)
4.属性的空格数目不重要,只要相同层级的元素左侧对齐即可
5.#表示注释,从这个字符到行尾
server:
port: 9000 #修改端口
#定义对象/Map集合
user:
name:Tom
age:20
address:bejin

#定义数组/List/Set
hobby:

  • java
  • a
  • tram

通过@ConfigurationProperties注解,注入参数

@Data
@Component
@ConfigurationProperties(prefix = “alyun.oss”)
public class AliOSSProperties {
private String endpoint;
private String accessKeyId;
private String accessKeySecret ;
private String bucketName;
}

@ConfigurationProperties和@Value(“${alyun.oss.endpoint}”)都是注入外部属性
但@ConfigurationProperties批量注入,@Value单个注入

lowchart.js/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值