springbootweb开发
一.在springboot里面使用jsp
1.需要另外加入tomcat-embed-jasper的依赖2.需要在配置文件中,配置如下两个配置项
spring.mvc.view.prefix=/WEB-INF/jsp
spring.mvc.view.suffix=.jsp
方法的返回值,是jsp的路径+文件名
springboot如何处理静态资源
1.src/main/webapp目录下,就可以直接访问
2.默认的静态资源路径是ResourceProperties类中的 CLASSPATH_RESOURCE_LOCATIONS = {
"classpath:/META-INF/resources/", "classpath:/resources/",
"classpath:/static/", "classpath:/public/" };
3.可以通过spring.resources.staticLocations配置项修改静态资源路径
二、 springboot中使用servlet
方法一:1.编写继承servlet的API
2.继承类加上Servlet对应的注解
3.启动类加@ServletComponentScan注解
方法二:(servlet2.5及以下版本可以使用这种方法)
1.编写servlet
2.装配相应的bean到spring容器中
servlet->ServletRegistrationBean
filter->FilterRegistrationBean
listener->ServletListenerRegistrationBean
三、 拦截器(详情查看HandlerInterceptor类
1.写一个拦截器,实现HandleInterceptor接口2.写一个类,集成WebMvcConfigurerAdapter抽象类,然后重写addInterceptors方法,并调用registry.addInterceptor(new LogHandleInterceptor());把上一步拦截器加进去
preHandle:controller执行之前调用
postHandle:controller执行之后调用
afterCompletion:页面渲染之后调用,一般用于资源清理操作
四、异常处理
如何去掉spring boot默认的异常处理逻辑@springBootApplication(exclude=ErrorMVCAutoConfiguration.class)
使用ErrorPageRegistrar方法
1.写一个类,实现ErrorPageRegistrar接口,在该方法中添加具体的错误处理逻辑(类似web.xml里面配置错误处理方式)
五、全局异常处理
1.写一个类,需要加上@ControllerAdvice注解2.写一个异常处理方法,方法上面需要加上@ExceptionHandler(value=Exception.class)这个注解,在该方法里面处理异常
六.Tomcat优化(ServerProperties)(EmbeddedServletContainerCustomizerAutoConfiguration
1.server.tomcat.accesslog.enabled=false/true2.server.tomcat.accesslog.directory=H:/logs
两种方法
1.实现EmbeddedServletContainerCustomizer接口,并把实现类纳入到spring容器中管理
2.在spring容器中装配一个EmbeddedServletContainerCustomizer对象
七.装配DataSource
1.加入数据库驱动2.配置
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot
spring.datasource.username=root
spring.datasource.password=15200229445
spring.datasource.type指定数据源(DataSourceAutoConfiguration查看支持的数据源)
九.事物
1.类上加@EnableTransactionManagement启用对事物的支持2.需要事物控制的方法或者类加@Transactional(默认只对运行时异常进行事务回滚,非运行时异常不会回滚事务)
十.AOP开发流程
1.加入依赖,默认就开启了aop支持(spring.aop.auto配置开关)2.写一个Aspect,封装横切关注点(日志,监控等等),需要配置通知 和 切入点
3.纳入spring容器管理,并且需要加@Aspect
默认是使用基于JDK的动态代理实现AOP
spring.aop.proxy-target-class=false 或者不配置 使用动态代理
如果配置了false而类没有接口,则依然使用cglib
十一.开发spring boot starter步骤
1.新建一个maven项目2.创建一个配置类,配置类里面需要装配好需要提供出去的类
3.
1)使用@Enable,使用@Import导入需要装配的类
2)/META-INF/spring.factories,在org.springframework.bootautoconfigure.EnableAutoConfigration配置需要装配的类
十二.springboot日志
1.springboot默认的日志级别是info
2.通过logging.level.*=debug 来设置.*可以是包,也可以是某个类
3.
logging.file 指定日志文件名字
4.logging.path 指定日志目录(此时的日志名字为spring.log)
5.logging.file.console配置日志文件输出日志的pattern
6.logging.pattren.console 配置控制台输出日志的pattern
注:
日志级别有:TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF
日志级别配置成OFF,表示关闭日志输出
日志文件输出,文件大小10M之后,就会分割
使用其他的日志组件
1.maven中排除默认的日志组件:spring-boot-starter-logging
2.加入新的日志路径依赖
3.把相应的日志配置文件放到classpath下默认的名字log4j2-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration >
<appenders>
<!--输出到控制台 ConsoleAppender-->
<Console name="console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS}[%thread] %-5level %logger{80} -%msg%n"/>
</Console >
</appenders>
<loggers>
<root level="DEBUG">
<!--appender将会添加到这个loger-->
<appender-ref ref="console"/>
</root>
</loggers>
</configuration>