Spring Boot实现Web的常用功能

Spring MVC整合支持

Spring MVC自动配置介绍

在SpringBoot项目中,一旦引入了Web依赖启动器spring-boot-starter-web那么SpringBoot整合Spring MVC框架默认实现的一些AutoConfiguration自动配置类会自动生效,刻几乎在无任何额外配置的情况下进行进行Web开发。Spring Boot整合SpringMVCWeb开发主要提供了以下自动配置的功能特性。
(1)内置了两个视图解析器
(2)支持静态资源以及WebJars
(3)自动注册了转换器和格式化器
(4)支持Http消息转换器
(5)自动注册了消息代码解析器
(6)支持静态项目首页index/html
(7)支持定制应用图标favicon.ico
(8)自动初始化Web数据绑定器ConfigurableWebBindindInitializer

Spring MVC功能扩展实现

Spring Boot整合Spring MVC进行Web开发时提供了许多自动化配置,开发时还需要开发者对一些功能进行扩展实现。
示例:

项目基础环境搭建

(1)创建chapter05的spring Boot项目,并在依赖中选择Web模块下的Web依赖启动和TemplateEnginess模块下的Thymeleaf依赖启动器,chapter05的内容与项目shitu一样。
在这里插入图片描述

功能呢扩展实现

使用Spring Boot整合Spring MVC进行Web开发,实现简单的页面跳转功能。
(1)注册视图管理器在项目的com.itheima.config包下创建一个实现WebMVCConfigure接口的配置类MyMVCconfig。

package com.itheima.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MyMVCconfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry){
        registry.addViewController("/toLoginPage").setViewName("login");
        registry.addViewController("/login.html").setViewName("login");
    }

访问http://localhost:8080/toLoginPage和http://localhost:8080/login.html
在此之前先注释掉LoginController代码。
在这里插入图片描述
在这里插入图片描述
可以看出WebMVCConfigure接口定义的用户请求控制方法也实现了用户请求控制跳转的效果。
(2)注册自定义拦截器,在项目com.itheima.config包下创建一个自定义拦截器类MyInterceptor,

package com.itheima.config;

import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Calendar;

@Component
public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler)throws Exception{
        String uri=request.getRequestURI();
        Object loginUser=request.getSession().getAttribute("loginUser");
        if(uri.startsWith("/admin") && null==loginUser){
            response.sendRedirect("/toLoginPage");
            return false;
        }
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handle, @Nullable ModelAndView modelAndView)throws Exception{
        request.setAttribute("currentYear", Calendar.getInstance().get(Calendar.YEAR));
    }
    @Override
    public  void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler,@Nullable Exception ex)throws Exception{

    }
}

然后再自定义配置类MyMVCconfig中,重写addInterceptor()方法注册自定义拦截器

@Autowired
    private MyInterceptor myInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry){
        registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/login,html");
    }

在注册自定义拦截器是,使用add

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 是一个基于 Spring 框架的快速应用开发工具,它简化了构建生产级 Java 应用程序的过程。以下是使用 Spring Boot 实现一个简单的 Web 应用的基本步骤: 1. **设置基础依赖**:Spring Boot 自带了许多常用的库,如 Spring MVC、Spring Data JPA 等,所以只需要引入 `spring-boot-starter-web` 或者 `spring-boot-starter-data-jpa` 等启动器。 2. **创建主类**:通常会有一个名为 `Application` 或 `SpringBootApplication` 的主类,启用 Spring Boot 的自动配置功能。 ```java @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 3. **配置文件**:在 `src/main/resources` 下创建 `application.properties` 或 `application.yml` 文件,用于设置应用程序的配置,如数据库连接、端口等。 4. **编写业务类**:创建 Controller 类,使用 Spring MVC 进行 RESTful 接口的定义。例如: ```java @RestController @RequestMapping("/api") public class MyController { @GetMapping("/hello") public String helloWorld() { return "Hello from Spring Boot!"; } } ``` 5. **数据访问层**:若涉及数据库操作,需要定义 Entity、Repository 和 Service。例如,使用 JPA: ```java @Entity public class User { // 省略字段和 getter/setter } @Repository public interface UserRepository extends JpaRepository<User, Long> { } @Service public class UserService { private final UserRepository userRepository; public UserService(UserRepository userRepository) { this.userRepository = userRepository; } // 方法示例 public User createUser(User user) { return userRepository.save(user); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值