1、重写DispatcherServlet
import java.util.HashSet; import java.util.Map; import java.util.Set; import org.springframework.beans.factory.BeanFactoryUtils; import org.springframework.context.ApplicationContext; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.DispatcherServlet; import org.springframework.web.servlet.HandlerMapping; import org.springframework.web.servlet.mvc.condition.PatternsRequestCondition; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; @SuppressWarnings("serial") public class MyDispatcherServlet extends DispatcherServlet { public static final Set<String> MAPPING_URLS = new HashSet<>(); @Override protected void initStrategies(ApplicationContext context) { super.initStrategies(context); Map<String, HandlerMapping> matchingBeans = BeanFactoryUtils.beansOfTypeIncludingAncestors(context, HandlerMapping.class, true, false); for(HandlerMapping handlerMapping : matchingBeans.values()) { if(handlerMapping instanceof RequestMappingHandlerMapping) { RequestMappingHandlerMapping rmhm = (RequestMappingHandlerMapping) handlerMapping; Map<RequestMappingInfo, HandlerMethod> handlerMethods = rmhm.getHandlerMethods(); for(RequestMappingInfo rmi : handlerMethods.keySet()) { PatternsRequestCondition prc = rmi.getPatternsCondition(); MAPPING_URLS.addAll(prc.getPatterns()); } } } System.out.println(">>>>>>>>>>>>>>>>"); for (String string : MAPPING_URLS) { System.out.println(string); } System.out.println(">>>>>>>>>>>>>>>>"); } }
2、在web.xml中配置重写的MyDispatcherServlet
<!-- MVC Servlet --> <servlet> <servlet-name>springServlet</servlet-name> <servlet-class>com.huatech.web.listener.MyDispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springServlet</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping>
相关推荐
在这个过滤器中,你可以根据请求的URL进行解析、转换,然后再将请求转发给Spring MVC的DispatcherServlet。 4. **路径变量和请求参数** 在上面的例子中,`@PathVariable`用于获取URL中的动态部分,而`@RequestBody...
SpringMVC 使用注解来关联请求与处理方法,例如 @RequestMapping 注解用于映射 URL 到特定的控制器方法。例如: ```java @Controller public class UserController { @RequestMapping("/login") public String ...
SpringMVC4支持创建RESTful API,通过`@PathVariable`、`@RequestParam`等注解处理URL中的动态部分和请求参数。这样可以实现资源导向的API设计,符合HTTP协议的最佳实践。 8. **异常处理** 可以通过`@...
### SpringMVC基础知识详解 #### 一、SpringMVC简介 SpringMVC是Spring框架中的一个模块,专门用于Web应用程序的开发。它继承了Spring框架的一系列优点,并且提供了更为简洁高效的MVC(Model-View-Controller)...
2. 自定义路由:SpringBoot允许你通过`@RequestMapping`注解来定义Controller方法的URL映射。此外,`@GetMapping`、`@PostMapping`等注解提供了更具体的HTTP操作映射。 3. 异常处理:SpringBoot提供了一种声明式的...
- 在 web.xml 中配置 DispatcherServlet 的 url-pattern,决定哪些 URL 请求会被 SpringMVC 处理。 - 在 Controller 方法上使用 @RequestMapping 注解指定 URL 路径。 6. **接收用户参数** - @RequestParam:从...
在SpringMVC中,可以通过`@RequestMapping`注解来映射请求URL到控制器方法,同时可以在方法的参数中使用`@RequestParam`注解来接收请求参数。如果是简单类型的数据(如int, String),SpringMVC能够自动将请求参数...
此外,还需要在 `web.xml` 文件中配置 SpringMVC 的前端控制器 DispatcherServlet: ```xml <servlet-name>dispatcher <servlet-class>org.springframework.web.servlet.DispatcherServlet <param-name>...
- `@PathVariable`:获取URL路径变量的值。 - `@RequestParam`:获取请求参数的值。 - `@ModelAttribute`:用于模型绑定,可以将请求参数绑定到Model对象。 5. **拦截器(Interceptor)** - 拦截器可以实现...
SpringMVC的核心组件包括DispatcherServlet、HandlerMapping、ViewResolver等。通过注解驱动,如`@RequestMapping`,可以轻松地定义请求映射,使得代码更简洁。SpringMVC还提供了依赖注入(DI)和面向切面编程(AOP...
4. 编写控制器类(Controller),使用@RequestMapping注解来映射请求的URL,然后在控制器方法中编写业务逻辑,并使用返回值来定义将视图跳转到哪个页面。 5. 编写JSP页面,用于展示数据或收集用户输入。 在Spring ...
SpringMVC支持多种注解和配置方式,例如@Controller注解用于声明一个类为控制器,@RequestMapping用于映射请求到具体的方法,@RequestParam用于获取请求参数,@ModelAttribute用于绑定数据到模型等。 SpringMVC的...
- 使用@Controller注解标记Controller类,@RequestMapping注解映射请求,@RequestParam获取请求参数。 - @PathVariable用于处理RESTful风格的URL中的动态参数。 - @ModelAttribute可以将请求参数绑定到模型对象,...
同时,需要设计一个简单的注解系统,如@Controller、@RequestMapping等,用于标记Controller类和处理方法。 接下来是包扫描过程。在Spring MVC中,我们通常会定义一个配置类,通过@ComponentScan注解指定需要扫描的...
标题 "springmvc-without-webxml.rar" 暗示了这个压缩包可能包含了一个Spring MVC项目,而且这个项目没有使用传统的`web.xml`部署描述符。在传统的Java Web应用中,`web.xml`是配置应用服务器如何加载和管理Servlet...
2. **ContextLoaderListener**:这个监听器用于初始化 Spring 的全局上下文(ApplicationContext),其中包含所有服务层和数据访问层的bean。在 `web.xml` 中配置此监听器可以确保 Spring 上下文在 `...
可以使用URL重写过滤器,如Tuckey的UrlRewriteFilter,或者Spring Boot的spring-boot-starter-webflux提供的WebFlux功能。 这些面试题涵盖了Spring MVC的基本概念、核心组件、常用功能以及高级特性,对于理解...
过滤器(Filter)在Spring MVC中扮演着预处理和后处理请求的角色,它可以用于身份验证、URL重写、GZIP压缩等多种用途。在Spring MVC中,我们可以通过实现`Filter`接口或者继承`OncePerRequestFilter`类来自定义过滤...
- **处理思路**:异常从最底层(如DAO层)开始抛出,逐层向上传递,最终由前端控制器(DispatcherServlet)处理。前端控制器会调用异常处理器`HandlerExceptionResolver`来处理异常,并给出友好的提示页面。 ##### ...