第一个Spring-boot项目创建与测试

一、项目搭建

Spring-boot的主要搭建方式有两种,步骤基本一致:

方式一:使用官网在线生成

https://start.spring.io/

方式二:使用idea创建
这里主要介绍第二种方式:
1.在idea中:File–>New–>Project,创建新项目
在这里插入图片描述

2.选择Spring Initializr 路径设置默认,如果长时间未创建成功,可尝试第二种,填入:http://start.spring.io。
在这里插入图片描述
3.点击Next 等待几秒,编辑分组,名称,项目类型,语言,包类型,jdk版本,其他默认即可
在这里插入图片描述
注:这一步其实和官网创建项目一致,不过官网在右侧可以直接导入jar包依赖。
4.点击Next 选择Web,勾选Spring Web,这一步主要是导入jar包依赖,新项目只需要这一个就可以,后续有需要可在pom.xml文件中导入依赖。
在这里插入图片描述
5.点击Next 设置项目名称和源码存储位置,点击Finish创建成功。等待基础配件下载成功后,即可书写测试类。
在这里插入图片描述

二、Spring-boot 常用的几个注解:

1、@Controller
作用:标记当前类是一个控制器,返回页面时,如果是json数据,需在接口上使用@ResponseBody才可以。

2、@RestController
作用:标记当前类是一个控制器,返回Json数据
@RestController = @Controller+@ResponseBody

3、RequestMapping
作用:路由映射,用于类上做1级路径;用于方法上做子路径

4、SpringBootApplication
作用:标记当前应用是SpringBoot应用,内部包含多个注解
@SpringBootApplication =
@Configuration+@EnableAutoConfiguration+@ComponentScan

三、静态文件的加载顺序和配置

静态文件包含:js、HTML、css、image、tpl 等等

1、springboot中静态默认加载顺序
resources>
static>
pubilc>
springboot默认从上到下的顺序查找资源,若找到,则直接返回,否则顺序找下去。

2、官方提供的静态文件默认值配置(默认生效,无需配置)

spring.web.resources.static-locations =
classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

3、自定义静态路径的访问
需明确配置spring.web.resources.static-locations 并且需增加自定义路径,比如添加一个名为user的文件包,需要在application.properties文件中添加:

spring.web.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/user/

使该文件包下的文件生效。

四、访问templates中的资源

访问templates中的HTML

1、需要引入thymeleaf依赖(在pom.xml配置文件中可以手动或者借助idea引入)

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

2、通过Controller路径跳转访问
注:如果没有应用thymeleaf模板引擎,最好将依赖注释掉,否则可能会出现报错。

五、idea热部署

1、引入依赖 (可以手动或者借助idea引入)

 <!--idea热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

2、修改spring-boot-maven-plugin插件,加入如下内容

<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork><!--避免热部署失败-->
                </configuration>
			</plugin>
		</plugins>
	</build>

3、idea配置

3.1 settings–Compiler–勾选“Build Project automatically”。
3.2 shift+ctrl+alt+/ – 选择“Registry”–勾选“compiler.automake.allow.when.app.running”
3.3 重启idea

六、测试类

1.在java文件夹下的DemoApplication同级创建一个Controller文件夹,新建一个HelloController类,

package com.springboot.demo.Controller;

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

@RestController
public class HelloController {

    @RequestMapping("test")
    public String test1(){
        return "Hello spring-boot";
    }
}

2.运行项目
3.在浏览器中输入:localhost:8080/test,即可获取结果。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 添加依赖 首先,需要在 pom.xml 文件中添加 spring-boot-starter-websocket 依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> ``` 2. 创建 WebSocket 配置类 创建一个 WebSocketConfig 类,用于配置 WebSocket 相关的组件: ``` @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new SocketHandler(), "/socket").setAllowedOrigins("*"); } } ``` 其中,SocketHandler 是自定义的一个 WebSocket 处理器类。 3. 创建 WebSocket 处理器 创建一个 SocketHandler 类,用于处理 WebSocket 的连接、断开、消息发送等操作: ``` @Component public class SocketHandler extends TextWebSocketHandler { // 存储所有在线的 WebSocket 连接 private static final Map<String, WebSocketSession> sessions = new ConcurrentHashMap<>(); @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { sessions.put(session.getId(), session); } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { sessions.remove(session.getId()); } @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { // 处理消息 } } ``` 在 afterConnectionEstablished 方法中,将新建立的 WebSocket 连接添加到 sessions 中;在 afterConnectionClosed 方法中,将关闭的 WebSocket 连接从 sessions 中移除;在 handleTextMessage 方法中,处理收到的文本消息。 4. 实现多个房间群聊 为了实现多个房间的群聊,可以在 SocketHandler 中添加一个 Map,用于存储每个房间中的在线用户: ``` @Component public class SocketHandler extends TextWebSocketHandler { // 存储所有在线的 WebSocket 连接 private static final Map<String, WebSocketSession> sessions = new ConcurrentHashMap<>(); // 存储每个房间中的在线用户 private static final Map<String, Set<String>> rooms = new ConcurrentHashMap<>(); @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { sessions.put(session.getId(), session); } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { sessions.remove(session.getId()); for (Map.Entry<String, Set<String>> entry : rooms.entrySet()) { String room = entry.getKey(); Set<String> users = entry.getValue(); users.remove(session.getId()); sendMessage(room, users.size() + " 人在线"); } } @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { String payload = message.getPayload(); String[] parts = payload.split(":"); String room = parts[0]; String content = parts[1]; if (!rooms.containsKey(room)) { rooms.put(room, new HashSet<>()); } Set<String> users = rooms.get(room); users.add(session.getId()); for (WebSocketSession s : sessions.values()) { if (users.contains(s.getId())) { s.sendMessage(new TextMessage(content)); } } } private void sendMessage(String room, String message) throws IOException { Set<String> users = rooms.get(room); if (users != null) { for (WebSocketSession s : sessions.values()) { if (users.contains(s.getId())) { s.sendMessage(new TextMessage(message)); } } } } } ``` 在 handleTextMessage 方法中,根据收到的消息中的房间名,将当前连接加入到对应的房间中,并向该房间中的所有在线用户发送消息。 在 afterConnectionClosed 方法中,将当前连接从所有房间中移除,并向这些房间中的在线用户发送消息。 5. 测试 启动应用程序后,打开两个浏览器窗口,分别连接到 http://localhost:8080/index.html。 在第一个窗口中,输入房间名和用户名,点击“加入”按钮,进入该房间。在第二个窗口中,输入相同的房间名和不同的用户名,点击“加入”按钮,也进入该房间。 在任意一个窗口中,输入消息并按回车键,即可将消息发送到该房间中的所有在线用户。在另一个窗口中,也可以看到这些消息。同时,窗口中会显示当前房间中的在线用户数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值