节制,是比仁慈更高尚的品德。|

subeipo

园龄:1个月粉丝:0关注:0

📂Java
🔖Java
2025-02-13 00:02阅读: 3评论: 0推荐: 0

Java笔记-14、Web后端基础 SpringBoot入门

  • 静态资源:服务器上存储的不会改变的数据,通常不会根据用户的请求而变化。比如:HTML、CSS、JS、图片、视频等(负责页面展示)。
  • 动态资源:服务器端根据用户请求和其他数据动态生成的,内容可能会在每次请求时都发生变化。比如:Servlet、JSP、Spring等(负责逻辑处理)。部署在Web服务器(Tomcat)上才能正常运行。
  • B/S架构:Browser/Server,浏览器/服务器架构模式。客户端只需浏览器,应用程序的逻辑和数据都存在服务器端。(维护方便)

SpringBoot项目创建

  1. 创建新模块,选择springboot,填写信息。
  2. 添加Web依赖,创建生成项目。
  • 新创建的项目中有一个类,叫做XXXApplication,这个类有注解@SpringBootApplication,意味着这个类是启动类/引导类,用于启动当前项目。
  • 新创建的项目结构是标准的Maven目录结构。在main-resource中有两个文件夹和一个文件。两个文件夹一个是static,用于存放静态页面;templates用于存放模板文件。还有一个核心文件,叫做application.properties,用于配置项目。

创建一个请求处理类-快速入门

  1. 在包下创建一个HelloController类。
  2. 给这个类添加注解@RestController,标明这个类是一个请求处理类。
  3. 定义一个方法,添加注解@RequestMapping("/hello")。这个方法用于接收前端发来的请求,请求路径为"/hello"
  4. 找到启动类进行Debug。控制台输出显示监听的端口为本地8080端口。
  5. 访问8080端口并携带数据,http://127.0.0.1:8080/hello?name=subeipo
  6. 查看请求处理结果。
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(String name){
System.out.println("HelloController.hello");
return "Hello " + name + " ~";
}
}

Spring官方脚手架连不上: Server URL改成 start.aliyun.com

离线创建SpringBoot项目

使用Spring Initializr的离线支持

  1. 下载依赖:
    首先,下载Spring Boot的依赖。从Spring Initializr网站下载所需的依赖。访问该网站,选择项目设置(如Spring Boot版本、项目类型等),然后点击“Generate”按钮。生成一个包含所有依赖的ZIP文件。
  2. 解压并使用:
    下载并解压ZIP文件,得到一个包含所有必需依赖的lib目录和pom.xml(对于Maven项目)或build.gradle(对于Gradle项目)文件。
  3. 使用IDE:
    如果使用的是IDE(如IntelliJ IDEA或Eclipse),可以直接导入这个项目。对于Maven项目,选择“Import Project”并选择pom.xml文件;对于Gradle项目,选择“Import Project”并选择build.gradle文件。

手动创建项目

  1. 创建项目:在idea中创建一个maven项目,正常填写项目的坐标信息。
  2. pom.xml中指定springboot的父工程。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
  1. 添加springboot项目的起步依赖以及maven插件。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.27</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
  1. 手动创建项目目录结构,通常包括src/main/javasrc/main/resources目录。还有对应的test目录。
  2. 创建启动类 SpringBootDemoApplication
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootWebQuickstartApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootWebQuickstartApplication.class, args);
}
}
  1. 在resources目录创建一个新的file文件,命名为application.properties

项目引入了Spring Web依赖,即上述第3点的starter依赖。包含了web应用开发和单元测试所需要的常见依赖。

补充

  • 请求数据的构成一般为请求行、请求头、请求体。GET一般乌请求体,POST有请求体。
  • 请求行指定了请求的方法、请求的路径以及HTTP版本。
  • Web服务器(Tomcat)对HTTP协议的请求数据进行解析,并封装到了HttpServletRequest类的对象里,在调用Controller方法的时候将这个对象传递给了该方法。程序员不必直接对协议进行操作,让Web开发更加便捷。
  • 相应数据的构成也分为三个部分,响应行、响应头和响应体。
  • 响应行指定了协议、状态码和对应描述。
  • 状态码大致分为五类。
  1. 1XX:响应中-临时状态码,表示请求已经接收,告诉客户端应该继续请求或者如果它已经完成则忽略它。
  2. 2XX:成功-表示请求已经被成功接收,处理已完成。
  3. 3XX:重定向-重定向到其他地方;让客户端再发起一次请求以完成整个处理。
  4. 4XX:客户端错误-处理发生错误,责任在客户端。如:请求了不存在的资源(404)、客户端未被授权、禁止访问等。
  5. 5XX:服务器错误-处理发生错误,责任在服务端。如:程序抛出异常(500)等。
  • Web服务器对HTTP协议的响应数据封装成HttpServletResponse类的对象,并在调用Controller方法的时候将对象传递给了该方法。这样,就使得程序员不必直接对协议进行操作,让Web开发更加便捷。
  • 注解@ResponseBody将controller返回值直接作为响应体的数据响应;返回值是对象/集合,自动转为json。注解RestController封装了@ResponseBody
// 一个读取文件数据并解析成JSON的例子
import cn.hutool.core.io.IoUtil;
import com.study.webproject01.pojo.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@RestController
public class UserController {
@RequestMapping("/list")
public List<User> list() throws Exception {
//1.加载并读取user.txt文件,获取用户
InputStream in = this.getClass().getClassLoader().getResourceAsStream("user.txt");
ArrayList<String> lines = IoUtil.readLines(in, StandardCharsets.UTF_8, new ArrayList<>());
//2.解析用户信息,封装User对象到List集合中
List<User> userList = lines.stream().map(line -> {
String[] parts = line.split(",");
Integer id = Integer.parseInt(parts[0]);
String username = parts[1];
String password = parts[2];
String name = parts[3];
Integer age = Integer.parseInt(parts[4]);
LocalDateTime updateTime = LocalDateTime.parse(parts[5], DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
return new User(id, username, password, name, age, updateTime);
}).collect(Collectors.toList());
//3.将List集合转换为JSON格式的字符串,并返回
return userList;
}
}

上述代码只是个例子,没有分层解耦合,不推荐这样写。分层解耦见下一个笔记。

本文作者:subeipo

本文链接:https://www.cnblogs.com/subeipo/p/18712332/java-bi-ji14web-hou-duan-ji-chu-springboot-ru-men

版权声明:本作品采用署名—非商业性使用—相同方式共享 4.0 协议许可协议进行许可。

posted @   subeipo  阅读(3)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起