基于注解方式启动SpringMVC

一、Maven依赖
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.0.5.RELEASE</version>
    </dependency>
二、定义MyMVConfig配置类
@Configuration
@EnableWebMvc//相当于WebMvcConfigurationSupport,使用@EnableWebMvc注解就等于扩展了WebMvcConfigurationSupport,但是没有扩展任何方法。
@ComponentScan("com.test.controller")//扫描Controller层将其装配到Spring的bean容器中
public class MyMvcConfig {
}
三、配置文件信息
public class WebInitializer implements WebApplicationInitializer {//相当于web.xml中的配置
    public void onStartup(javax.servlet.ServletContext servletContext) throws ServletException {
        // 1.启动SpringMVC 容器 类注入到Spring中
        AnnotationConfigWebApplicationContext app = new AnnotationConfigWebApplicationContext();// 启动SpringMVC Web
        // 2.注入springmvc 的配置文件
        app.register(SpringMvcConfig.class);
        // 3. 将DispatcherServlet 注入到 serlvet容器中
        ServletRegistration.Dynamic dynamic =
                servletContext.addServlet("dispatcher", new DispatcherServlet(app));
        // 4.填写url路径映射
        dynamic.addMapping("/");
        dynamic.setLoadOnStartup(1);// 优先级最高表示 最早被加载
    }
}
四、整合jsp页面
@Bean
public ViewResolver viewResolver() {
    InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
    // 前缀
    internalResourceViewResolver.setPrefix("/WEB-INF/view/");
    // 后缀
    internalResourceViewResolver.setSuffix(".jsp");
    return internalResourceViewResolver;
}
五、SpringMVC拦截器使用
1.拦截器和过滤器的区别

拦截器和过滤器都是基于Aop实现的,能够对请求之前之后实现拦截

过滤器是基于Servlet容器实现,对web请求之前之后进行拦截

拦截器不需要依赖Servlet容器, 不仅可以对web请求进行拦截,还可以对方法进行拦截。

使用:

拦截器:权限控制、日志打印、参数验证 、会话。

过滤器:编码转换、跨域解决、xss攻

2.SpringMVC拦截器的使用

自定义拦截器拦截请求Token

preHandle在业务处理器处理请求之前被调用

postHandle在业务处理器处理请求执行完成后,生成视图之前执行

afterCompletion在DispatcherServlet完全处理请求后被调用,可用于清理资源等。

public class TokenInterceptor implements HandlerInterceptor {
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println(">>>preHandle<<<");
        String token = request.getParameter("token");
        if (StringUtils.isEmpty(token)) {
            response.getWriter().print("not find token");
            return false;
        }
        return true;
    }

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println(">>>>>postHandle<<<<<<<<<");
    }

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println(">>>afterCompletion<<<");
    }
}
六、SpringMvcConfig配置类

相当于springmvc.xml配置文件

@Configuration
@ComponentScan(basePackages = {"com.test.controller","com.test.service"})
//@EnableWebMvc
@EnableAsync
public class SpringMvcConfig extends WebMvcConfigurationSupport {
    //@EnableWebMvc 等于开启SpringMVC注解方式
    //@EnableWebMvc 底层会帮助我们注入WebMvcConfigurationSupport这类 覆盖我们自定义配置类
    @Bean
    public InternalResourceViewResolver internalResourceViewResolver() {
        // 1.需要前缀
        InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
        // 2.需要后缀
        internalResourceViewResolver.setPrefix("/WEB-INF/view/");
        internalResourceViewResolver.setSuffix(".jsp");
        return internalResourceViewResolver;
    }

    // 1.手动注入拦截器到Spring中
    @Bean
    public TokenInterceptor tokenInterceptor() {
        return new TokenInterceptor();
    }

    // 2.添加拦截器
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(tokenInterceptor()).addPathPatterns("/**");// 拦截所有的请求
    }
    // 配置springmvc相关一些信息WebMvcConfigurationSupport web视图相关内容
}
七、Controller层、Service层(略)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,接下来我将为你提供一个完整的Spring MVC注解示例,并演示如何启动它。 1. 首先,在你的项目中添加Spring MVC和其他必要的依赖项,例如: ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.12.RELEASE</version> </dependency> ``` 2. 创建一个基于注解的控制器类,例如: ```java @Controller public class MyController { @GetMapping("/hello") @ResponseBody public String hello() { return "Hello, World!"; } @GetMapping("/greet/{name}") @ResponseBody public String greet(@PathVariable String name) { return "Hello, " + name + "!"; } } ``` 3. 在你的配置类中启用Spring MVC,并设置基础包扫描路径,例如: ```java @Configuration @EnableWebMvc @ComponentScan(basePackages = "com.example") public class AppConfig { // 配置视图解析器等其他必要组件 } ``` 4. 创建一个WebApplicationInitializer类,用于初始化Spring MVC容器并启动应用程序,例如: ```java public class WebAppInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletContext) throws ServletException { // 创建Spring MVC容器 AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); context.register(AppConfig.class); // 注册Spring MVC的DispatcherServlet ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(context)); dispatcher.setLoadOnStartup(1); dispatcher.addMapping("/"); } } ``` 5. 运行你的应用程序,并访问URL "http://localhost:8080/hello" 或 "http://localhost:8080/greet/{yourname}" 即可看到响应结果。 这就是一个完整的Spring MVC注解示例,并演示了如何启动它。当然,在实际开发中,你还需要配置视图解析器、拦截器、异常处理器等其他必要组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值