SpringBoot2.0 整合 springmvc

qq_40711092發表於2020-11-24

環境搭建

在這裡插入圖片描述

整合SpringMVC:埠

  • (1)可以修改tomcat的埠和訪問專案中的靜態資源
  • (2)如何修改tomcat埠
    查詢**Properties
server.port=8090
server.servlet.context-path=/web01

設定配置項(字首+類變數名)到application配置檔案中
在這裡插入圖片描述
在這裡插入圖片描述
http://localhost:8090/web01/js/jquery-2.2.3.min.js

  • (1)static目錄的作用是什麼?
    型別webapp,存放靜態資源的,如css,js,image
    該目錄下的資源可以直接訪問
    http://localhost:8090/css/test.css
  • (2)全域性搜尋 CLASSPATH_RESOURCE_LOCATIONS

Spring的註解開發

  • (1)什麼是@Configuration ,@Bean?
    》spring提供xml與註解配置bean物件
    》xml方式:applicationContext.xml 中配置 <bean …/>
    》註解方式:
    @Configuration標記在類上,相當於applicationContext.xml
    @Bean配置在返回bean物件的方法上,將返回值物件放入ioc容器中
    之後可以使用@Autowired 依賴注入
public class DaoBeanConfig {
    @Bean//將當前方法的返回值 放到 ioc容器
    public Person getPerson(){
        //一般不是@Service @Repository @Controller
        Person person = new Person();
        person.setPassword("12345");
        person.setUsername("root");
        return person;
    }
}

@Data
public class Person {
    private String username;
    private String password;

    public Person() {
        System.out.println("執行Person構造方法");
    }
}

@SpringBootTest
class Demo07springmvcApplicationTests {

    @Autowired
    Person person;//從ioc裡面取物件
    @Test
    void test01() {
        System.out.println(person);
    }

}

SpringMVC @RestController

//@Controller
@RestController
public class Demo01Controller {

只要是返回json給瀏覽器的方法,返回值型別設定為Object,不需要再加@ResponseBody

整合SpringMVC:SpringMVC攔截器

  • (1)SpringMVC攔截器是什麼?
    攔截使用者對Controller的請求
  • (2)Springboot中如何開發?
    編寫攔截器(實現HandlerInterceptor);
    編寫配置類實現 WebMvcConfigurer,在該類中新增各種元件;
    測試
//以前是在springmvc.xml中配置,現在的話使用@Configuration加@Bean
public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //攔截器 判斷使用者是否登入,未登入重定向到登入頁
        System.out.println("preHandle ");
        return true;//true就是放行 false就是不放行
    }
}

@Configuration
public class MySpringMVCConfiguration implements WebMvcConfigurer {
    @Bean //<bean>
    public MyInterceptor getMyInterceptor(){
        MyInterceptor myInterceptor = new MyInterceptor();
        return myInterceptor;
    }
    //  /*  攔截所有   -->  MyInterceptor -->preHandle  -->true

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(getMyInterceptor()).addPathPatterns("/*");
    }
}

http://localhost:8090/web01/css/style.css 沒有經過攔截器的
http://localhost:8090/web01/test03 經過攔截器

相關文章