文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

在这篇文章中, 我们将使用Maven开发一个带有Spring Boot所提供的内嵌tomcat的Spring MVC 应用程序示例。 源码可以在此处下载。

环境设置

  1. JDK 8

  2. Spring Boot

  3. Intellij IDEA/Eclipse

  4. Maven

Maven 依赖

  • spring-boot-starter-parent: 提供了有用的Maven默认值。 同时提供了依赖关系管理,可以省略已存在依赖的版本标签。

  • spring-boot-starter-web:  包括了创建一个web应用程序的所有依赖。 这将避免列出不同的Spring常见的项目的版本(译注:项Web项目可能需要添加大量的依赖)。

  • spring-boot-starter-tomcat: 默认情况下,启用一个内嵌的Apache Tomcat 7实例。 我们使用了我们定义的版本重写了这一点。 如果你需要部署War包在其他独立版本的Tomcat服务器上也可以标明。

  • tomcat-embed-jasper: 提供.jsp文件加载。

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.3.RELEASE</version>
</parent>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--<scope>provided</scope>-->
</dependency>

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>

<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<!--<scope>provided</scope>-->
</dependency>
</dependencies>
第 1 段(可获 1.6 积分)

Spring Bean配置

SpringBootServletInitializer使用web.xml启用Servlet 3.0中使用的进程 EnableAutoConfiguration。 这将有助于Spring Boot根据我们添加的JAR依赖自动识别如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,因此自动配置将推测我们正在开发一个Web应用程序并相应地设置Spring。

@Configuration
@ComponentScan(basePackages = "com.developerstack")
@Import({BeanConfig.class, WebConfig.class})
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer {

    private static Class applicationClass = Application.class;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(applicationClass);
    }

}
第 2 段(可获 0.74 积分)

以下配置负责初始化基于Spring的Web应用程序。我们已经实现了WebApplicationInitializer.java来以编程方式配置ServletContext。

public class ApplicationInitializer implements WebApplicationInitializer {

    public void onStartup(ServletContext container) throws ServletException {

        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.setServletContext(container);
        ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(ctx));
        servlet.setLoadOnStartup(1);
        servlet.addMapping("/");
    }
}
第 3 段(可获 0.26 积分)

默认情况下,Spring Boot将从类路径中的/ static(或/ public或/ resources或/ META-INF / resources)目录或从ServletContext的根目录提供静态内容。但在这里,我们已经定义了静态内容的自定义文件夹结构,因此需要告诉Spring启动如何呈现静态内容。

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/*.js/**").addResourceLocations("/ui/static/");
        registry.addResourceHandler("/*.css/**").addResourceLocations("/ui/static/");
    }

}
第 4 段(可获 0.7 积分)

现在让我们定义我们的控制器来为客户端提供响应。这里我们硬编码一些用户详细信息。

@Controller
public class DashboardController {

    @RequestMapping(value = "/dashboard", method = RequestMethod.GET)
    public ModelAndView dashboard() {
        ModelAndView model = new ModelAndView();
        model.addObject("users", getUsers());
        model.setViewName("dashboard");
        return model;
    }

    private List getUsers() {
        User user = new User();
        user.setEmail("johndoe123@gmail.com");
        user.setName("John Doe");
        user.setAddress("Bangalore, Karnataka");
        User user1 = new User();
        user1.setEmail("amitsingh@yahoo.com");
        user1.setName("Amit Singh");
        user1.setAddress("Chennai, Tamilnadu");
        User user2 = new User();
        user2.setEmail("bipulkumar@gmail.com");
        user2.setName("Bipul Kumar");
        user2.setAddress("Bangalore, Karnataka");
        User user3 = new User();
        user3.setEmail("prakashranjan@gmail.com");
        user3.setName("Prakash Ranjan");
        user3.setAddress("Chennai, Tamilnadu");
        return Arrays.asList(user, user1, user2, user3);
    }

}
第 5 段(可获 0.26 积分)

客户端

在客户端,将有一个传统的JSP页面,它将使用JSTL显示模型对象。

运行应用程序

有两种方法可以运行此应用程序。

  1. 我们可以定义spring-boot-starter-tomcat的<scope>,并使用Maven命令创建.war文件,将其部署到独立的Tomcat或作为java应用程序运行Application.java。

  2. 使用URL http:// localhost:8080 / dashboard。这将执行dashboard()方法,dashboard.jsp页面将显示如下:

spring boot example result

第 6 段(可获 1.14 积分)

文章评论

tangmisi
关于java的秒被翻完,果然学java的人最多啊