1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.struts2;
23
24 import javax.servlet.http.HttpServletRequest;
25
26
27 /***
28 * Request handling utility class.
29 */
30 public class RequestUtils {
31
32 /***
33 * Retrieves the current request servlet path.
34 * Deals with differences between servlet specs (2.2 vs 2.3+)
35 *
36 * @param request the request
37 * @return the servlet path
38 */
39 public static String getServletPath(HttpServletRequest request) {
40 String servletPath = request.getServletPath();
41
42 String requestUri = request.getRequestURI();
43
44 if (requestUri != null && servletPath != null && !requestUri.endsWith(servletPath)) {
45 int pos = requestUri.indexOf(servletPath);
46 if (pos > -1) {
47 servletPath = requestUri.substring(requestUri.indexOf(servletPath));
48 }
49 }
50
51 if (null != servletPath && !"".equals(servletPath)) {
52 return servletPath;
53 }
54
55 int startIndex = request.getContextPath().equals("") ? 0 : request.getContextPath().length();
56 int endIndex = request.getPathInfo() == null ? requestUri.length() : requestUri.lastIndexOf(request.getPathInfo());
57
58 if (startIndex > endIndex) {
59 endIndex = startIndex;
60 }
61
62 return requestUri.substring(startIndex, endIndex);
63 }
64
65 }