常用的复制代码
分类: Java vue 专栏: 复制代码块 标签: 代码复制
2023-03-26 16:31:42 1781浏览
代码复制
springboot数据库连接配置
spring.datasource.url=jdbc:mysql:///assay?characterEncoding=utf8&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=123456
spring:
datasource:
password: 123456
url: jdbc:mysql:///assay?characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: root统一返回结果
@Data
@AllArgsConstructor
public class ResultVo<T> {
private Integer code;
private String mess;
private T data;
//success
public static<T> ResultVo success(String mess,T data){
return new ResultVo(200,mess,data);
}
//error
public static<T> ResultVo error(String mess){
return new ResultVo(500,mess,null);
}
}
//统一返回结果的类
@Data
public class R {
//是否成功
private Boolean success;
//返回码
private Integer code;
//返回消息
private String message;
// 返回数据
private Map<String, Object> data = new HashMap<String, Object>();
//把构造方法私有
private R() {}
//成功静态方法
public static R ok() {
R r = new R();
r.setSuccess(true);
r.setCode(ResultCode.SUCCESS);
r.setMessage("成功");
return r;
}
//失败静态方法
public static R error() {
R r = new R();
r.setSuccess(false);
r.setCode(ResultCode.ERROR);
r.setMessage("失败");
return r;
}
public R success(Boolean success){
this.setSuccess(success);
return this;
}
public R message(String message){
this.setMessage(message);
return this;
}
public R code(Integer code){
this.setCode(code);
return this;
}
public R data(String key, Object value){
this.data.put(key, value);
return this;
}
public R data(Map<String, Object> map){
this.setData(map);
return this;
}
}
自动填充创建时间和修改时间
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
//属性名称,不是字段名称
this.setFieldValByName("gmtCreate", new Date(), metaObject);
this.setFieldValByName("gmtModified", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("gmtModified", new Date(), metaObject);
}
} @ApiModelProperty(value = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Date gmtCreate;
@ApiModelProperty(value = "更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date gmtModified;统一异常处理
全局异常处理
@ControllerAdvice
public class GlobalExceptionHandler {
//指定出现什么异常执行这个方法
@ExceptionHandler(Exception.class)
@ResponseBody //为了返回数据
public R error(Exception e) {
e.printStackTrace();
return R.error().message("执行了全局异常处理..");
}
}特定异常处理
@ControllerAdvice
public class GlobalExceptionHandler {
//指定出现什么异常执行这个方法
@ExceptionHandler(ArithmeticException.class)
@ResponseBody //为了返回数据
public R error(ArithmeticException e) {
e.printStackTrace();
return R.error().message("执行了算术异常处理..");
}
}自定义异常处理
- 第一步创建自定义异常类继承RuntimeException写异常属性
@Data
@AllArgsConstructor
@NoArgsConstructor
public class JfException extends RuntimeException {
private Integer code;//状态码
private String msg;//异常信息
}
- 在统一异常类里添加规则
@ControllerAdvice
public class GlobalExceptionHandler {
//自定义异常
@ExceptionHandler(JfException.class)
@ResponseBody //为了返回数据
public R error(JfException e) {
e.printStackTrace();
return R.error().code(e.getCode()).message(e.getMsg());
}
}- 执行自定义异常

数据库配置属性文件
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql:///assay?characterEncoding=utf8&serverTimezone=Asia/Shanghai jdbc.username=root jdbc.password=123456
<bean class="org.apache.commons.dbcp.BasicDataSource" id="dataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>pom文件
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
<!--数据库连接池-->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!--aop扩展-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.13</version>
</dependency>正则表达式
// 手机号
reg =/^[1][3,4,5,7,8][0-9]{9}$/;
// 身份证号码
reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
// 邮箱
reg =/^([a-zA-Z0-9]+[-_\.]?)+@[a-zA-Z0-9]+\.[a-z]+$/;
// 日期带时分秒的 2022/03/30格式的
let reg = /[1-9]\d{3}\/(((0[13578]|1[02])\/(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)\/(0[1-9]|[12][0-9]|30))|(02\/(0[1-9]|[1][0-9]|2[0-9]))) ([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]/;
//日期,格式2022-03-04
reg=/^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/;json消息转换器
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=utf-8</value>
<value>text/html;charset=utf-8</value>
</list>
</property>
</bean>
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=utf-8</value>
<value>text/html;charset=utf-8</value>
</list>
</property>
<property name="defaultCharset" value="utf-8"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>easycode插件生成的代码分页问题
<!--为了使用Pageable分页-->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>1.13.11.RELEASE</version>
</dependency>跨域问题
- 服务端解决
@RestController
@CrossOrigin//解决跨域
public class BrandController {
module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
BACK_API: '"http://localhost:8888"'
})
back_url:process.env.BACK_API,
axios({
method:"post",
data:that.searchForm,
url:that.back_url+"/getAllBrands"
}).then(function (result) {
- 前端解决
proxyTable: {
'/':{
target: 'http://localhost:8888',url:"/getAllBrands"
linux常用命令
- 防火墙:
1. 查看防火墙开启放行的端口 firewall-cmd --list-all 2. 开启防火墙: systemctl start firewalld 3. 设置开放的端口号: sudo firewall-cmd --add-port=80/tcp --permanent 4. 重启防火墙: firewall-cmd --reload
非spring容器的类要用springioc中的bean
//非springIoc容器的类里要用ioc容器的东西
private static final S3Client s3Client = SpringUtils.getBean(S3Client.class);
public class SpringUtils implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
context = applicationContext;
}
public static <T> T getBean(Class<T> beanClass) {
return context.getBean(beanClass);
}
public static Object getBean(String beanName) {
return context.getBean(beanName);
}
}jwt工具类
public class JwtUtils {
/**
* 生成token字符串 xxx.yyy.zzzz
* @param username
* @return
*/
public static String getToken(String username,String role){
return Jwts.builder().setHeaderParam("typ", "JWT")
//过期时间 一个小时后此token就失效了
.setExpiration(new Date(System.currentTimeMillis()+3600000))
.setSubject(username)
// 添加角色权限信息
.claim("role", role)
.signWith(SignatureAlgorithm.HS256, "jf3q-jwt").compact();
}
public static String getUserName(String token){
String username = null;
try {
username = Jwts.parser().setSigningKey("jf3q-jwt").parseClaimsJws(token).getBody().getSubject();
} catch (ExpiredJwtException e) {
throw new RuntimeException("token已经过期");
} catch (UnsupportedJwtException e) {
throw new RuntimeException("不支持的token");
} catch (MalformedJwtException e) {
throw new RuntimeException("token令牌格式不对");
} catch (SignatureException e) {
throw new RuntimeException("token签名问题");
} catch (IllegalArgumentException e) {
throw new RuntimeException("参数不合法-密钥不对");
}
return username;
}
//获取角色
public static String getRole(String token){
Claims claims = Jwts.parser().setSigningKey("jf3q-jwt").parseClaimsJws(token).getBody();
String role = claims.get("role", String.class);
return role;
}
}jwt依赖
<!--JWT 依赖-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>
好博客就要一起分享哦!分享海报
此处可发布评论
评论(2)展开评论
他的专栏
他感兴趣的技术


新业务
springboot学习
ssm框架课
vue学习
【带小白】java基础速成