建设优化一个网站步骤,wordpress创意博客,wordpress 鼠标移动到标题会显示图片,中小企业网站建设济南兴田德润厉害吗目录
【SpringBoot日志】
什么是日志#xff0c;日志的作用
关于日志的基本信息#xff0c;又有哪些呢#xff1f;
关于日志的级别
Springboot内置SLF4J【门面模式】 和 logback【日志框架】 在配置文件中可以设置日志级别【以.yml为例】
SpringBoot 持久化的保存日…目录
【SpringBoot日志】
什么是日志日志的作用
关于日志的基本信息又有哪些呢
关于日志的级别
Springboot内置SLF4J【门面模式】 和 logback【日志框架】 在配置文件中可以设置日志级别【以.yml为例】
SpringBoot 持久化的保存日志
更简单的书写博客流程【添加lombok使用Slf4j注解自动生成log日志对象可以直接使用】
【SpringMVC】
创建SpringMVC项目 SpringMVC应用流程
第一步获取连接的五种基本方式
第二步获取参数
获取单个参数、多个参数、对象
consumes、produces、RequestBody RequestParam后端参数重命名 获取后的参数
获取路径里的参数PathVariable 获取前的参数
上传文件 RequestPart 获取Cookie/header/Session
第三步返回响应 返回静态页面【注意在路径中的/表示从根目录找页面不加即在本文件查找文件】 如果不返回静态页面而是返回数据(无论是Json还是其他数据springboot会帮我们适配)
返回跳转的地址【请求转发请求重定向】
【Idea设置热部署全流程】
第一步 在SpringBoot项目中添加devtools
第二步打开settings打开自动编译的选项【注意有两个settings一个是本项目一个是其他新项目】
第三步 在本项目settings中勾选 【SpringBoot日志】
什么是日志日志的作用
在项目启动运行时会发现在响应框里有如下此类信息这些就是日志。 日志的作用 1.记录错误日志和警告日志(发现和定位问题) 2.用户日志 3.系统日志 4.程序执行日志 关于日志的基本信息又有哪些呢 关于日志的级别 ⽇志的级别分为 低 trace微量少许的意思级别最低 | debug需要调试时候的关键信息打印 | info普通的打印信息默认⽇志级别 | warn警告不影响使⽤但需要注意的问题 | error错误信息级别较⾼的错误⽇志信息 高 fatal致命的因为代码异常导致程序退出执⾏的事件。【一般为系统设置】 Springboot内置SLF4J【门面模式】 和 logback【日志框架】 对于日志的框架大致有三种log4j1/2、JUL、logback。对于SpringBoot来说通过SLF4J的简单的日志门面SLF4J帮助完成后续的 logback 日志书写 在配置文件中可以设置日志级别【以.yml为例】
logging:level:root: errorcom:example:demo:Controller: trace;
在不同级下可以设置不同的日志级别上述代码在 root 级别上设置了 error 级别在 Controller 上设置了 trace 级别。当只有日志的级别高于所设定的级别在响应框内才会打印。【当root设置为error 重启项目会发现没有日志的打印因为第一次启动发现的日志都是低于 error】 SpringBoot 持久化的保存日志 1.设置日志的保存路径 2.设置日志保存名称 编写日志
package com.example.demo.Controller;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.Mapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;/*** Created with IntelliJ IDEA.* Description:* User: 97175* Date: 2023-10-08* Time: 16:43*/
Controller
ResponseBody
public class TestController {RequestMapping(/mapping)public String sayHi(){return(serverPort-serverPort spring.datasource.urlurl);}Value(${server.port})private int serverPort;Value(${spring.datasource.url})private String url;//1.获取日志对象private static Logger logger LoggerFactory.getLogger(TestController.class);RequestMapping(/print)public String sayHello(){//2.使用日志对象打印日志logger.trace( trace );logger.debug( debug );logger.info( info );logger.warn( warn );logger.error( error );return Hellourl;}}更简单的书写博客流程【添加lombok使用Slf4j注解自动生成log日志对象可以直接使用】 【SpringMVC】 经常听到别人做项目要用到SSM什么是SSM SSM- Spring Spring MVC MyBatis[老说法] SSM- SpringBoot SpringWeb(springMVC)MyBatis[新说法] 其中一般项目中不单独使用Spring框架一般情况下是直接搭建SpringBoot框架原因很简单注解写起来更快更方便。新版和旧版都有的部分就是SpringMVC和MyBatisSpringMVC就是可以通过浏览器建立数据的存取工作相当于JavaEE初阶所学的Servlet我们会发现在新版中多了一个SpringWeb框架这个框架是方便于搭建SpringMVC的过程在老说法中直接在项目中搭建SpringMVC直接搭建浏览器存取工作是十分繁琐的所有诞生了SpringWeb框架帮助我们更好的实现浏览器请求响应等工作。MyBatis方便于数据库存取工作在之后的博客也会详细提到。 简单总结一下什么是SpringMVC SpringMVC接受浏览器的请求获取浏览器的参数给浏览器响应即建立与浏览器的连接。 创建SpringMVC项目 有时候项目不能很好的识别出创建的是一个maven项目所以需要手动添加maven SpringMVC应用流程
第一步获取连接的五种基本方式
package com.example.demo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;/*** Created with IntelliJ IDEA.* Description:* User: 97175* Date: 2023-10-23* Time: 14:04*/
Controller //五大类注解 将USerController注入SpringBoot项目
ResponseBody //返回非页面
public class UserController {RequestMapping(/say)public String sayHi(){return Hi SpringMVC RequestMapping Get/Post;}RequestMapping(value /say2,method RequestMethod.POST)public String sayHi2(){return Hi SpringMVC RequestMapping Get;}PostMapping(/say3)public String sayHi3(){return Hi StringMVC PostMapping Post;}RequestMapping(value /say4,method RequestMethod.GET)public String sayHi4(){return Hi SpringMVC RequestMapping Get;}GetMapping(/say5)public String sayHi5(){return Hi StingMVC GET;}
}在浏览器输入say模拟实现get请求 因为浏览器只能发送get请求所以我们用postman模拟发送post请求 第二步获取参数
获取单个参数、多个参数、对象
package com.example.demo.controller;import com.example.demo.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;/*** Created with IntelliJ IDEA.* Description:* User: 97175* Date: 2023-10-23* Time: 14:04*/
Controller //五大类注解 将USerController注入SpringBoot项目
ResponseBody //返回非页面
public class UserController {RequestMapping(/getName) //获取一个参数public String printName(String name){return printName:name;}RequestMapping(/getNameAge) //获取多个参数public String printNameAge(String name,String age){return printNameAge:name age;}RequestMapping(/getUser) //获取一个对象public String getUser(User user){return user.toString();}
}package com.example.demo.entity;import lombok.Data;/*** Created with IntelliJ IDEA.* Description:* User: 97175* Date: 2023-10-23* Time: 16:26*/
Data
public class User {private int age;private String name;
}需要注意的是要在url里的变量名要与程序书写的变量名保持一致 consumes、produces、RequestBody consumes用来指定只能接收什么样子的对象produces用来指定返回什么格式的对象例如Json格式
package com.example.demo.controller;import com.example.demo.entity.User;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;/*** Created with IntelliJ IDEA.* Description:* User: 97175* Date: 2023-10-23* Time: 14:04*/
Controller //五大类注解 将USerController注入SpringBoot项目
ResponseBody //返回非页面
public class UserController {//consumes用来指定只能接收什么样子的对象produces用来指定返回什么格式的对象例如Json格式RequestMapping(value /getUser2,consumes application/json,produces application/json)public User getUser2( RequestBody User user){//用于接收json格式的对象需要添加RequestBody注解return user;}}RequestParam后端参数重命名 获取后的参数
RequestMapping(/getNameAge) //获取多个参数public String printNameAge(RequestParam(username)String name,String age){return printNameAge:name age;} 获取路径里的参数PathVariable 获取前的参数
RequestMapping(/test/{name}/{password})public String test_pathVariable(PathVariable(name) String name,PathVariable(password)String password){return name:namepassword:password;} 上传文件 RequestPart
RequestMapping(/myupload)public Object upload(RequestPart(myimg)MultipartFile file) throws IOException {File saveFile new File(A:\\home\\myimg.jpg);try{file.transferTo(saveFile);return true;} catch (IOException e) {e.printStackTrace();}return false;} 当我们上传多个文件的时候会发现后一个文件会覆盖前一个文件究其原因就是文件名相同都是myimg.jpg所以添加如下代码使上传文件名各不相同。【原理UUID通用唯一识别码 参考【精选】UUID详细介绍-CSDN博客】
String fileName UUID.randomUUID() // 文件名file.getOriginalFilename().substring( // 文件后缀file.getOriginalFilename().lastIndexOf(.));File saveFile new File(A:\\home\\fileName); 重新用postman来发送存储文件的请求再次打开对应文件夹 获取Cookie/header/Session
简洁的获取Cookie
RequestMapping(/getck)public Object getCk(CookieValue(value java,required false)String java){return java;}
简单的获取header RequestMapping(/gethd)public Object getHd(RequestHeader(value User-Agent,required false)String ua){return ua;}
简单的获取Session
private static final String key key1;RequestMapping(/setsession)public void setSession(HttpServletRequest request){HttpSession session request.getSession();session.setAttribute(key,value);}RequestMapping(/getsession)public Object getSession(SessionAttribute(key)String name){return session-name;}
第三步返回响应 返回静态页面【注意在路径中的/表示从根目录找页面不加即在本文件查找文件】
Controller
RequestMapping(/test)
public class TestController {RequestMapping(/index)public Object getIndex(){return /index.html;}
}如果不返回静态页面而是返回数据(无论是Json还是其他数据springboot会帮我们适配)
加上ResponseBody
Controller //五大类注解 将USerController注入SpringBoot项目
ResponseBody //返回非页面
public class UserController {返回跳转的地址【请求转发请求重定向】
返回请求转发 forward:/
RequestMapping(fw)public String fw(){ //返回请求转发return forward:/index.html;}
返回请求转发 redirect:/
RequestMapping(/rd)public String rd(){ //返回请求重定向return redirect:/index.html;}
【Idea设置热部署全流程】
第一步 在SpringBoot项目中添加devtools 第二步打开settings打开自动编译的选项【注意有两个settings一个是本项目一个是其他新项目】 第三步 在本项目settings中勾选 第四步 开启debug就可以了