SpringBoot--web開發常見配置
阿新 • • 發佈:2021-08-07
- 攔截器
-
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
-
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/**"); } }
- 檔案上傳與下載
-
<!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>
-
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"; } }
-
- 異常處理:
-
我們在templates 中自定義 error/404.html,5xx.html 。springboot會對這兩個頁面進行解析,遇到錯誤時,會自動跳轉到這兩個介面
-
Web原生元件的注入(Servlet,listener,Filter)
-
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");
}
} -
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; } }
-
- 定製化原理