|
|
|
@ -1,21 +1,19 @@ |
|
|
|
|
package com.gitee.sop.gateway.controller; |
|
|
|
|
|
|
|
|
|
import com.gitee.sop.gatewaycommon.bean.SopConstants; |
|
|
|
|
import com.gitee.sop.gatewaycommon.zuul.ValidateService; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
|
|
|
|
|
|
import javax.servlet.ServletException; |
|
|
|
|
import javax.servlet.annotation.WebServlet; |
|
|
|
|
import javax.servlet.http.HttpServlet; |
|
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
|
import java.io.IOException; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 传统web开发入口 |
|
|
|
|
* @author tanghc |
|
|
|
|
*/ |
|
|
|
|
@Slf4j |
|
|
|
|
@WebServlet(urlPatterns = "/rest/*") |
|
|
|
|
public class RestServlet extends HttpServlet { |
|
|
|
|
|
|
|
|
@ -27,34 +25,21 @@ public class RestServlet extends HttpServlet { |
|
|
|
|
@Value("${sop.restful.path:/rest}") |
|
|
|
|
private String restPath; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private ValidateService validateService; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 验证回调,可自定义实现接口 |
|
|
|
|
*/ |
|
|
|
|
private ValidateService.ValidateCallback callback = (currentContext -> { |
|
|
|
|
try { |
|
|
|
|
currentContext.getRequest().getRequestDispatcher(path).forward(currentContext.getRequest(), currentContext.getResponse()); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("请求转发异常", e); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
protected void doGet(HttpServletRequest request, HttpServletResponse response) { |
|
|
|
|
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { |
|
|
|
|
doPost(request, response); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) { |
|
|
|
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { |
|
|
|
|
String url = request.getRequestURL().toString(); |
|
|
|
|
int index = url.indexOf(restPath); |
|
|
|
|
// 取/rest的后面部分
|
|
|
|
|
String path = url.substring(index + restPath.length()); |
|
|
|
|
request.setAttribute(SopConstants.REDIRECT_METHOD_KEY, path); |
|
|
|
|
request.setAttribute(SopConstants.REDIRECT_VERSION_KEY, EMPTY_VERSION); |
|
|
|
|
validateService.validate(request, response, callback); |
|
|
|
|
request.setAttribute(SopConstants.SOP_NOT_MERGE, true); |
|
|
|
|
request.getRequestDispatcher(this.path).forward(request, response); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |