【MCA】Java互联网高级架构师(一)

【MCA】Java互联网高级架构师(一)

课程1-Java高级互联网架构师-SpringBoot入门

网盘download:【MCA】Java互联网高级架构师【马士兵】提娶吗:xb2kphp

课程主要内容

  • MVC架构思想
  • 使用STS构建SpringBoot项目
  • 使用SpringBoot构建Mvcweb项目
  • MVCWeb项目中的注入
  • 热部署VcmL46679910

介绍

SpringBoot主要解决的是在微服务的架构下简化配置(有快速配置)、先后端分离、快速开发html

优势:前端

  • 提供了快速启动入门
  • 开箱即用、提供默认配置
  • 内嵌容器化web项目
  • 没有冗余代码生成和xml配置要求

2.运行 D emo

建立项目

建立SpringBoot项目的几种方式:web

  • 官网的InitializrVcmL46679910
  • 使用Eclipse、STS、Idea等IDE建立Maven项目并引入依赖
  • 使用STS插件的SpringInitializr建立项目

访问start.spring.io/  进入Spring项目Initializrspring

image.png

 

生成下载demo.zip后端

导入项目

1.I mport一个Maven项目

image.png  

2 . 选择要导入的文件

  image.png

3 . 项目骨架

  image.png

启动项目

  • 直接run启动程序里的Main()方法
  • 安装过STS插件或使用STS能够在项目上右键RunAS->Spring Boot APP

运行成功提示信息:api

image.png  

若是运行报错,请参照常见问题。tomcat

个性化

修改启动banner

在resources目录下新建banner.txtrestful

[ 英文](www.network-science.de/ascii/ )markdown

[图片](www.degraeve.com/img2txt.php )

 

Eclipse的皮肤

菜单栏中

Help -> EclipseMarketplace

搜索Theme

image.png  

傻瓜式安装这个,安装完成会提示重启,跟随指引选择喜欢的风格。

  image.png

简单使用

application.properties

把全部的配置全放在这个文件里,方便统一管理,maven也能够作到

修改tomcat端口

server.port=90

修改项目路径

server.servlet.context-path=/demo  VcmL46679910)  

  image.png

多个入口main方法,打包以后找不到入库类

   <plugins>

      <plugin>  

          <groupId>org.springframework.boot</groupId>  

          <artifactId>spring-boot-maven-plugin</artifactId>  

                <configuration>  

                    <mainClass>com.mashibing.MyApp</mainClass>  

                </configuration>  

            </plugin>  

        </plugins>**V**(**cmL46679910**)

</build>

复制代码

 

HelloWorld

RestController

RestController = @Controller+@ResponseBody

 

一个效果VcmL46679910

image.png  

 

public class MyAppController {

 

@RequestMapping("/")

public  Map<String, String>  index() {

Map<String, String> map = **new** HashMap<>();

 

map.put("aaa", "bbb");

map.put("aaa", "bbb");

map.put("aaa", "bbb");

map.put("aaa", "bbb");

**return** map;

}

复制代码

 

使用thymeleaf模板引擎

P om.xml引用

org.springframework.boot

spring-boot-starter-thymeleaf

Controller代码
public class IndexController {

 

@RequestMapping("/")

**public** String index(ModelMap map) {

 

// 加入一个属性,用来在模板中读取

map.addAttribute("msg", "nihao~");

return模板文件的名称,对应src/main/resources/templates/index.html

 

**return** "index";

}
复制代码
模板文件代码

<h1 th:text="${msg}">hi!</h1> VcmL46679910)  

稍微复杂的restful api应用

UserRestfulController

@RestController

**public** **class** UserRestfulController {

 

**static** Map<Long, User> *users* = Collections.*synchronizedMap*(**new** HashMap<Long,User>());

@RequestMapping(value="/User",method=RequestMethod.***GET***)

**public** List<User> getUserList(){

ArrayList<User> list = **new** ArrayList<>(*users*.values());

**return**  list;

 

}

 

@RequestMapping(value="User",method=RequestMethod.***POST***)

**public** String addUser(@ModelAttribute User user) {

*users*.put(user.getId(), user);

**return** "addUser Success";

 

}

}

**public** **class** User {

 

**private** Long id;

**private** String loginName;

**private** String password;

**private** String nickName;
复制代码

User

 

private Long id;

private String loginName;

private String password;

private String nickName;

复制代码

注入Service

UserRestfulController

@Autowired

**private** UserService userSrv;

@RequestMapping(value="/User",method=RequestMethod.***GET***)

**public** List<User> getUserList(){

 

**return**  userSrv.getUserList();

}

 

@RequestMapping(value="User",method=RequestMethod.***POST***)

**public** String addUser(@ModelAttribute User user) {

String msg = userSrv.addUser(user);

**return** msg;

}

复制代码

UserService

**public** **class** UserService {

**static** Map<Long, User> *users* = Collections.*synchronizedMap*(**new** HashMap<Long,User>());

 

**public** List<User> getUserList() {

ArrayList<User> list = **new** ArrayList<>(*users*.values());

**return** list;

}

 

**public** String addUser(User user) {

*users*.put(user.getId(), user);

**return** "addUser Success";

}

}

复制代码

前端模板显示

VcmL46679910

 

  <table>

    <tr>

      <th>NAME</th>

      <th>loginName</th>

      <th>nickName</th>

    </tr>

    <tr th:each= *"user : ${list}"* >

      <td th:text= *"${user.id}"* >id</td>

      <td th:text= *"${user.loginName}"* >loginName</td>

      <td th:text= *"${user.nickName}"* >nickName</td>

    </tr>

  </table>

  <p>

    <a href= *"../home.html"* th:href= *"@{/}"* >Return to home</a>

  </p>

 
复制代码