日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解IDEA中SpringBoot整合Servlet三大組件的過程

瀏覽:163日期:2023-04-08 11:28:42

Spring MVC整合SpringBoot提供為整合MVC框架提供的功能特性

內置兩個視圖解析器:ContentNegotiatingViewResolver和BeanNameViewResolver 支持靜態資源以及WebJars 自動注冊了轉換器和格式化器 支持Http消息轉換器 自動注冊了消息代碼解析器 支持靜態項目首頁index.html 支持定制應用圖標favicon.ico 自動初始化Web數據綁定器:ConfigurableWebBindingInitializer

Spring MVC功能擴展實現

項目環境搭建(結構如這篇博客) 功能擴展實現 注冊視圖管理器

/*在config文件夾下編寫配置類 實現WebMvcConfigurer接口,擴展MVC功能 測試前將LoginController控制類注釋,更好的觀察效果 */@Configurationpublic class MyMVCConfig implements WebMvcConfigurer { //添加視圖管理 @Override public void addViewControllers(ViewControllerRegistry registry) { // 請求toLoginPage映射路徑或者login.html頁面都會自動映射到login.html頁面 registry.addViewController('/toLoginPage').setViewName('login'); registry.addViewController('/login.html').setViewName('login'); }}

- 測試后發現,使用這種方式無法獲取后臺處理的數據,比如登錄頁面中的年份。- 使用WebMvcConfigurer接口中的addViewControllers(ViewControllerRegistry registry)方法定制視圖控制,只適合較為簡單的無參數視圖Get方式的請求跳轉,對于有參數或需要業務處理的跳轉請求,最好還是采用傳統方式處理請求。

注冊自定義攔截器

/* 自定義一個攔截器類,實現簡單的攔截業務 */@Configurationpublic class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 用戶請求/admin開頭路徑時,判斷用戶是否登錄 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 handler,@Nullable ModelAndView modelAndView) throws Exception { //向request域中存放當前年份用于頁面動態展示 request.setAttribute('currentYear', Calendar.getInstance().get(Calendar.YEAR)); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { }}

- 自定義攔截器類MyInterceptor實現了HandlerInterceptor接口。在preHandle()方法中,如果用戶請求以“/admin”開頭,則判斷用戶是否登錄,如果沒有登錄,則重定向到“/toLoginPage”請求對應的登錄頁面。- 在postHandle()方法中,使用request對象向前端頁面傳遞表示年份的currentYear數據。- 在自定義配置類MyMVCConfig中,重寫addInterceptors()方法注冊自定義的攔截器,如下

@Autowired private MyInterceptor myInterceptor; //添加攔截器管理 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(myInterceptor) .addPathPatterns('/**') .excludePathPatterns('/login.html'); }

- 使用@Autowired注解引入自定義的MyInterceptor攔截器組件,重寫其中addInterceptors()方法注冊自定義的攔截器- 使用addPathPatterns('/**')方法攔截所有路徑請求,excludePathPatterns('/login.html')方法對“login.html”路徑請求放行處理。- 項目重啟后,訪問localhost:8080/admin,跳轉到登錄界面,自定義攔截器生效。

Spring Boot 整合Servlet三大組件

組件注冊方式整合Servlet三大組件

在Spring Boot中,使用組件注冊方式整合內嵌Servlet容器的Servlet、Filter、Listener三大組件時, 只需要將這些自定義組件通過ServletRegistrationBean、FilterRegistrationBean、ServletListenerRegistrationBean類注冊到容器中即可

組件注冊方式整合 Servlet

/* 自定義Servlet類 使用@Component注解將MyServlet類作為組件注入Spring容器。該類繼承自HTTPServlet, 通過HttpServletResponse對象向頁面輸出'hello MyServlet' */@Componentpublic class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().write('hello MyServlet'); }}

/* 嵌入式Servlet容器三大組件配置 @Configuration注解將該類標注為配置類,getServlet()方法用于注冊自定義MyServlet, 返回ServletRegistrationBean類型的Bean對象 */@Configurationpublic class ServletConfig { // 注冊Servlet組件 @Bean public ServletRegistrationBean<javax.servlet.Servlet> getServlet(MyServlet myServlet){ return new ServletRegistrationBean<javax.servlet.Servlet>(myServlet,'/myServlet'); }}

啟動測試,訪問myServlet,顯示數據說明成功整合Servlet組件

組件注冊方式整合Filter

/* 自定義Filter類 使用@Component注解將當前MyFilter類作為組件注入到Spring容器中 MyFilter類實現Filter接口,重寫如下三個方法,在doFilter()方法中想控制臺打印'hello MyFilter' */@Componentpublic class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void destroy() { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println('hello MyFilter'); filterChain.doFilter(servletRequest,servletResponse); }}

