国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

這一次,我連 web.xml 都不要了,純 Java 搭建 SSM 環(huán)境!

liaorio / 625人閱讀

摘要:環(huán)境要求使用純來搭建環(huán)境,要求的版本必須在以上。即視圖解析器解析文件上傳等等,如果都不需要配置的話,這樣就可以了。可以將一個字符串轉(zhuǎn)為對象,也可以將一個對象轉(zhuǎn)為字符串,實際上它的底層還是依賴于具體的庫。中,默認(rèn)提供了和的,分別是和。

在 Spring Boot 項目中,正常來說是不存在 XML 配置,這是因為 Spring Boot 不推薦使用 XML ,注意,并非不支持,Spring Boot 推薦開發(fā)者使用 Java 配置來搭建框架,Spring Boot 中,大量的自動化配置都是通過 Java 配置來實現(xiàn)的,這一套實現(xiàn)方案,我們也可以自己做,即自己也可以使用純 Java 來搭建一個 SSM 環(huán)境,即在項目中,不存在任何 XML 配置,包括 web.xml 。

環(huán)境要求:

使用純 Java 來搭建 SSM 環(huán)境,要求 Tomcat 的版本必須在 7 以上。

快速體驗 1 創(chuàng)建工程

創(chuàng)建一個普通的 Maven 工程(注意,這里可以不必創(chuàng)建 Web 工程),并添加 SpringMVC 的依賴,同時,這里環(huán)境的搭建需要用到 Servlet ,所以我們還需要引入 Servlet 的依賴(一定不能使用低版本的 Servlet),最終的 pom.xml 文件如下:


    org.springframework
    spring-webmvc
    5.1.6.RELEASE


    javax.servlet
    javax.servlet-api
    4.0.1
    provided
2 添加 Spring 配置

工程創(chuàng)建成功之后,首先添加 Spring 的配置文件,如下:

@Configuration
@ComponentScan(basePackages = "org.javaboy", useDefaultFilters = true, excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Controller.class)})
public class SpringConfig {
}

關(guān)于這個配置,我說如下幾點:

@Configuration 注解表示這是一個配置類,在我們這里,這個配置的作用類似于 applicationContext.xml

@ComponentScan 注解表示配置包掃描,里邊的屬性和 xml 配置中的屬性都是一一對應(yīng)的,useDefaultFilters 表示使用默認(rèn)的過濾器,然后又除去 Controller 注解,即在 Spring 容器中掃描除了 Controller 之外的其他所有 Bean 。

3 添加 SpringMVC 配置

接下來再來創(chuàng)建 springmvc 的配置文件:

@Configuration
@ComponentScan(basePackages = "org.javaboy",useDefaultFilters = false,includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class)})
public class SpringMVCConfig {
}

注意,如果不需要在 SpringMVC 中添加其他的額外配置,這樣就可以了。即 視圖解析器、JSON 解析、文件上傳......等等,如果都不需要配置的話,這樣就可以了。

4 配置 web.xml

此時,我們并沒有 web.xml 文件,這時,我們可以使用 Java 代碼去代替 web.xml 文件,這里會用到 WebApplicationInitializer ,具體定義如下:

public class WebInit implements WebApplicationInitializer {
    public void onStartup(ServletContext servletContext) throws ServletException {
        //首先來加載 SpringMVC 的配置文件
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMVCConfig.class);
        // 添加 DispatcherServlet
        ServletRegistration.Dynamic springmvc = servletContext.addServlet("springmvc", new DispatcherServlet(ctx));
        // 給 DispatcherServlet 添加路徑映射
        springmvc.addMapping("/");
        // 給 DispatcherServlet 添加啟動時機
        springmvc.setLoadOnStartup(1);
    }
}

WebInit 的作用類似于 web.xml,這個類需要實現(xiàn) WebApplicationInitializer 接口,并實現(xiàn)接口中的方法,當(dāng)項目啟動時,onStartup 方法會被自動執(zhí)行,我們可以在這個方法中做一些項目初始化操作,例如加載 SpringMVC 容器,添加過濾器,添加 Listener、添加 Servlet 等。

注意:

由于我們在 WebInit 中只是添加了 SpringMVC 的配置,這樣項目在啟動時只會去加載 SpringMVC 容器,而不會去加載 Spring 容器,如果一定要加載 Spring 容器,需要我們修改 SpringMVC 的配置,在 SpringMVC 配置的包掃描中也去掃描 @Configuration 注解,進(jìn)而加載 Spring 容器,還有一種方案可以解決這個問題,就是直接在項目中舍棄 Spring 配置,直接將所有配置放到 SpringMVC 的配置中來完成,這個在 SSM 整合時是沒有問題的,在實際開發(fā)中,較多采用第二種方案,第二種方案,SpringMVC 的配置如下:

@Configuration
@ComponentScan(basePackages = "org.javaboy")
public class SpringMVCConfig {
}

