添加404处理示例

This commit is contained in:
click33 2021-10-02 02:39:37 +08:00
parent e5f751d004
commit 22141193d4
4 changed files with 47 additions and 58 deletions

View File

@ -1,4 +1,4 @@
package com.pj.test;
package com.pj.current;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

View File

@ -0,0 +1,34 @@
package com.pj.current;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.dev33.satoken.util.SaResult;
/**
* 处理 404
* @author kong
*/
@RestController
public class NotFoundHandle implements ErrorController {
@Override
public String getErrorPath() {
return "/error";
}
@RequestMapping("/error")
public Object error(HttpServletRequest request, HttpServletResponse response) throws IOException {
// response.sendError(200);
System.out.println("--------------------大闸蟹");
response.setStatus(200);
return SaResult.get(404, "not found", null);
}
}

View File

@ -2,42 +2,4 @@
server:
port: 8081
# sa-token配置
sa-token:
# token名称 (同时也是cookie名称)
token-name: satoken
# token有效期单位s 默认30天, -1代表永不过期
timeout: 2592000
# token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
activity-timeout: -1
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
is-concurrent: true
# 在多人登录同一账号时是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
is-share: true
# token风格
token-style: uuid
spring:
# redis配置
redis:
# Redis数据库索引默认为0
database: 0
# Redis服务器地址
host: 127.0.0.1
# Redis服务器连接端口
port: 6379
# Redis服务器连接密码默认为空
password:
# 连接超时时间(毫秒)
timeout: 10000ms
lettuce:
pool:
# 连接池最大连接数
max-active: 200
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 连接池中的最大空闲连接
max-idle: 10
# 连接池中的最小空闲连接
min-idle: 0

View File

@ -19,9 +19,9 @@ import cn.dev33.satoken.stp.StpUtil;
public class SaRouteInterceptor implements HandlerInterceptor {
/**
* 每次进入拦截器的[执行函数]
* 每次进入拦截器的[执行函数]默认为登录校验
*/
public SaRouteFunction function;
public SaRouteFunction function = (req, res, handler) -> StpUtil.checkLogin();
/**
* 创建一个路由拦截器
@ -56,28 +56,21 @@ public class SaRouteInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// 如果未提供function默认进行登录验证
if(function == null) {
StpUtil.checkLogin();
} else {
// 否则执行认证函数
try {
function.run(new SaRequestForServlet(request), new SaResponseForServlet(response), handler);
} catch (StopMatchException e) {
// 停止匹配进入Controller
} catch (BackResultException e) {
// 停止匹配向前端输出结果
if(response.getContentType() == null) {
response.setContentType("text/plain; charset=utf-8");
}
response.getWriter().print(e.getMessage());
return false;
try {
function.run(new SaRequestForServlet(request), new SaResponseForServlet(response), handler);
} catch (StopMatchException e) {
// 停止匹配进入Controller
} catch (BackResultException e) {
// 停止匹配向前端输出结果
if(response.getContentType() == null) {
response.setContentType("text/plain; charset=utf-8");
}
response.getWriter().print(e.getMessage());
return false;
}
// 通过验证
return true;
}
}