SpringBoot基本框架中重要常用的包讲解:
.idea包和.mvn包框架生成不经常用
src包下主要存放前后端代码:
main包下的java包存放的是后端java代码主要负责数据处理
resource包下存放的是配置资源和前端页面,其中static中存放的是前端html网页一般存放静 态资源,templates包下一般存放的是动态资源如jsp一类的文件
application.properties文件主要为编译配置信息,如链接数据库需要的账号密码等
test包,主要用于代码测试,测试框架
pox.xml主要用于链接maven库
DemoApplication.java是SpringBoot的启动类,里边有个main方法点击即可启动项目
SpringBoot更新工具主要是注解,且简化了代码,框架自带tomecat,不需要专门配置tomecat,极大的提高了web项目的开发速度
一、处理web请求(SpringBoot Controller)
1.基础的获取请求方法,启动项目后默认请求端口号(http://localhost:8080)+括号中具体地址便可访问数据传输需要拼接字符(?name="对应数据")即可传输,需与后端类参数变量名保持一致
@GetMapping("/需要访问的地址页"):
publc String re(String name,String number){
System.out.println("前端获取的数据"+name+number)
return "传参成功";
}
2.指定请求方法,在前端向后端发送数据时,需要指定请求方法如get()或post()请求
RequestMethod.GET:只接受get()请求,常见的请求方式将需要的变量和变量名拼接在地址栏 后边
RequestMethod.POST:只接受post()请求,请求不会出现在地址栏上方安全性较高
@RequestMapping (value = "/hello",method = RequestMethod.GET)
public String hello(String name,String number){
System.out.println("号码:"+number);
return "你好 "+name+" 编号 "+number;
}
3.注解映射映射请求方法,当前端请求的参数名与后端获取的变量名不一致时将其正确的前端变量名赋值即可
@RequestMapping(value = "/test_02",method = RequestMethod.GET)
public String test2(@RequestParam(value = "nickname",required = false) String name) {
System.out.println("接受的nickname值为:"+name);
return "注解映射,前端发送变量名与后端接收变量名不一致时做的注解," +
"内容即可以获取,原本变量名则无法使用"+"\n" +
"使用required方法后选择false原本的变量名就可以接着使用,选择true则相反,但只能进入网页显示页面并不能获取变量值且任意变量都能进";
}
二、静态资源访问基础的前端部署
1.静态资源根目录在resources/static/ 下
将默认文件放入static下后默认输入对应端口号拼接需要访问的静态文件后就能访问
2.设置对应路径,在application.properties文件中添加 spring.mvc.static-path-pattern=/images/***
此时访问需要输入访问的端口后加上文件路径/images/需要访问的文件名即可访问
3.设置静态访问路径文件夹访问,在application.properties文件中添加spring.web.resources.static-locations=classpath:/css
classpath:/写添加的文件夹名称/,这样就通过static添加文件夹放入对应文件进行操作
4.在paoolicaton.properties中,sever.port=端口号,可设置端口号
三、文件上传
1.通过前端上传文件的name名来获取文件,通过MultipartFile类存入变量,HttpServletRequest获 取服务器目录
MultipartFile: (1)photo.getOriginalFilename() 获取文件名称
(2)photo.getContentType() 获取文件类型
HttpServletRequest:(1)request.getServletContext().getRealPath("/upload/") 获取服 务器具体目录
2.通过io流存储
File:(1).exists() 判断文件是否存在存在返回true否则返回false
(2).mkdir() 创建对应文件夹
(3).transferTo() 存放文件.将顿号前的文件存入()中的路径目录中
实例代码如下:
@PostMapping("/Upload")
public String Up(String nickname, MultipartFile photo, HttpServletRequest request)
throws IOException {
System.out.println("文件获取器名称:"+nickname);
//获取文件名称
System.out.println("文件名称:"+photo.getOriginalFilename());
//获取文件类型
System.out.println("文件类型:"+photo.getContentType());
//获取web服务器目录
String path = request.getServletContext().getRealPath("/upload/");
System.out.println("服务器目录"+path);
saveFile(photo,path);
return "上传成功";
}
public void saveFile(MultipartFile photo, String path) throws IOException {
//判断文件目录是否存在如果不存在则创建
File dire = new File(path);
if (!dire.exists()) {
dire.mkdir();
}
File file = new File(path+photo.getOriginalFilename());
photo.transferTo(file);
}
四、拦截器
使用拦截器需要连接 HandlerInterceptor类和WebMvcConfigurer类
通过将链接HandlerInterceptor类获取到的参数传递到WebMvcConfigurer类中进行筛选在返 回.addPathPatterns("/user/**"): 获取用户的访问类型
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/user/**");
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse
response,Object handler) throws Exception {
System.out.println("preHandle");
return true;
}
五、MybatisPlus
1.添加对应的数据库依赖在pom.xml文件中
<!-- MyBatisPlus依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<!-- mysq1驱动依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version></dependency>
<!--数据连接池 druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.20</version>
</dependency>
2.在application.properties文件中填写对应的数据库配置
spring.application.name=MPDemo //对应的项目名称
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource //项目资源类型
spring.datasource.url=jdbc:mysql://localhost:3306/message //具体的数据库位置
spring.datasource.username=root //数据库账号名
spring.datasource.password=54ypf0507 //数据库账号密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver //对应链接
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl //mybatis的日志实现方式
3.在对应的项目Application文件中添加注解@MapperScan("对应的Mapper文件项目位置")即项目启动类
@SpringBootApplication
@MapperScan
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
4.创捷接口类使用@Mapper注解标注接口
5.SpringBoot对应的sql查询方法
@Select("对应查询语句")查询全部对应语句
@Insert("insert into user values(#{id},#{username},#{password},#{birthday})")对应的添加语句
@Update("update user set username = #{id},#{username},#{password},#{birthday} where id = #{id}")修改对应语句
@Delete("delet from user where id=#{id}")对应删除语句
在对应的标注下创建相关类,获取语句需要的数据如:
@Insert("insert into user values(#{id},#{username},#{password},#{birthday})")
public int save(User user);
6.创建实现类@Autowired标注接口类,创建类对象,获取对应方法进行传参如:
@Autowired
private UserMapper userMapper;
@GetMapping("/user")
public List<User> query(){
List<User> list = userMapper.findAll();
System.out.println(list);
return list;
}
@PostMapping("/user")
public String save(User user){
int i = userMapper.save(user);
System.out.println(user);
if (i>0){
return "添加成功";
}else {
return "添加失败";
}
}