springboot用法和与各种框架、组件等结合使用,包括springboot的注解分析、路径分析、取得内置对象、项目打包、配置环境属性、读取资源文件、Bean配置、模板渲染、基于yml的多profile配置、基于properties的多profile、添加数据验证、配置错误页、全局异常处理、配置Tomcat运行、配置https访问路径、信息显示、内置对象、显示对象信息、文件上传、使用文件服务器、拦截器、配置druid数据库连接池、整合MyBatis框架、事务控制、Druid监控、整合ActiveMQ、整合RabbitMQ、整合kafka、邮件发送、定时调度、Actuator监控、整合Redis数据库、整合Restfui框架、整合Shiro
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry including="**/*.java" kind="src" output="target/classes" path="src/main/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/view">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
||||
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>microboot-redis</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.wst.common.project.facet.core.builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.springframework.ide.eclipse.core.springbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.springframework.ide.eclipse.core.springnature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
@@ -0,0 +1,6 @@
|
||||
eclipse.preferences.version=1
|
||||
encoding//src/main/java=UTF-8
|
||||
encoding//src/main/resources=UTF-8
|
||||
encoding//src/main/view=UTF-8
|
||||
encoding//src/test/java=UTF-8
|
||||
encoding/<project>=UTF-8
|
||||
@@ -0,0 +1,5 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||
org.eclipse.jdt.core.compiler.source=1.8
|
||||
@@ -0,0 +1,4 @@
|
||||
activeProfiles=
|
||||
eclipse.preferences.version=1
|
||||
resolveWorkspaceProjects=true
|
||||
version=1
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<faceted-project>
|
||||
<installed facet="cloudfoundry.standalone.app" version="1.0"/>
|
||||
</faceted-project>
|
||||
@@ -0,0 +1,73 @@
|
||||
<?xml version="1.0"?>
|
||||
<project
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>cn.mldn</groupId>
|
||||
<artifactId>microboot</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>microboot-redis</artifactId>
|
||||
<name>microboot-redis</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-mail</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.kafka</groupId>
|
||||
<artifactId>spring-kafka</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-jetty</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>springloaded</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-devtools</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -0,0 +1,15 @@
|
||||
package cn.mldn.microboot;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication // 启动SpringBoot程序,而后自带子包扫描
|
||||
public class StartSpringBootMain {
|
||||
static {
|
||||
System.setProperty("java.security.auth.login.config",
|
||||
"d:/kafka_client_jaas.conf"); // 表示系统环境属性
|
||||
}
|
||||
public static void main(String[] args) throws Exception {
|
||||
SpringApplication.run(StartSpringBootMain.class, args);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package cn.mldn.microboot.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||
|
||||
import cn.mldn.microboot.util.redis.RedisObjectSerializer;
|
||||
|
||||
@Configuration
|
||||
public class RedisConfig {
|
||||
@Bean
|
||||
public RedisTemplate<String, Object> getRedisTemplate(
|
||||
RedisConnectionFactory factory) {
|
||||
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
|
||||
redisTemplate.setConnectionFactory(factory);
|
||||
redisTemplate.setKeySerializer(new StringRedisSerializer()); // key的序列化类型
|
||||
redisTemplate.setValueSerializer(new RedisObjectSerializer()); // value的序列化类型
|
||||
return redisTemplate;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package cn.mldn.microboot.config;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||
|
||||
import cn.mldn.microboot.util.redis.RedisObjectSerializer;
|
||||
import redis.clients.jedis.JedisPoolConfig;
|
||||
|
||||
@Configuration
|
||||
public class RedisTwoConfig {
|
||||
public RedisConnectionFactory getRedisConnectionFactory(String hostName,
|
||||
String password, int port, int maxActive, int maxIdle, int minIdle,
|
||||
long maxWait, int database) { // 是负责建立Factory的连接工厂类
|
||||
JedisConnectionFactory jedisFactory = new JedisConnectionFactory();
|
||||
jedisFactory.setHostName(hostName);
|
||||
jedisFactory.setPort(port);
|
||||
jedisFactory.setPassword(password);
|
||||
jedisFactory.setDatabase(database);
|
||||
JedisPoolConfig poolConfig = new JedisPoolConfig(); // 进行连接池配置
|
||||
poolConfig.setMaxTotal(maxActive);
|
||||
poolConfig.setMaxIdle(maxIdle);
|
||||
poolConfig.setMinIdle(minIdle);
|
||||
poolConfig.setMaxWaitMillis(maxWait);
|
||||
jedisFactory.setPoolConfig(poolConfig);
|
||||
jedisFactory.afterPropertiesSet(); // 初始化连接池配置
|
||||
return jedisFactory;
|
||||
}
|
||||
@Bean("redisTwo")
|
||||
public RedisTemplate<String, Object> getRedisTemplate(
|
||||
@Value("${spring.redis-two.host}") String hostName,
|
||||
@Value("${spring.redis-two.password}") String password,
|
||||
@Value("${spring.redis-two.port}") int port,
|
||||
@Value("${spring.redis-two.database}") int database,
|
||||
@Value("${spring.redis-two.pool.max-active}") int maxActive,
|
||||
@Value("${spring.redis-two.pool.max-idle}") int maxIdle,
|
||||
@Value("${spring.redis-two.pool.min-idle}") int minIdle,
|
||||
@Value("${spring.redis-two.pool.max-wait}") long maxWait) {
|
||||
|
||||
RedisConnectionFactory factory = this.getRedisConnectionFactory(
|
||||
hostName, password, port, maxActive, maxIdle, minIdle, maxWait,
|
||||
database); // 建立Redis的连接
|
||||
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
|
||||
redisTemplate.setConnectionFactory(factory);
|
||||
redisTemplate.setKeySerializer(new StringRedisSerializer()); // key的序列化类型
|
||||
redisTemplate.setValueSerializer(new RedisObjectSerializer()); // value的序列化类型
|
||||
return redisTemplate;
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package cn.mldn.microboot.util.controller;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.context.MessageSource;
|
||||
|
||||
public abstract class AbstractBaseController {
|
||||
@Resource
|
||||
private MessageSource messageSource; // 自动注入此资源对象
|
||||
public String getMessage(String key, String... args) {
|
||||
return this.messageSource.getMessage(key, args, Locale.getDefault());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package cn.mldn.microboot.util.redis;
|
||||
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.core.serializer.support.DeserializingConverter;
|
||||
import org.springframework.core.serializer.support.SerializingConverter;
|
||||
import org.springframework.data.redis.serializer.RedisSerializer;
|
||||
import org.springframework.data.redis.serializer.SerializationException;
|
||||
// 此时定义的序列化操作表示可以序列化所有类的对象,当然,这个对象所在的类一定要实现序列化接口
|
||||
public class RedisObjectSerializer implements RedisSerializer<Object> {
|
||||
// 为了方便进行对象与字节数组的转换,所以应该首先准备出两个转换器
|
||||
private Converter<Object, byte[]> serializingConverter = new SerializingConverter();
|
||||
private Converter<byte[], Object> deserializingConverter = new DeserializingConverter();
|
||||
private static final byte[] EMPTY_BYTE_ARRAY = new byte[0]; // 做一个空数组,不是null
|
||||
@Override
|
||||
public byte[] serialize(Object obj) throws SerializationException {
|
||||
if (obj == null) { // 这个时候没有要序列化的对象出现,所以返回的字节数组应该就是一个空数组
|
||||
return EMPTY_BYTE_ARRAY ;
|
||||
}
|
||||
return this.serializingConverter.convert(obj); // 将对象变为字节数组
|
||||
}
|
||||
@Override
|
||||
public Object deserialize(byte[] data) throws SerializationException {
|
||||
if (data == null || data.length == 0) { // 此时没有对象的内容信息
|
||||
return null ;
|
||||
}
|
||||
return this.deserializingConverter.convert(data);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package cn.mldn.microboot.vo;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class Dept implements Serializable {
|
||||
private Long deptno ;
|
||||
private String dname ;
|
||||
public Long getDeptno() {
|
||||
return deptno;
|
||||
}
|
||||
public void setDeptno(Long deptno) {
|
||||
this.deptno = deptno;
|
||||
}
|
||||
public String getDname() {
|
||||
return dname;
|
||||
}
|
||||
public void setDname(String dname) {
|
||||
this.dname = dname;
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Dept [deptno=" + deptno + ", dname=" + dname + "]";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package cn.mldn.microboot.vo;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class Member implements Serializable {
|
||||
private String mid;
|
||||
private Integer age;
|
||||
public String getMid() {
|
||||
return mid;
|
||||
}
|
||||
public void setMid(String mid) {
|
||||
this.mid = mid;
|
||||
}
|
||||
public Integer getAge() {
|
||||
return age;
|
||||
}
|
||||
public void setAge(Integer age) {
|
||||
this.age = age;
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Member [mid=" + mid + ", age=" + age + "]";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
DROP DATBASE IF EXISTS mldn ;
|
||||
CREATE DATBASE mldn CHARACTER SET UTF8 ;
|
||||
USE mldn ;
|
||||
CREATE TABLE dept (
|
||||
deptno BIGINT AUTO_INCREMENT ,
|
||||
dname VARCHAR(50) ,
|
||||
CONSTRAINT pk_deptno PRIMARY KEY(deptno)
|
||||
) ;
|
||||
INSERT INTO dept(dname) VALUES ('开发部') ;
|
||||
INSERT INTO dept(dname) VALUES ('财务部') ;
|
||||
INSERT INTO dept(dname) VALUES ('市场部') ;
|
||||
INSERT INTO dept(dname) VALUES ('后勤部') ;
|
||||
INSERT INTO dept(dname) VALUES ('公关部') ;
|
||||
@@ -0,0 +1,23 @@
|
||||
spring:
|
||||
redis:
|
||||
host: 192.168.68.166
|
||||
port: 6379
|
||||
password: mldnjava
|
||||
timeout: 1000
|
||||
database: 0
|
||||
pool:
|
||||
max-active: 10
|
||||
max-idle: 8
|
||||
min-idle: 2
|
||||
max-wait: 100
|
||||
redis-two:
|
||||
host: 192.168.68.166
|
||||
port: 6380
|
||||
password: mldnjava
|
||||
timeout: 1000
|
||||
database: 0
|
||||
pool:
|
||||
max-active: 10
|
||||
max-idle: 8
|
||||
min-idle: 2
|
||||
max-wait: 100
|
||||
@@ -0,0 +1,2 @@
|
||||
welcome.url=www.mldn.cn
|
||||
welcome.msg=\u6b22\u8fce{0}\u5149\u4e34\uff01
|
||||
@@ -0,0 +1,2 @@
|
||||
member.add.page=/pages/back/admin/member/member_add.jsp
|
||||
member.add.action=/pages/back/admin/member/member_add.action
|
||||
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<configuration scan="true">
|
||||
<property name="APP" value="${project.artifactId}" />
|
||||
<property name="LOG_HOME" value="/data/www/log/${APP}" />
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
<appender name="DETAIL"
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender" additivity="false">
|
||||
<File>${LOG_HOME}/${APP}_detail.log</File>
|
||||
<encoder>
|
||||
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
|
||||
</encoder>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_HOME}/${APP}_detail.log.%d{yyyyMMdd}</fileNamePattern>
|
||||
</rollingPolicy>
|
||||
</appender>
|
||||
<appender name="ACCESS"
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender" additivity="false">
|
||||
<File>${LOG_HOME}/${APP}_access.log</File>
|
||||
<encoder>
|
||||
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS};%X{ServiceId};%m%n</pattern>
|
||||
</encoder>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_HOME}/${APP}_access.log.%d{yyyyMMdd}</fileNamePattern>
|
||||
</rollingPolicy>
|
||||
</appender>
|
||||
|
||||
|
||||
<logger name="ACCESS">
|
||||
<appender-ref ref="ACCESS" />
|
||||
</logger>
|
||||
<logger name="druid.sql.Statement" level="DEBUG" />
|
||||
<logger name="cn.mldn.microboot.dao" level="TRACE" />
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="DETAIL" />
|
||||
<appender-ref ref="CONSOLE" />
|
||||
</root>
|
||||
</configuration>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="cn.mldn.microboot.dao.IDeptDAO">
|
||||
<select id="findAll" resultType="Dept">
|
||||
SELECT deptno,dname FROM dept ;
|
||||
</select>
|
||||
<insert id="doCreate" parameterType="Dept">
|
||||
INSERT INTO dept(dname) VALUES (#{dname}) ;
|
||||
</insert>
|
||||
</mapper>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE configuration
|
||||
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-config.dtd">
|
||||
<configuration>
|
||||
<!-- 进行Mybatis的相应的环境的属性定义 -->
|
||||
<settings> <!-- 在本项目之中开启二级缓存 -->
|
||||
<setting name="cacheEnabled" value="true"/>
|
||||
</settings>
|
||||
</configuration>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title>SpringBoot模版渲染</title>
|
||||
<script type="text/javascript" th:src="@{js/main.js}"></script>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||
</head>
|
||||
<body>
|
||||
<h1>www.mldn.cn</h1>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,3 @@
|
||||
window.onload = function() {
|
||||
console.log("****** www.mldn.cn ******") ;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title>SpringBoot模版渲染</title>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||
</head>
|
||||
<body>
|
||||
<h1>www.mldn.cn</h1>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title>SpringBoot模版渲染</title>
|
||||
<script type="text/javascript" th:src="@{/js/main.js}"></script>
|
||||
<link rel="icon" type="image/x-icon" href="/images/mldn.ico"/>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||
</head>
|
||||
<body>
|
||||
<form th:action="@{/upload}" method="post" enctype="multipart/form-data">
|
||||
姓名:<input type="text" name="name"/><br/>
|
||||
照片:<input type="file" name="photo"/><br/>
|
||||
照片:<input type="file" name="photo"/><br/>
|
||||
照片:<input type="file" name="photo"/><br/>
|
||||
<input type="submit" value="上传"/>
|
||||
</form>
|
||||
<a th:href="@{/show(groupId='group1',fileId='M00/00/00/wKhEtVlTFc2ANT4kAALWT3AMif079.jpeg')}">查看照片</a>
|
||||
<a th:href="@{/show(groupId='group1',fileId='M00/00/00/wKhEtVlTFc2AUVINAAA9nfksZs0713.png')}">查看照片</a>
|
||||
<a th:href="@{/show(groupId='group1',fileId='M00/00/00/wKhEtVlTFc2AOgxGAC-AAARLh5I67.jpeg')}">查看照片</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title>SpringBoot模版渲染</title>
|
||||
<script type="text/javascript" th:src="@{/js/main.js}"></script>
|
||||
<link rel="icon" type="image/x-icon" href="/images/mldn.ico"/>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||
</head>
|
||||
<body>
|
||||
<img th:src="${image}"/>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,29 @@
|
||||
package cn.mldn.microboot;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.test.context.web.WebAppConfiguration;
|
||||
|
||||
import cn.mldn.microboot.vo.Member;
|
||||
@SpringBootTest(classes = StartSpringBootMain.class)
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@WebAppConfiguration
|
||||
public class TestRedis {
|
||||
@Resource
|
||||
private RedisTemplate<String, Object> redisTemplate;
|
||||
@Test
|
||||
public void testGet() {
|
||||
System.out.println(this.redisTemplate.opsForValue().get("mldn"));
|
||||
}
|
||||
@Test
|
||||
public void testSet() {
|
||||
Member vo = new Member() ;
|
||||
vo.setMid("mldnjava");
|
||||
vo.setAge(19);
|
||||
this.redisTemplate.opsForValue().set("mldn", vo);;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package cn.mldn.microboot;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.test.context.web.WebAppConfiguration;
|
||||
|
||||
import cn.mldn.microboot.vo.Member;
|
||||
@SpringBootTest(classes = StartSpringBootMain.class)
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@WebAppConfiguration
|
||||
public class TestRedisTwo {
|
||||
@Resource(name="redisTwo")
|
||||
private RedisTemplate<String, Object> redisTemplate;
|
||||
@Test
|
||||
public void testGet() {
|
||||
System.out.println(this.redisTemplate.opsForValue().get("mldn"));
|
||||
}
|
||||
@Test
|
||||
public void testSet() {
|
||||
Member vo = new Member() ;
|
||||
vo.setMid("mldnjava");
|
||||
vo.setAge(19);
|
||||
this.redisTemplate.opsForValue().set("mldn", vo);;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
Manifest-Version: 1.0
|
||||
Built-By: foreveriss
|
||||
Build-Jdk: 1.8.0_121
|
||||
Created-By: Maven Integration for Eclipse
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
#Generated by Maven Integration for Eclipse
|
||||
#Thu Jun 29 23:45:10 CST 2017
|
||||
version=0.0.1-SNAPSHOT
|
||||
groupId=cn.mldn
|
||||
m2e.projectName=microboot-redis
|
||||
m2e.projectLocation=/Users/foreveriss/workspace/microboot/microboot-redis
|
||||
artifactId=microboot-redis
|
||||
@@ -0,0 +1,73 @@
|
||||
<?xml version="1.0"?>
|
||||
<project
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>cn.mldn</groupId>
|
||||
<artifactId>microboot</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>microboot-redis</artifactId>
|
||||
<name>microboot-redis</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-mail</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.kafka</groupId>
|
||||
<artifactId>spring-kafka</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-jetty</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>springloaded</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-devtools</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -0,0 +1,23 @@
|
||||
spring:
|
||||
redis:
|
||||
host: 192.168.68.166
|
||||
port: 6379
|
||||
password: mldnjava
|
||||
timeout: 1000
|
||||
database: 0
|
||||
pool:
|
||||
max-active: 10
|
||||
max-idle: 8
|
||||
min-idle: 2
|
||||
max-wait: 100
|
||||
redis-two:
|
||||
host: 192.168.68.166
|
||||
port: 6380
|
||||
password: mldnjava
|
||||
timeout: 1000
|
||||
database: 0
|
||||
pool:
|
||||
max-active: 10
|
||||
max-idle: 8
|
||||
min-idle: 2
|
||||
max-wait: 100
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,2 @@
|
||||
welcome.url=www.mldn.cn
|
||||
welcome.msg=\u6b22\u8fce{0}\u5149\u4e34\uff01
|
||||
@@ -0,0 +1,2 @@
|
||||
member.add.page=/pages/back/admin/member/member_add.jsp
|
||||
member.add.action=/pages/back/admin/member/member_add.action
|
||||
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<configuration scan="true">
|
||||
<property name="APP" value="${project.artifactId}" />
|
||||
<property name="LOG_HOME" value="/data/www/log/${APP}" />
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
<appender name="DETAIL"
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender" additivity="false">
|
||||
<File>${LOG_HOME}/${APP}_detail.log</File>
|
||||
<encoder>
|
||||
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS} [%-16t] %-5p %-22c{0} %X{ServiceId} - %m%n</pattern>
|
||||
</encoder>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_HOME}/${APP}_detail.log.%d{yyyyMMdd}</fileNamePattern>
|
||||
</rollingPolicy>
|
||||
</appender>
|
||||
<appender name="ACCESS"
|
||||
class="ch.qos.logback.core.rolling.RollingFileAppender" additivity="false">
|
||||
<File>${LOG_HOME}/${APP}_access.log</File>
|
||||
<encoder>
|
||||
<pattern>%d{yy-MM-dd.HH:mm:ss.SSS};%X{ServiceId};%m%n</pattern>
|
||||
</encoder>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_HOME}/${APP}_access.log.%d{yyyyMMdd}</fileNamePattern>
|
||||
</rollingPolicy>
|
||||
</appender>
|
||||
|
||||
|
||||
<logger name="ACCESS">
|
||||
<appender-ref ref="ACCESS" />
|
||||
</logger>
|
||||
<logger name="druid.sql.Statement" level="DEBUG" />
|
||||
<logger name="cn.mldn.microboot.dao" level="TRACE" />
|
||||
|
||||
<root level="INFO">
|
||||
<appender-ref ref="DETAIL" />
|
||||
<appender-ref ref="CONSOLE" />
|
||||
</root>
|
||||
</configuration>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="cn.mldn.microboot.dao.IDeptDAO">
|
||||
<select id="findAll" resultType="Dept">
|
||||
SELECT deptno,dname FROM dept ;
|
||||
</select>
|
||||
<insert id="doCreate" parameterType="Dept">
|
||||
INSERT INTO dept(dname) VALUES (#{dname}) ;
|
||||
</insert>
|
||||
</mapper>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE configuration
|
||||
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-config.dtd">
|
||||
<configuration>
|
||||
<!-- 进行Mybatis的相应的环境的属性定义 -->
|
||||
<settings> <!-- 在本项目之中开启二级缓存 -->
|
||||
<setting name="cacheEnabled" value="true"/>
|
||||
</settings>
|
||||
</configuration>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title>SpringBoot模版渲染</title>
|
||||
<script type="text/javascript" th:src="@{js/main.js}"></script>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||
</head>
|
||||
<body>
|
||||
<h1>www.mldn.cn</h1>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,3 @@
|
||||
window.onload = function() {
|
||||
console.log("****** www.mldn.cn ******") ;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title>SpringBoot模版渲染</title>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||
</head>
|
||||
<body>
|
||||
<h1>www.mldn.cn</h1>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title>SpringBoot模版渲染</title>
|
||||
<script type="text/javascript" th:src="@{/js/main.js}"></script>
|
||||
<link rel="icon" type="image/x-icon" href="/images/mldn.ico"/>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||
</head>
|
||||
<body>
|
||||
<form th:action="@{/upload}" method="post" enctype="multipart/form-data">
|
||||
姓名:<input type="text" name="name"/><br/>
|
||||
照片:<input type="file" name="photo"/><br/>
|
||||
照片:<input type="file" name="photo"/><br/>
|
||||
照片:<input type="file" name="photo"/><br/>
|
||||
<input type="submit" value="上传"/>
|
||||
</form>
|
||||
<a th:href="@{/show(groupId='group1',fileId='M00/00/00/wKhEtVlTFc2ANT4kAALWT3AMif079.jpeg')}">查看照片</a>
|
||||
<a th:href="@{/show(groupId='group1',fileId='M00/00/00/wKhEtVlTFc2AUVINAAA9nfksZs0713.png')}">查看照片</a>
|
||||
<a th:href="@{/show(groupId='group1',fileId='M00/00/00/wKhEtVlTFc2AOgxGAC-AAARLh5I67.jpeg')}">查看照片</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,12 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<title>SpringBoot模版渲染</title>
|
||||
<script type="text/javascript" th:src="@{/js/main.js}"></script>
|
||||
<link rel="icon" type="image/x-icon" href="/images/mldn.ico"/>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
|
||||
</head>
|
||||
<body>
|
||||
<img th:src="${image}"/>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user