1. 程式人生 > 其它 >SpringBoot--web開發常見配置

SpringBoot--web開發常見配置

  1. 攔截器
    1.  
    2. package com.model.config;
      
      import org.springframework.web.servlet.HandlerInterceptor;
      import org.springframework.web.servlet.ModelAndView;
      
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import javax.servlet.http.HttpSession;
      
      /**
       * @Description:測試類
       * @Author: 張紫韓
       * @Crete 2021/8/4 18:31
       
      */ public class MyHandlerInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session = request.getSession(); return session.getAttribute("loginUser") != null
      ; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws
      Exception { } }
    3. package com.model.config;
      
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
      import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
      
      /**
       * @Description:測試類
       * @Author: 張紫韓
       * @Crete 2021/8/4 18:30
       */
      @Configuration
      //配置類實現擴充套件類介面
      public class MyWebMvcConfig implements WebMvcConfigurer {
      
          @Override
          public void addInterceptors(InterceptorRegistry registry) {
              registry.addInterceptor(new MyHandlerInterceptor())
                      .addPathPatterns("/**")
                      .excludePathPatterns("/index","/","/toLogin","/doLogin","/css/**","/js/**","/images/**","/fonts/**");
          }
      }
  2. 檔案上傳與下載
    1. <!DOCTYPE html>
      <html lang="en" xmlns:th="http://www.thymeleaf.org">
      <head>
          <meta charset="UTF-8">
          <title>Title</title>
      </head>
      <body>
      
      <form th:action="@{/doLogin}" method="post" enctype="multipart/form-data">
          頭像:<input type="file" name="picture">
          <br>
          生活照:<input type="file" name="photos" multiple>
          <br>
          <input type="submit" th:value="提交">
      </form>
      </body>
      </html>
    2. package com.model.controller;
      
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.GetMapping;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.RequestParam;
      import org.springframework.web.bind.annotation.RequestPart;
      import org.springframework.web.multipart.MultipartFile;
      
      import java.io.File;
      import java.io.IOException;
      
      /**
       * @Description:測試類
       * @Author: 張紫韓
       * @Crete 2021/8/4 18:43
       */
      @Controller
      public class PageController {
      
          @RequestMapping("/toLogin")
          public String toForm(){
              return "form";
          }
          @RequestMapping("/doLogin")
          public String foForm(@RequestPart("picture")MultipartFile picture,
                               @RequestPart("photos")MultipartFile[] photos) throws IOException {
      
              if (!picture.isEmpty()) {
                  String filename = picture.getOriginalFilename();
                  picture.transferTo(new File("D:\\qq\\IDEA\\IdeaProjects\\technical_framework\\SpringBooot\\springboot11\\src\\main\\resources\\static\\images\\" + filename));
      
              }
              if (photos.length>0){
                  for (MultipartFile photo : photos) {
                      if (!photo.isEmpty()) {
                          String filename = photo.getOriginalFilename();
                          photo.transferTo(new File("D:\\qq\\IDEA\\IdeaProjects\\technical_framework\\SpringBooot\\springboot11\\src\\main\\resources\\static\\images\\" + filename));
                      }
                  }
              }
              return "redirect:/index";
          }
      
      
      }
        
  3. 異常處理:
    1. 我們在templates 中自定義 error/404.html,5xx.html 。springboot會對這兩個頁面進行解析,遇到錯誤時,會自動跳轉到這兩個介面

  4. Web原生元件的注入(Servlet,listener,Filter)

    1. package com.model.servlet;

      import org.springframework.boot.autoconfigure.web.ServerProperties;

      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.IOException;

      /**
      * @Description:測試類
      * @Author: 張紫韓
      * @Crete 2021/8/4 20:33
      * 注入源生元件Servlet
      */
      //第一種使用註解,將我們自定義的元件放入到容器中
      // 第二中我們使用配置檔案將元件放到容器中
      //@WebServlet(urlPatterns = "/my")
      public class MyServlet extends HttpServlet {
      @Override
      protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      resp.getWriter().write("6666");
      }
      }
    2. package com.model.servlet;
      
      import org.springframework.boot.web.servlet.FilterRegistrationBean;
      import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
      import org.springframework.boot.web.servlet.ServletRegistrationBean;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      import java.util.Arrays;
      import java.util.EventListener;
      
      /**
       * @Description:測試類
       * @Author: 張紫韓
       * @Crete 2021/8/4 20:52
       */
      
      @Configuration(proxyBeanMethods = true)//保證我們依賴的元件是單例項的
      public class MyRegistrationBeanConfig {
      
          @Bean
          public ServletRegistrationBean<MyServlet> servletRegistrationBean(){
              MyServlet servlet = new MyServlet();
              ServletRegistrationBean<MyServlet> bean = new ServletRegistrationBean<>(servlet, "/my");
              return bean;
          }
          @Bean
          public FilterRegistrationBean<MyFilter> filterRegistrationBean() {
              MyFilter filter = new MyFilter();
              FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<>(filter);
              registration.setUrlPatterns(Arrays.asList("/css/*"));
              return registration;
          }
      
          @Bean
          public ServletListenerRegistrationBean<MyListener> listerRegistrationBean() {
              MyListener listener = new MyListener();
              ServletListenerRegistrationBean<MyListener> bean = new ServletListenerRegistrationBean<>(listener);
              return bean;
          }
      
      }
  5. 定製化原理