因为我爱上了Spring生态系统,所以我正在将基于旧servlet的普通应用程序重构为新的SpringBoot。
在此旧版应用程序中,有一些基于https%3A%2F%2Fcdn.sstatic.net%2FSites%2Fstackoverflow%2Fimg%2Ffavicon.ico%3Fv%3D4f32ecc8f43d
的业务逻辑。
(是的,它不是很漂亮,但是我不能更改它,因为它是一个外部库。)
所以我必须处理所有对服务的http请求和响应。
HttpServletRequest.getServletPath()
映射到“ / byservlet / *” ServletRegistrationBean
@Bean
public ServletRegistrationBean<Servlet> servletRegistrationBean(Servlet myServlet) {
return new ServletRegistrationBean<Servlet>(myServlet, "/byservlet/*");
}
包装器映射到“ byrequestmapping / *” 我更喜欢使用整个春季生态系统
RestControler
@RestController
public class USWServiceControler {
private HttpServlet servlet;
public USWServiceControler(Httpservlet) {
this.servlet = servlet;
}
@RequestMapping("byrequestmapping/*"})
public void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
servlet.service(request, response);
}
的值差异收到类似 http://localhost:8080/byservlet/foo 这样的请求
getServletPath
像
这样的要求收到类似 http://localhost:8080/byservlet/foo 这样的请求
SERVLET_PATH : /byservlet
PATH_INFO : /foo
那是问题:)
谢谢