在 IDEA 中搭建最小可用 SpringMVC 項目(純 Java 配置)

date : 2019年12月1日html

1. 新建 SpringMVC 的 Web 項目

  • File - New - Project..
  • 勾選 SpringMVC 和 WebApplication ,點擊Next
  • 填寫 Project name : hello
  • 點擊 Finish
  • IDEA 會自動下載所需的 SpringMVC 的 jar 包

2. 代碼編寫

代碼參考 《Spring 實戰》(第四版),本文和書中代碼略有差別java

刪除不須要的配置文件

  • 刪除 WEB-INF 下的 web.xml
  • 刪除 WEB-INF 下的 dispatcher-servlet.xml
  • 刪除 WEB-INF 下的 applicationContext.xml
  • 刪除 web 下的 index.jsp

編寫 JavaConfig 文件

  • 新建 package : com.yangrd.springmvc.config
  • 新建 配置文件 HelloWebAppInitializer.java
package com.yangrd.springmvc.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class HelloWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        System.out.println("getRootConfig");
        return new Class<?>[]{RootConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        System.out.println("getServletConfig");
        return new Class<?> []{WebConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        System.out.println("getServletMappings");
        return new String[]{"/"};
    }
}

複製代碼
  • 新建配置文件 RootConfig.java
package com.yangrd.springmvc.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@ComponentScan(basePackages = {"com.yangrd.springmvc"},
        excludeFilters = {@ComponentScan.Filter(type= FilterType.ANNOTATION,value = EnableWebMvc.class)})
public class RootConfig {
}

複製代碼
  • 新建配置文件 WebConfig.java
package com.yangrd.springmvc.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
@ComponentScan("com.yangrd.springmvc.controller")
public class WebConfig extends WebMvcConfigurerAdapter {
    @Bean
    public ViewResolver viewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".html");
        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;
    }
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer){
        configurer.enable();
    }
}
複製代碼

編寫 Controller

  • 新建 package : com.yangrd.springmvc.controller
  • 新建 文件 HelloController.java
package com.yangrd.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import static org.springframework.web.bind.annotation.RequestMethod.GET;

/** * */
@Controller //聲明爲一個控制器
public class HelloController {
    @RequestMapping(value = "/home",method = GET)//處理對 「/」 的 GET 請求
    public String hello(){
        return "hello"; //邏輯視圖名爲hello
    }
}

複製代碼

編寫 view 文件

  • 在 WEB-INF 下新建文件夾 views
  • views 文件夾下新建 hello.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello</title>
</head>
<body>
    hello world
</body>
</html>
複製代碼

3. Tomcat 的配置和啓動

配置tomcat服務

  • 點擊 IDEA 右上角 綠色的小錘子圖標旁的 Add Configuration...
  • 在彈出頁面中,點擊加號
  • 選擇 Tomcat Server - Local
  • 填寫 Name : helloServer
  • 點擊 Deployment - 點擊 + ,選擇 Artifact
  • 點擊 Apply, OK

將Sping MVC 相關包放到 Web 工程 中的 lib 下

  • File - Project Structure...
  • 選擇 Artifacts
  • 在右側的 Available Elements 中 hello 下 有兩個 Spring 的jar上,右鍵 選擇 `Put into /WEB-INF/lib
  • 點擊 Apply - OK

啓動tomcat

  • 這是啓動tomcat 會報錯
Error:(5, 8) java: 沒法訪問javax.servlet.ServletException
  找不到javax.servlet.ServletException的類文件
複製代碼

這時須要添加 javax.servlet-apiweb

4. 測試

瀏覽器訪問 http://localhost:8080/homespring

顯示api

hello world瀏覽器

相關文章
相關標籤/搜索