//注冊Filter組件 @Bean public FilterRegistrationBean<javax.servlet.Filter> getFilter(MyFilter myFilter){ FilterRegistrationBean<javax.servlet.Filter> registrationBean = new FilterRegistrationBean<>(myFilter); registrationBean.setUrlPatterns(Arrays.asList('/toLoginPage','/myFilter')); return registrationBean; }

啟動測試,訪問/myFilter,控制臺看到hello MyFilter

組件注冊方式整合Listener

/* 自定義Listener類 */@Componentpublic class MyListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { System.out.println('contextInitialized ...'); } @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println('contextDestroyed ...'); }}

//注冊Listener組件 @Bean public ServletListenerRegistrationBean<java.util.EventListener> getServletListener(MyListener myListener){ return new ServletListenerRegistrationBean<>(myListener); }

程序啟動成功后,會自動打印輸出'contextInitialized ...',單擊坐下的Exit關閉會輸出銷毀的監聽信息,如果直接強制關閉程序,無法打印監聽信息。

注意:當自定義的Servlet組件配置類ServletConfig全部注釋并重啟項目后,自定義的Servlet、Filter、Listener組件仍然生效。 原因:嵌入式Servlet容器對Servlet、Filter、Listener組件進行了自動化識別和配置,而自定義的Servlet、Filter、Listener都繼承/實現了對應的類/接口,同時自定義的這三個組件都使用了@Component注解,會自動被掃描為Spring組件。

路徑掃描整合Servlet三大組件

使用路徑掃描的方式整合三大組件,需要再自定義組件上分別添加@WebServlet、@WebFilter、@WebListener注解進行聲明,并配置相關注解屬性,在主程序啟動類上使用@ServletComponentScan注解開啟組件掃描。 分別用以下三個注解代替@Component注解進行配置三個組件@WebFilter(value={'/antionLogin','/antionMyFilter'}) @WebListener @WebServlet('/annotationServlet') 啟動類上加入@ServletComponentScan注解,開啟基于注解的組件掃描支持 對于Filter測試訪問'/antionLogin','/antionMyFilter',對于Servlet測試訪問'/annotationServlet',測試結果如上。

