SpringBoot学习(一):Springboot创建MVC-Web项目入门

org.springframework.boot

spring-boot-starter-parent

2.0.5.RELEASE

<java.version>1.8</java.version>

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-tomcat

provided

javax.servlet

jstl

org.apache.tomcat.embed

tomcat-embed-jasper

provided

org.springframework.boot

spring-boot-maven-plugin

这个POM文件有几个重要的事情。第一个是指定maven构建将创建WAR存档的行:

war

**第二个是POM文件具有父POM依赖性。**这允许下载许多Spring非Spring依赖项并将其链接到此项目中:

org.springframework.boot

spring-boot-starter-parent

2.0.5.RELEASE

三个是将Java编译设置为使用JDK 1.8的属性定义:

<java.version>1.8</java.version>

最后一个是使用Spring Boot maven插件进行编译和打包:

org.springframework.boot

spring-boot-maven-plugin

依赖项部分定义了此应用程序所需的额外依赖项。我需要的是Spring MVC,并作为J2EE Web应用程序运行。添加的依赖项用于编译JSP视图和运行嵌入式应用程序服务器。

主程序入口

接下来,开始我们程序编码。spring boot项目,程序都有必须有一个入口主类,以下是主类的完整源代码:

package org.hanbo.boot.app;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication

public class App extends SpringBootServletInitializer {

@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder appBuilder) {

return appBuilder.sources(App.class);

}

public static void main(String[] args) throws Exception {

SpringApplication.run(App.class, args);

}

}

该App类从SpringBootServletInitializer扩展而来。它能被Spring Framework识别,并将类App作为传统的WAR包进行初始化和执行。它还告诉Spring Framework将有WEB-INF文件夹及其中的资源供使用。

**在App类中,有一个名为configure()的受保护方法。**它用于指定任何特定于应用程序的配置。它只有一行,它接受App类的类型并创建一个SpringApplicationBuilder对象并返回。这样做的是,创建的SpringApplicationBuilder对象将自动扫描App类,它所在的包,以及任何带注释的类的子包,以及包含Spring配置的注释。然后它将基于这些配置构建Spring应用程序。这是按惯例进行集成的典型示例。并且一切都通过依赖注入耦合。

静态main方法只有一行,它将类App的类型和任何其他命令行参数传递给SpringApplication.run()。在幕后,这门课做了很多。它将隐式地对当前包和所有子包进行组件扫描。如果需要,开发人员还可以添加其它路径包为扫描目标。开发人员可以为所需的任何其他配置添加额外的注释。对于这个简单的程序,只有MVC控制器类可以处理用户对页面的请求。

MVC控制器

接下来是我们的MVC控制器类。这是一个非常简单的类,只有一个方法可以处理来自用户的HTTP GET请求,并带有一些查询参数。它通过使用JSP页面作为视图来响应。源代码如下:

package org.hanbo.boot.app.controllers;

import org.springframework.stereotype.Controller;

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

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

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.servlet.ModelAndView;

@Controller

public class HelloController {

@RequestMapping(value = “/meow”, method = RequestMethod.GET)

public ModelAndView hello(@RequestParam(“sayit”) String sayit) {

ModelAndView retVal = new ModelAndView();

retVal.setViewName(“testme”);

retVal.addObject(“mymessage”, sayit);

return retVal;

}

}

类中代码没有什么新鲜的。也就是说,该控制器类的定义与任何Spring MVC控制器的定义相同。我们简单走读一下类实现:

类用@controller注释:表示它是一个控制器类。

类只有一个方法来处理HTTP GET请求。它用@requestmapping注释。注释定义了请求的子路径以及它可以处理的http方法get请求。

方法创建一个ModelAndView对象并返回。视图页面称为“testme”。数据模型只是一个将显示在页面上的字符串。

该方法接受一个参数,该参数来自查询参数,称为“sayit”。

整个类的功能,就是当用户在浏览器地址栏输入以下路径时,进行响应处理:

http://localhost:8080/meow?sayit=This+is+pretty+crazy

为了让这个控制器按预期工作,还需要一些额外的配置。它在application.properties文件中完成。

Application.properties属性文件

application.properties需要指定视图模板文件的前缀和后缀。

如果您做过spring mvc项目,或者你知道,web项目需要创建和配置一个org.springframework.web.servlet.view.internalResourceViewResolver类型的对象,而这个对象需要指定两个属性:

spring.mvc.view.prefix=/WEB-INF/jsp/

spring.mvc.view.suffix=.jsp

意思是应用程序在“WEB-INF/JSP/”文件夹中查找视图模板。文件扩展名是“.jsp”

ok,现在我们已经有了主程序入口类、控制器类和内部资源视图解析器的设置。最后一块是视图模板。

JSP模版

本教程的视图模板非常简单,只有一个JSP文件演示如何显示视图模型中的数据:

<%@ taglib prefix=“spring” uri=“http://www.springframework.org/tags”%>

<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>

<c:url value=“/assets/css/index.css” var=“jstlCss”/>

What did you say?

I said: "${mymessage}."

在这个JSP文件中,有三件事:

有级联样式表文件。它是一个静态文件,通过JSTL标记添加。这要求JSTL库已经正确地引入到了项目中。

视图模型只有一个元素,并通过$mymessage添加到视图中。

在HTML内容的末尾添加了一个javascript文件,加载后将执行该文件。这是为了演示在这个项目中静态文件的使用。

让示例应用程序提供静态内容是非常重要的。它提供了超越Spring MVC的方法——静态页面和javascript可用于单页Web应用程序。而且,使用Spring引导很容易获得静态内容,后面会再解释这一点。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
转存中…(img-UNnhreim-1714955613072)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 15
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值