這種方案中,所有的注解都在 SpringMVC 中掃描,采用這種方案的話,則 Spring 的配置文件就可以刪除了。

5 測試

最后,添加一個 HelloController ,然后啟動項目進(jìn)行測試:

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }
}

啟動項目,訪問接口,結(jié)果如下:

6 其他配置 6.1 靜態(tài)資源過濾

靜態(tài)資源過濾在 SpringMVC 的 XML 中的配置如下:

在 Java 配置的 SSM 環(huán)境中,如果要配置靜態(tài)資源過濾,需要讓 SpringMVC 的配置繼承 WebMvcConfigurationSupport ,進(jìn)而重寫 WebMvcConfigurationSupport 中的方法,如下:

@Configuration
@ComponentScan(basePackages = "org.javaboy")
public class SpringMVCConfig extends WebMvcConfigurationSupport {
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/js/**").addResourceLocations("classpath:/");
    }
}

重寫 addResourceHandlers 方法,在這個方法中配置靜態(tài)資源過濾,這里我將靜態(tài)資源放在 resources 目錄下,所以資源位置是 classpath:/ ,當(dāng)然,資源也可以放在 webapp 目錄下,此時只需要修改配置中的資源位置即可。如果采用 Java 來配置 SSM 環(huán)境,一般來說,可以不必使用 webapp 目錄,除非要使用 JSP 做頁面模板,否則可以忽略 webapp 目錄。

6.2 視圖解析器

在 XML 文件中,通過如下方式配置視圖解析器:


    
    

如果通過 Java 類,一樣也可以實現(xiàn)類似功能。

首先為我們的項目添加 webapp 目錄,webapp 目錄中添加一個 jsp 目錄,jsp 目錄中添加 jsp 文件:

然后引入 JSP 的依賴:


    javax.servlet.jsp
    javax.servlet.jsp-api
    2.3.1

然后,在配置類中,繼續(xù)重寫方法:

@Configuration
@ComponentScan(basePackages = "org.javaboy")
public class SpringMVCConfig extends WebMvcConfigurationSupport {
    @Override
    protected void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/jsp/", ".jsp");
    }
}

接下來,在 Controller 中添加控制器即可訪問 JSP 頁面:

@Controller
public class HelloController2 {
    @GetMapping("/hello2")
    public String hello() {
        return "hello";
    }
}
6.3 路徑映射

有的時候,我們的控制器的作用僅僅只是一個跳轉(zhuǎn),就像上面小節(jié)中的控制器,里邊沒有任何業(yè)務(wù)邏輯,像這種情況,可以不用定義方法,可以直接通過路徑映射來實現(xiàn)頁面訪問。如果在 XML 中配置路徑映射,如下:

這行配置,表示如果用戶訪問 /hello 這個路徑,則直接將名為 hello 的視圖返回給用戶,并且響應(yīng)碼為 200,這個配置就可以替代 Controller 中的方法。

相同的需求,如果在 Java 代碼中,寫法如下:

@Configuration
@ComponentScan(basePackages = "org.javaboy")
public class SpringMVCConfig extends WebMvcConfigurationSupport {
    @Override
    protected void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/hello3").setViewName("hello");
    }
}

此時,用戶訪問 /hello3 接口,就能看到名為 hello 的視圖文件。

6.4 JSON 配置

SpringMVC 可以接收J(rèn)SON 參數(shù),也可以返回 JSON 參數(shù),這一切依賴于 HttpMessageConverter。

HttpMessageConverter 可以將一個 JSON 字符串轉(zhuǎn)為 對象,也可以將一個對象轉(zhuǎn)為 JSON 字符串,實際上它的底層還是依賴于具體的 JSON 庫。

所有的 JSON 庫要在 SpringMVC 中自動返回或者接收 JSON,都必須提供和自己相關(guān)的 HttpMessageConverter 。

SpringMVC 中,默認(rèn)提供了 Jackson 和 gson 的 HttpMessageConverter ,分別是:MappingJackson2HttpMessageConverter 和 GsonHttpMessageConverter 。

正因為如此,我們在 SpringMVC 中,如果要使用 JSON ,對于 jackson 和 gson 我們只需要添加依賴,加完依賴就可以直接使用了。具體的配置是在 AllEncompassingFormHttpMessageConverter 類中完成的。

如果開發(fā)者使用了 fastjson,那么默認(rèn)情況下,SpringMVC 并沒有提供 fastjson 的 HttpMessageConverter ,這個需要我們自己提供,如果是在 XML 配置中,fastjson 除了加依賴,還要顯式配置 HttpMessageConverter,如下:


    
        
        
    

在 Java 配置的 SSM 中,我們一樣也可以添加這樣的配置:

@Configuration
@ComponentScan(basePackages = "org.javaboy")
public class SpringMVCConfig extends WebMvcConfigurationSupport {
    @Override
    protected void configureMessageConverters(List> converters) {
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        converter.setDefaultCharset(Charset.forName("UTF-8"));
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setCharset(Charset.forName("UTF-8"));
        converter.setFastJsonConfig(fastJsonConfig);
        converters.add(converter);
    }
}

然后,就可以在接口中直接返回 JSON 了,此時的 JSON 數(shù)據(jù)將通過 fastjson 生成。

總結(jié)

好了,本文通過一個簡單的例子向讀者展示了使用 Java 來配置 Spring+SpringMVC 環(huán)境,事實上,只要這兩個配置 OK ,再加入 MyBatis 就是非常容易的事了,本文相關(guān)的案例松哥已經(jīng)上傳到 GitHub 上了:https://github.com/lenve/javaboy-code-samples。

關(guān)于本文,有問題歡迎留言討論。

關(guān)注公眾號【江南一點雨】,專注于 Spring Boot+微服務(wù)以及前后端分離等全棧技術(shù),定期視頻教程分享,關(guān)注后回復(fù) Java ,領(lǐng)取松哥為你精心準(zhǔn)備的 Java 干貨!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/74677.html

相關(guān)文章

  • SSM : 環(huán)境搭建

    摘要:這個文件包含對對數(shù)據(jù)訪問進(jìn)行封裝的所有類。為等提供的一致的聲明式和編程式事務(wù)管理。 SSM 環(huán)境搭建 目錄創(chuàng)建 pom.xml SSM 逐層配置 一、目錄 1.1 src/main/java 目錄下的包(以下包要放在項目包下,如:com.imooc.項目名) entity: 存放實體類 web: 存放controller,相當(dāng)于Struts中的action service: 業(yè)務(wù)...

    MonoLog 評論0 收藏0
  • 從零開始搭建SSM框架(Spring + Spring MVC + Mybatis)

    摘要:打開,,選中,然后再選中,輸入項目的和,指定等配置,修改,打開項目,添加一些必要的目錄,最終項目框架目錄圖如下修改文件,指定各依賴和插件的版本等信息在標(biāo)簽里面管理各依賴的版本號添加項目依賴管理依賴配置好之后,開始整合。 最近在回顧和總結(jié)一些技術(shù),想到了把之前比較火的 SSM 框架重新搭建出來,作為一個小結(jié),同時也希望本文章寫出來能對大家有一些幫助和啟發(fā),因本人水平有限,難免可能會有一些...

    MiracleWong 評論0 收藏0
  • Maven多模塊項目搭建+整合SSM框架

    摘要:繼承作用就是避免配置重復(fù),對于子項目來說應(yīng)該關(guān)心父項目是怎么樣配置的。聚合字面理解就是聚在一起合作完成工作,就是將子模塊聚集起來完成相應(yīng)的項目需求父工程的搭建項目結(jié)構(gòu)在父工程中,主要負(fù)責(zé)完成依賴的版本管理,并不是實際的依賴。 從大二開始就一直關(guān)注segmentFault,在問題專區(qū)幫忙回答一些自己知曉的問題;在寫這篇文章之前我一直會在朋友圈發(fā)一些自己遇到的問題以及解決辦法,這是第一次寫...

    liaosilzu2007 評論0 收藏0
  • 從分析我抓取的60w知乎網(wǎng)民來學(xué)習(xí)如何在SSM項目中使用Echarts

    摘要:一前言知乎網(wǎng)名的數(shù)據(jù)從何而來去年在接觸爬蟲的時候,接觸到了一個關(guān)于知乎的爬蟲。最后,本文提供的知乎網(wǎng)名數(shù)據(jù)是年月份左右抓取的數(shù)據(jù)。 一 前言 1.1 60w知乎網(wǎng)名的數(shù)據(jù)從何而來? 去年在接觸Java爬蟲的時候,接觸到了一個關(guān)于知乎的爬蟲。個人覺得寫的非常好,當(dāng)時抓取的效率和成功率還是特別特別高,現(xiàn)在可能知乎反扒做的更好,這個開源知乎爬蟲沒之前抓取的那么順利了。我記得當(dāng)時在我的i7+...

    TwIStOy 評論0 收藏0
  • 移動商城項目【總結(jié)】

    摘要:有必要建一個資源服務(wù)器存放靜態(tài)資源。一些用戶級別的數(shù)據(jù)輕量可以考慮存儲在中。存儲的是值,可以通過來對和對象之間的轉(zhuǎn)換如果我們的數(shù)據(jù)是在后臺傳過去或者轉(zhuǎn)換而成的,在前臺上并沒有做什么改變的話。 移動商城項目總結(jié) 移動商城項目是我第二個做得比較大的項目,該項目系統(tǒng)來源于傳智Java168期,十天的視頻課程(想要視頻的同學(xué)關(guān)注我的公眾號就可以直接獲取了) 通過這次的項目又再次開闊了我的視野,...

    BlackHole1 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<