多文件上传
public int save(Role role, @RequestParam("nfile") MultipartFile nfile, HttpServletRequest request) {
System.out.println(nfile.getOriginalFilename());
String path = request.getSession().getServletContext().getRealPath("/upload");
File file = new File(path);
if (!file.exists()) {
file.mkdir();
}
String filename = System.currentTimeMillis() + nfile.getOriginalFilename();
try {
nfile.transferTo(new File(file, filename));
} catch (IOException e) {
e.printStackTrace();
}
return roleService.save(role);
}
分页
package com.zb.util;
import java.util.List;
public class PageUtil<T> {
/*当前页*/
private Integer currentPage = 1;
/*每页的条数*/
private Integer pageSize = 2;
//总记录数
private Integer totalCount;
//总页数
private Integer totalPageCount;
// 分页数据
private List<T> data;
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getTotalCount() {
return totalCount;
}
public void setTotalCount(Integer totalCount) {
this.totalCount = totalCount;
}
public Integer getTotalPageCount() {
totalPageCount = totalCount % pageSize == 0
? totalCount / pageSize : totalCount / pageSize + 1;
return totalPageCount;
}
public void setTotalPageCount(Integer totalPageCount) {
this.totalPageCount = totalPageCount;
}
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
}
}
跨域配置
package com.zb.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
// 1. 创建CORS配置对象
CorsConfiguration config = new CorsConfiguration();
// 允许的源(生产环境建议指定具体域名,而非*)
config.addAllowedOriginPattern("*");
// 允许携带凭证(cookie等)
config.setAllowCredentials(true);
// 允许的HTTP方法
config.addAllowedMethod("*");
// 允许的请求头
config.addAllowedHeader("*");
// 暴露的响应头(前端可以获取的额外响应头)
config.addExposedHeader("token");
// 预检请求的缓存时间(秒)
config.setMaxAge(3600L);
// 2. 创建URL匹配源
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
// 对所有路径应用CORS配置
source.registerCorsConfiguration("/**", config);
// 3. 创建并返回CORS过滤器
return new CorsFilter(source);
}
}
数据库连接
url: jdbc:mysql://127.0.0.1:3306/《数据库》?useUnicode=true&autoReconnect=true&autoReconnectForPools=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
Redis使用FastJson序列化配置
package com.zb.config;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.type.TypeFactory;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException;
import java.nio.charset.Charset;
/**
* Redis使用FastJson序列化
*
* @author sg
*/
public class FastJsonRedisSerializer<T> implements RedisSerializer<T> {
public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
private Class<T> clazz;
static {
ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
}
public FastJsonRedisSerializer(Class<T> clazz) {
super();
this.clazz = clazz;
}
@Override
public byte[] serialize(T t) throws SerializationException {
if (t == null) {
return new byte[0];
}
return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET);
}
@Override
public T deserialize(byte[] bytes) throws SerializationException {
if (bytes == null || bytes.length <= 0) {
return null;
}
String str = new String(bytes, DEFAULT_CHARSET);
return JSON.parseObject(str, clazz);
}
protected JavaType getJavaType(Class<?> clazz) {
return TypeFactory.defaultInstance().constructType(clazz);
}
}
Redis配置
package com.zb.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;
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
FastJsonRedisSerializer serializer = new FastJsonRedisSerializer(Object.class);
// 使用StringRedisSerializer来序列化和反序列化redis的key值
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(serializer);
// Hash的key也采用StringRedisSerializer的序列化方式
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(serializer);
template.afterPropertiesSet();
return template;
}
}