===================================
0x01 工具介绍
0x02 安装与使用
0x03 项目链接下载
https://github.com/jdr2021/JavaWebInfo
jsp文件内容
<%@ page import="javax.servlet.ServletContext" %> <%@ page import="org.springframework.context.ApplicationContext" %> <%@ page import="org.springframework.web.context.support.WebApplicationContextUtils" %> <%@ page import="javax.ws.rs.Path" %> <%@ page import="org.springframework.web.bind.annotation.RequestMapping" %> <%@ page import="java.lang.reflect.Method" %> <%@ page import="java.util.Map" %> <%@ page import="javax.servlet.FilterRegistration" %> <%@ page import="java.util.Collection" %> <%@ page import="java.util.Map" %> <!DOCTYPE html> <html> <head> <title>Controller 、Servlet and Filter</title> <style> table { border-collapse: collapse; width: 100%; } th, td { text-align: left; padding: 8px; } tr:nth-child(even) { background-color: #f2f2f2; } </style> </head> <body> <% ServletContext servletContext = request.getServletContext(); ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext); String contextPath = request.getContextPath(); out.println("<table>"); out.println("<tr>"); out.println("<th>Type</th>"); out.println("<th>Name</th>"); out.println("<th>Class</th>"); out.println("<th>URL</th>"); out.println("</tr>"); // Servlet mappings Map<String, ? extends ServletRegistration> servletRegistrations = servletContext.getServletRegistrations(); Collection<? extends ServletRegistration> servlets = servletRegistrations.values(); for (ServletRegistration registration : servlets) { String servletName = registration.getName(); Collection<String> urlPatterns = registration.getMappings(); String servletClass = registration.getClassName(); out.println("<tr>"); out.println("<td>Servlet</td>"); out.println("<td>" + servletName + "</td>"); out.println("<td>" + servletClass + "</td>"); out.println("<td>"); for (String urlPattern : urlPatterns) { if (!urlPattern.startsWith("/")) { urlPattern = "/" + urlPattern; } out.println(contextPath + urlPattern + "<br>"); } out.println("</td>"); out.println("</tr>"); } // Filter mappings Map<String, ? extends FilterRegistration> filterRegistrations = servletContext.getFilterRegistrations(); Collection<? extends FilterRegistration> filters = filterRegistrations.values(); for (FilterRegistration registration : filters) { String filterName = registration.getName(); Collection<String> urlPatterns = registration.getUrlPatternMappings(); String filterClass = registration.getClassName(); out.println("<tr>"); out.println("<td>Filter</td>"); out.println("<td>" + filterName + "</td>"); out.println("<td>" + filterClass + "</td>"); out.println("<td>"); for (String urlPattern : urlPatterns) { if (!urlPattern.startsWith("/")) { urlPattern = "/" + urlPattern; } out.println(contextPath + urlPattern + "<br>"); } out.println("</td>"); out.println("</tr>"); } if (applicationContext != null) { Map<String, Object> controllerBeans = applicationContext.getBeansOfType(Object.class); for (Object controllerBean : controllerBeans.values()) { Class<?> clazz = controllerBean.getClass(); Class<?> currentClass = clazz; while (currentClass != null) { Method[] methods = currentClass.getDeclaredMethods(); for (Method method : methods) { /* *获取通过@Path注解注册的路由 *获取通过@RequestMapping注解注册的路由 */ if (method.isAnnotationPresent(Path.class)) { Path classPathAnnotation = currentClass.getAnnotation(Path.class); Path methodPathAnnotation = method.getAnnotation(Path.class); String classPath = classPathAnnotation.value(); String methodPath = methodPathAnnotation.value(); String url = contextPath + classPath + methodPath; out.println("<tr>"); out.println("<td>Controller</td>"); out.println("<td>" + currentClass.getSimpleName() + "</td>"); out.println("<td>" + currentClass + "</td>"); out.println("<td>" + url + "</td>"); out.println("</tr>"); } else if (method.isAnnotationPresent(RequestMapping.class)) { RequestMapping requestMappingAnnotation = method.getAnnotation(RequestMapping.class); String[] values = requestMappingAnnotation.value(); for (String value : values) { String url = contextPath + value; out.println("<tr>"); out.println("<td>Controller</td>"); out.println("<td>" + currentClass.getSimpleName() + "</td>"); out.println("<td>" + currentClass.getName() + "</td>"); out.println("<td>" + url + "</td>"); out.println("</tr>"); } } } currentClass = currentClass.getSuperclass(); } } } else { out.println("<p>Application context is null.</p>"); } out.println("</table>"); %> </body>
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论