为什么带有Spring RequestMapping的ServletPath与带有servlet的urlMapping的ServletPath不同?

时间:2018-09-12 15:30:39

标签: spring-boot servlets request-mapping

因为我爱上了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

为什么以及如何将ServletPath当作普通的旧servlet?

那是问题:)

谢谢

0 个答案:

没有答案