到此這篇關于詳解IDEA中SpringBoot整合Servlet三大組件的過程的文章就介紹到這了,更多相關SpringBoot整合Servlet三大組件內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
女人天堂亚洲aⅴ在线观看| 色爱综合av| 亚洲人亚洲人色久| 国产毛片一区二区三区| 中文字幕日韩高清在线 | 国产亚洲欧美日韩在线观看一区二区 | 五月综合激情| 午夜精品成人av| 国产精品精品| 国产自产自拍视频在线观看| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 精品视频网站| 成人美女视频| 日韩中文在线播放| 水蜜桃久久夜色精品一区| 日韩美女一区二区三区在线观看| 成人日韩在线| 国产亚洲永久域名| 欧美日韩中出| 日韩av专区| 首页国产欧美久久| 久久精品国产网站| 亚洲精华国产欧美| 91国内精品| 久久久久久久久成人| 免费成人在线影院| 少妇精品在线| 尹人成人综合网| 日韩精品一级二级 | 久久久久网站| 国产乱码午夜在线视频| 国产精品久久国产愉拍| 久久国产精品免费精品3p | 日产欧产美韩系列久久99| 欧洲激情综合| 鲁大师影院一区二区三区| 黑丝一区二区| 999精品在线| 肉色欧美久久久久久久免费看| 美女视频黄免费的久久| 精品一区91| 秋霞影院一区二区三区| 国产偷自视频区视频一区二区| 亚洲欧美网站在线观看| 国产精品调教| 在线亚洲人成| 日韩美女精品| av高清一区| 欧美日一区二区三区在线观看国产免 | 久久一级电影| 国产日本亚洲| 欧美日韩国产在线观看网站 | 久久高清免费| 麻豆中文一区二区| 免费观看在线综合| 神马午夜在线视频| 清纯唯美亚洲综合一区| 美国欧美日韩国产在线播放| 都市激情国产精品| 久久国产精品免费精品3p| 亚洲激情偷拍| 婷婷综合六月| 日本成人一区二区| 一区在线免费| 日韩深夜视频| 欧美黄色一区| 欧美永久精品| 日本国产一区| 欧美视频一区| 日韩一区二区三区精品视频第3页| 国产一区二区亚洲| 欧美成人精品一级| 国产精品一区二区av日韩在线| 首页欧美精品中文字幕| 欧美综合二区| 中文一区在线| 久久午夜视频| 免费欧美一区| 日韩视频精品在线观看| 日韩毛片在线| 99久久久国产精品美女| 神马久久午夜| 91tv亚洲精品香蕉国产一区| 精品日韩视频| 欧美日韩国产一区二区三区不卡| 麻豆精品蜜桃| 久久不见久久见免费视频7| 国产91在线播放精品| 日韩免费一区| 亚洲小说欧美另类婷婷| 久久久9色精品国产一区二区三区| 婷婷精品视频| 精品国产午夜| 免费中文字幕日韩欧美| 日韩中文在线播放| 亚洲香蕉网站| 亚洲狼人精品一区二区三区| 日韩黄色免费网站| 成人午夜毛片| 在线亚洲精品| 欧美aa在线视频| 极品日韩av| 国产日韩欧美| 激情五月色综合国产精品| 亚洲精品日本| 国产探花在线精品一区二区| 麻豆精品在线观看| 捆绑调教美女网站视频一区| 性欧美69xoxoxoxo| 国产欧美自拍一区| 婷婷国产精品| 国产欧美视频在线| 亚洲精品小说| 麻豆国产精品视频| 日韩在线一区二区| 中文字幕一区二区三区日韩精品| 日本成人在线网站| 欧美成a人免费观看久久| 日韩在线电影| 99tv成人| 久久精品国产999大香线蕉| 亚洲少妇一区| 亚洲一区二区三区四区五区午夜 | 免费在线播放第一区高清av| 亚洲欧美久久| 四虎成人精品一区二区免费网站| 日韩精品欧美精品| 日韩毛片视频| 97久久中文字幕| 亚洲一区亚洲| 国产亚洲一区| 亚洲欧美在线综合| 老鸭窝毛片一区二区三区| 免费人成精品欧美精品| 91青青国产在线观看精品| 亚洲综合五月| 欧美/亚洲一区| 成人日韩在线观看| 高潮一区二区| 国产成人久久精品一区二区三区| 欧美在线91| 7777精品| 国产欧美成人| 日韩在线网址| 日韩国产一区二| 青青草国产成人99久久| 欧美亚洲免费| 国产福利一区二区三区在线播放| 丝瓜av网站精品一区二区| 久久精品不卡| 在线午夜精品| 久久亚洲美女| 视频在线在亚洲| 国产经典一区| 国产精品精品国产一区二区| 日韩中文字幕高清在线观看| 久久高清免费| 视频一区欧美精品| 欧美日韩夜夜| 成人国产精品| 亚洲免费观看| 日韩黄色av| sm久久捆绑调教精品一区| 亚洲天堂资源| 一本色道久久精品| 久久久亚洲欧洲日产| 一本大道色婷婷在线| 老牛国产精品一区的观看方式| 日韩高清一级| 超级白嫩亚洲国产第一| 久久国产高清| 精品国产不卡| 麻豆精品91| 韩国一区二区三区视频| 亚洲作爱视频| 久久亚州av| 蜜桃av一区| 免费视频亚洲| 日韩高清电影一区| 老牛影视精品| 日本午夜精品久久久| 亚洲性色视频| 国产精品久久久久77777丨| 欧美日韩激情| 麻豆久久久久久| 在线日韩成人| 久久中文字幕av| 97成人超碰| 国产亚洲字幕| 香蕉视频成人在线观看| 久久精品亚洲欧美日韩精品中文字幕| 日本成人在线一区| 亚洲欧美视频| 亚洲一区二区日韩| 久久久亚洲欧洲日产| 日韩区欧美区| 亚洲五月综合| 丝袜国产日韩另类美女| 亚洲v在线看| 亚洲少妇一区|