搭建Spring開發環境

1、使用web.xml搭建開發環境簡介

最原始搭建web開發環境,即是使用web.xml配置文件,咱們能夠在web.xml中配置Servlet,Filter,Listener等等。搭建Spring開發環境也是很是的簡單。html

web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <!-- 配置加載類路徑的配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <!-- 配置監聽器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 前端控制器(加載classpath:springmvc.xml 服務器啓動建立servlet) -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置初始化參數,建立完DispatcherServlet對象,加載springmvc.xml配置文件 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <!-- 服務器啓動的時候,讓DispatcherServlet對象建立 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

</web-app>
總結一下

在web.xml中配置ContextLoaderListener偵聽器。配置前端控制器,用於處理請求。設置contextConfigLocation變量,它的值等於spring,springmvc配置文件的路徑。
可能還有一個疑問,若是說,我使用了web.xml文件,可是個人全部Spring,SpringMvc的配置文件均是Java配置的。這時候該怎麼辦?前端

解決辦法java

web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <context-param>
        <param-name>contextClass</param-name>
        <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
    </context-param>

    <!-- 配置加載類路徑的配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>配置文件全類名(包名.類名)</param-value>
    </context-param>

    <!-- 配置監聽器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 前端控制器(加載classpath:springmvc.xml 服務器啓動建立servlet) -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
              <init-param>
                <param-name>contextClass</param-name>
                <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
            </init-param>
        <!-- 配置初始化參數,建立完DispatcherServlet對象,加載springmvc.xml配置文件 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>配置文件全類名</param-value>
        </init-param>
        <!-- 服務器啓動的時候,讓DispatcherServlet對象建立 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

</web-app>

跟前面的差異就是:將原來的xml文件路徑改爲Java配置文件的全類名,配置了contextClass參數。 web

2、不使用web.xml搭建開發環境簡介

在此次的搭建中,看上去會以爲更加高大上一些。
文件的目錄結構以下:
spring

這裏面沒有webapp目錄,更沒有web.xml文件。模板引擎咱們使用的是thymeleaf。
咱們應該明白一點,凡是實現WebApplicationInitializer接口的類,均可以自動加載。spring-mvc

1.先來看一個很重要的類服務器

public class WebAppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {


        AnnotationConfigWebApplicationContext annotationConfigWebApplicationContext = new AnnotationConfigWebApplicationContext();
        annotationConfigWebApplicationContext.setServletContext(servletContext);

        servletContext.addListener(new ContextLoaderListener(annotationConfigWebApplicationContext));
        annotationConfigWebApplicationContext.register(AppConfig.class, WebConfig.class);

        annotationConfigWebApplicationContext.refresh();


        DispatcherServlet servlet = new DispatcherServlet(annotationConfigWebApplicationContext);
        ServletRegistration.Dynamic registration = servletContext.addServlet("DispatcherServlet", servlet);
        registration.setLoadOnStartup(1);
        registration.addMapping("/");

    }
}

解釋:其中AnnotationConfigWebApplicationContext 是用於生成spring容器用的。
AppConfig和WebConfig分別是Spring,SprienngMvc的配置文件。
實現WebApplicationInitializer的類能夠有多個,並且實現WebApplicationInitializer類能夠用於添加Servle,過濾器,監聽器等等,每一個都是自動加載的,因此咱們能夠寫多個這樣的類用於不一樣的目的。mvc

2.下面這個是java的配置類,能夠根據須要進行具體配置app

@Configuration
@ComponentScan
public class AppConfig {
}

3.下面是SoringMvc配置文件webapp

@Configuration
@ComponentScan
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    }

    @Bean
    public SpringResourceTemplateResolver templateResolver() {
        SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
        templateResolver.setPrefix("classpath:/templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML");
        templateResolver.setCharacterEncoding("UTF-8");
        return templateResolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver());
        return templateEngine;
    }

    @Bean
    public ViewResolver viewResolver() {
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(templateEngine());
        viewResolver.setOrder(1);
        return viewResolver;
    }

}

SpringMvc的配置類實現了WebMvcConfigurer 接口,配置了視圖解析器,實現這個接口,能夠重載方法作springmvc的配置,如添加攔截器等

相關文章
相關標籤/搜索