SLF4J
Simple Logging Facade for Java(具体的一种实现)
使用此API的原因
1)此API定义了日志的规范-程序中建议耦合规范(其目的
提高其可扩展性)
2)此API的具体实现
ch.qos.logback.classic.logger
3)为什么不用log4j
SpringBoot内置就是logback(它本身的性能比较log4j好)
异步日志:logback~~~~
4)项目中的日志大部分是异步(logback)写的,是为了提高用户体验
日志有八种级别
mvc
mvc是什么
视图层(View),控制层(Controller),模型层(Model),通过这样的分层设计让我们程序具备更好的灵活性和可可扩展性.因为这样可以将一个复杂应用程序进行简化,实现各司其职,各尽所能.比较适合一个大型应用的开发
网页出现日志404问题查找
url路径有问题或者服务器没有正常启动
确定端口是否一致(server.port=80 在application.properties里改端口为80)
是否有注解描述
网页日志500错误(TemplateInputException模板解析异常)
请看服务端异常
指定的目录不存在(路径有可能不对)
springboot配置文件的模板前缀后缀(后缀默认为spring.thymeleaf.suffix=.html,前缀需要自己去配置spring.thymeleaf.prefix=classpath:/templates)与wed配置不一致
主要就是springmvc响应和请求的方式以及流程。
//1.返回值会交给DispatcherServlet对象进行处理
//2.DispatcherServlet对象会调用viewresolver对结果进行解析
//2.1基于viewname找到对应的view页面(prefix+viewname+suffix)
//2.2将model中的数据填充到view页面上
//2.3返回一个带有module数据的页面给DispatcherServlet
//3.DispatcherServlet将带有model数据的页面响应到客户端
spring.thymeleaf.cache=false(对view的缓存时可以编译)
model底层是通过map储存数据的
在springmvc中会帮我们封装成modelandview对象
客户端向服务器发送一个请求,服务端处理完请求之后,直接响应数据封装到model中 然后和view一起响应给客户端
问题?
1)在这种应用实现过程中,假如controller处理数据的时间比较长,会直接影响页面响应时间长,给用户带来的体验不好
2)在当前大前端高速发展的过程中,各中端都有,有的端可能只需要服务端的数据但不需要服务端页面,而我们将数据和页面绑定在一起返回,这样做扩展性不好
说明:很多种小型企业内部的管理系统直接就是springboot+thymyleaf技术实现
注:开源网页可以看看Ruoyi
json是一种轻量级
说说你对依赖注入的理解
- 谁依赖于谁:当然是应用程序依赖于IoC容器;
- 为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;
- 谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;
- 注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。
谈谈你对MVC的理解
MVC是Model—View—Controler的简称,MVC是一种设计模式
视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。
模型: 模型表示业务数据和业务处理。相当于JavaBean。一个模型能为多个视图提供数据。这提高了应用程序的重用性
控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。
然后根据处理的结果调用相应的视图来显示处理的结果。
MVC的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用户。
2.项目中为什么使用SSH
(1). 使用Struts是因为struts是基于MVC模式的,很好的将应用程序进行了分层,使开发者更关注于业务逻辑的实现;第二,struts有着丰富的taglib,如能灵活运用,则能大大提高开发效率。
(2). 使用Hibernate:因为hibernate为Java应用提供了一个易用的、高效率的对象关系映射框架。hibernate是个轻量级的持久性框架,功能丰富。
(3). 使用Spring:因为spring基于IoC(Inversion of Control,反向控制)和AOP构架多层j2ee系统的框架,但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;采用IoC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现事务管理(Transcation Managment),等等
- JAVA三大框架的各自作用
hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 也就是Model;
struts提供的丰富标签是用于显示层View;同时struts也充当了实现Control的功能(不管是Struts1,还是Struts2),接收参数,视图分发。
Spring是用于降低层与层间耦合度的,就是所有的类都可以由spring统一创建,用时只需注入即可(IOC)
从功能上来说,hibernate为M,struts2 为V,也可以为C,spring可以为C。
但大多数项目中,hibernate为M,struts2 为V+C,spring用来帮助管理类以及实现一些业务无关功能,如日志记录等,大多数都是用struts来做C的。