- 博客(44)
- 资源 (1)
- 收藏
- 关注
原创 SpringBoot index页面、引入资源、国际化
1. 添加index.html访问用了模板引擎thymeleaf@RequestMapping({"/", "/index.html"})public String index() { return "index";}@Configurationpublic class MyWebMvc extend WebMvcConfigurer { @Override public...
2019-08-31 23:30:04 1026
原创 Spring Boot SpringMVC配置
1. SpringMVC auto-configurationspringboot自动配置好了SpringMVChttps://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/html/boot-features-developing-web-applications.html#boot-features-spring-mvc-a...
2019-08-31 21:31:36 117
原创 Spring Boot 使用thymeleaf
ctrl + n class查询ctrl + g 快速定位到行1. 引入thymeleaf<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId>&l...
2019-08-31 19:48:17 84
原创 SpringBoot 对静态资源的映射规则
1. SpringBoot 对静态资源的映射规则org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration:public void addResourceHandlers(ResourceHandlerRegistry registry) { //ResourceProperties 可以设置和资源有关...
2019-08-31 17:44:35 342
原创 Spring Boot 日志
springboot 底层是spring框架,spring框架默认使用JCLspringboot选用slf4j和logbackjcl、slf4j:日志门面log4j、log4j2、logback:日志实现log4j、logback、slf4j是一个人写的,logback > log4jlog4j2 是apache的1. SLF4j使用开发的时候,日志记录方法的调用,不应该直接调...
2019-08-30 17:13:26 87
原创 Spring Boot HttpEncodingAutoConfiguration
以HttpEncodingAutoConfiguration为例解释自动配置原理:@Configuration //表示这是一个配置类,可以给容器中添加组件@EnableConfigurationProperties({HttpProperties.class}) //启用指定类的ConfigurationProperties功能,将配置文件中对应的值和HttpProperties绑定起来@...
2019-08-30 14:55:49 268
原创 Spring Boot 配置文件加载位置
spring boot启动会扫描以下位置的application.properties或者application.yml文件作为spring boot的默认配置文件按照优先级从高到低的顺序:file:./configfile:./classpath:/configclasspath:/所有位置的文件都会被加载,高优先级覆盖低优先级还可以通过spring.config.locati...
2019-08-30 14:16:28 79
原创 Spring Boot 多Profile配置
1. 配置文件application-dev.properties/ymlapplication-prod.properties/yml默认使用application.yml配置文件2. yml多文档块document1---document2---documcent3server: port: 8081spring: properties: active: de...
2019-08-30 13:55:46 223
原创 Spring Boot 配置文件占位符
person.last-name=王腾${random.uuid}person.age=${random.int}person.dog.name=${person.last-name}dogperson.dog=${person.hello:hello}dog 没有定义这个值,取不出person.hello,取得默认值hello...
2019-08-29 04:49:31 92
原创 Spring Boot 配置@PropertySource @ImportResource @Bean
1. @PropertySource加载指定配置文件@component@PropertySource(value={"classpath:person.yml"})@ConfigurationPropertiespublic class Person { ...}2. @ImportResource导入Spring配置文件,让文件内容生效Spring Boot里面没有Spr...
2019-08-29 04:42:10 131
原创 Spring Boot yml配置文件
Spring Boot 使用一个全局配置文件,配置文件名是固定的:application.propertiesapplication.ymlYAML(YAML Ain’t Markup Language)server: port: 80821. YAML语法1.1 基本语法k:(空格)v 表示键值对以空格的缩进...
2019-08-29 04:33:09 114
原创 快速创建Spring Boot应用
1. 使用Spring Initializer快速创建Spring Boot项目idea -> New Project -> Spring Initializer -> … ->选择模块 -> 联网创建@ResponseBody 加在类上,表示这个类的所有方法返回的数据直接写给浏览器(对象转为json数据)@RestController = @Controlle...
2019-08-29 03:43:41 174
原创 Spring Boot 入口
Spring Boot 提供了 spring-boot-start-web 为web开发予以支持,spring-boot-start-web 为我们提供了嵌入的Tomcat以及SpringMVC的依赖。
2019-08-29 03:30:12 105
原创 Mybatis-Spring整合
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.0</version></dependency>
2019-08-28 16:22:37 226
原创 Mybatis 缓存机制
默认情况下,只有一级缓存开启(sqlSession级别的缓存,也称为本地缓存)二级缓存需要手动开启和配置,是基于namespace级别的缓存(也成为全局缓存)Mybatis定义了缓存接口Cache,可以通过实现Cache接口自定义二级缓存1. 一级缓存与数据库同一次会话间查到的数据会放在本地缓存中以后如果需要获取相同的数据,直接从缓存中拿,没必要再去查数据库//测试...Emp...
2019-08-28 06:27:41 98
原创 Mybatis 动态sql
1. <if>public List<Employee> getEmpsByConditionIf();<select id="getEmpsByConditionIf" resultType="...Employee"> select * from employee where 1=1 <!--test 判断表达式 OGNL--> ...
2019-08-28 05:03:02 78
原创 Mybatis 查询结果集
1. 返回resultType1.1 如果返回的是一个集合,要写集合中元素的类型<!-- lastName=%e% --><select id="getEmpsByLastNameLike" resultType="xxx.Employee"> select * from employee where last_anme like #{lastName}</...
2019-08-28 02:57:54 1061
原创 Mybatis 参数处理
1. 参数处理1.1 参数单个参数: #{name}多个参数:mybatis多个参数会被封装成mapkey:param1, param2, …value:传入的参数值public void getEmployeeByIdAndLastName(Integer id, String lastName);<select id="getEmployeeByIdAndLastN...
2019-08-28 02:56:42 220
原创 Mybatis 返回自增主键值
1.mysqlmysql支持自增主键,自增主键值的获取,mybatis也是利用statement.getGenreatedKeys()useGeneratedKeys="true 使用自增主键获取主键值策略keyProperty 获取到主键值封装给java bean哪个属性<insert id="firstInsert" parameterType="xxx.xxx.xxx.Empl...
2019-08-28 02:56:03 149
原创 Mybatis 全局配置文件
1 全局配置文件在编译器内配置xml约束文件标签是有顺序的1.1 properties标签引入外部properties配置文件<properties resource=""> 引用类路径下的资源<properties url=""> 引入网络路径或磁盘路径1.2 settings标签影响mybatis运行的设置项<setting name="...
2019-08-28 02:55:13 99
原创 Mybatis 无Spring基本配置
1 基本配置查看官网1.1 全局配置文件 mybatis-config.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-con...
2019-08-28 02:54:08 251
原创 SpringMVC 拦截器
实现HandlerInterceptor接口<mvc:interceptors> <bean class="..." /></mvc:interceptors>boolean preHandler(HttpServletRequest request, HttpServletResponse response, Object obj)是否要拦截当前...
2019-08-19 19:08:50 59
原创 Servlet 监听器
优先级:监听器 > 过滤器 > Servlet1. 监听器的分类按监听对象划分:用于监听应用程序环境对象(ServletContext)的事件监听器用于监听用户会话对象(HttpSession)的事件监听器用于监听请求消息对象(ServletRequest)的时间监听器按监听的事件划分:监听域对象自身的创建和销毁的事件监听器监听域对象中的属性的增加和删除的事件监听...
2019-08-19 18:25:51 99
原创 Java Jsp
1. Jsp指令page指令:通常位于jsp页面顶端,同一个页面可以有多个page指令include指令:经一个外部文件嵌入到当前Jsp文件中,同时解析这个页面中的jsp语句taglib指令:使用标签库定义新的自定义标签,在jsp页面中启用定制行为<%@ page 属性1="" 属性2="" ...%>//language= 指定jsp页面使用的脚本语言 默认值 java/...
2019-08-19 17:40:20 71
原创 Spring JDBC
1. 使用数据库连接池dbcp<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"p:driverClassName="com.mysql.jdbc.Driver"p:url="jdbc:mysql://127.0.0.1:3306/dbName"p:username="root"p:passw...
2019-08-19 15:20:12 108
原创 Java 线程组
线程组的作用是可以批量的管理线程或线程组对象,有效的对线程或线程组对象进行组织。//一级关联Thread a = new Thread(){...};Thread b = new Thread(){...};ThreadGroup group = new ThreadGroup("my group");Thread t1 = new Thread(group, a);Thread t2...
2019-08-18 06:03:28 99
原创 Java Lock的使用
1. ReentrantLock 类调用ReentrantLock对象的lock()方法获取锁,调用unlock()方法释放锁class MyService{ private Lock lock = new ReentrantLock(); public void testMethod() { lock.lock(); for (int i =...
2019-08-18 05:31:37 3822
原创 Java 线程间通信
1. 等待/通知机制不使用等待/通知机制也可以实现线程间通信,那就需要线程去访问同一个变量,但会浪费资源。1.1 wait() 方法作用是使当前线程进行等待在调用wait()方法之前,线程必须获得该对象的对象级别锁,即只能在同步方法或同步块中调用wait()方法如果在调用wait()的时候没有持有适当锁,则抛出IllegalMonitorStateException异常在执行wait...
2019-08-18 03:46:56 65
原创 Java synchronized基础用法
1. 关键字synchronized取得的锁都是对象锁,而不是把一段代码或方法当作锁。2. 关键字synchronized拥有锁重入的功能在使用synchronized时,当一个线程得到一个对象锁后,再次请求此对象锁时是可以再次得到该对象的锁的在一个synchronized方法/块内部调用本类的其他synchronized方法/块时,是永远可以得到锁的public class Servic...
2019-08-10 00:07:14 125
原创 Java 线程基础方法
currentThread()方法返回代码正在被哪个线程调用的信息测试1public MyThread extends Thread { public MyThread() { Thread.currentThread().getName(); } @Override public void run() { Thread.currentThread().getName(); ...
2019-08-09 18:24:20 159
原创 Spring MVC 跨重定向向请求传递数据
对于重定向来说,模型并不能用来传递数据,可以用其他方法:使用URL模板以路径变量(和查询参数)的形式传递数据使用flash属性发送数据1. 使用URL模板进行重定向@RequestMapping(value = "/register", method = RequestMethod.POST) public String register(@RequestPart("imag...
2019-08-08 18:49:18 227
原创 Spring MVC 处理异常
Spring提供了多种方式将异常转换为响应特定的Spring异常将会自动映射为指定的HTTP状态码异常上可以添加@ResponseStatus注解,从而将其映射为某一个HTTP状态码在方法上可以添加@ExceptionHandler注解,使其用来处理异常1. 将异常映射为HTTP状态码@ResponseStatus(value = HttpStatus.NOT_FOUND, rea...
2019-08-08 18:24:40 119
原创 Spring MVC 处理 multipart 形式的数据
multipart格式的数据会将一个表单拆分成为多个部分,每个部分对应一个输入域1. 配置multipart解析器Spring中通过MultipartResolver接口的实现类来解析multipart请求中的内容,从Spring3.1开始,Spring内置了两个它的实现类:CommonsMultipartResolver:使用Jakarta Comomons FileUpload 解析m...
2019-08-08 17:11:28 239
原创 Spring MVC 基础配置
1. Spring MVC 除扩展AbstractAnnotationConfigDispatcherServletInitializer以外的配置方法1.1 自定义DispatcherServlet配置通过扩展AbstractAnnotationConfigDispatcherServletInitializer,除必须要重载的getServletMappings()、getServlet...
2019-08-08 02:15:02 132
原创 使用Thymeleaf
为了要在Spring中使用Thymeleaf,我们需要配置三个启用Thymeleaf与Spring集成的bean:ThymeleafViewResolver:将逻辑视图名称解析为Thymeleaf模板视图SpringTemplateEngine:处理模板并渲染结果TemplateResolver:加载Themeleaf模板...
2019-08-08 01:03:32 163
原创 Java WebSocket 基础 消息通信
为了发送WebSocket消息,无论注解式端点还是编程式端点,其API都是相同的:RemoteEndpoint和它的子类(RemoteEndpoint.Basic和RemoteEndpoint.Async)提供了发送消息的所有方法。Ping和Pong消息通常被开发人员用来检查WebSocket底层连接的健康性。从Session对象获得的RemoteEndpoint实例提供方法:public ...
2019-08-07 20:36:41 3147 1
原创 渲染 Web 视图
@Bean public ViewResolver viewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/WEB-INF/jsp/"); viewRes...
2019-08-07 12:57:13 474
原创 构建 Spring Web 应用程序
搭建Spring MVC配置DispatcherServletJava 配置public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasse...
2019-08-07 11:14:16 115
原创 Spring Boot 基础配置方法
pom.xml<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version>...
2019-08-07 03:18:18 154
原创 Java WebSocket 基础 生命周期
与基于HTTP的技术不同,WebSocket具有生命周期,此生命周期由WebSocket协议进行支撑。例如:在Servlet技术中,底层协议仅仅定义了简单的请求/响应交互,此交互完全独立于下一次交互。相反,WebSocket协议定义了客户端和服务器间长时间存活的专用TCP连接。WebSocket协议定义了WebSocket连接上往返传输的数据的各个块的格式。一旦连接建立,这些传输的元数据帧描述...
2019-08-07 00:54:38 748
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人