JavaWeb学习-Spring全家桶(二)

文件结构&热部署

pom.xml

image-20230110175103696

父级项目。一些maven的依赖会由它提供,这里显示的是spring boot的

这些是依赖,这几个是默认的,提供的是spring mvc的功能

<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>

看看这个其他的文件结构

这个包是这样的规则

image-20230110175552616

resources顾名思义

image-20230110175727300

可以看到主要负责前端的操作,但是对于前后端分离的vue开发的框架,这个一般会被弃用

启动类负责启动,启动的话终端可以看到启动的端口

image-20230110180351037

如果访问不到对应路由会这样回显

image-20230110180431093

这也算是springboot项目的一个指纹特征

代码修改必须stop and rerun,否则需要实现springboot热部署

可以使用spring-boot-devtools实现

pom.xml添加

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

然后

image-20230110181104436

spring.devtools.restart.enabled=true
spring.devtools.restart.additional-paths=src/main/java

最后

image-20230110181222896

新版的话register那里换成改这个,setting-高级设置

image-20230110182055992

之后凡是修改监听的path里面的东西,只要按下ctrl+s就会重启项目,热部署完成

对了,可以这样看maven下载的依赖

image-20230110181002280

spring controller

springboot 注解@RestController 接受处理页面和数据,@Controller处理请求数据

默认情况下@RestController 会将返回的对象数据转化为JSON格式

MVC功能:

image-20230110195219479

@requestMapping主要负责URL的路由映射,可以添加再Controller类或者具体方法上,常用的属性如下:

image-20230110202658848

默认第一个参数value,它支持正则的写法

@RequestMapping(value = "/*",method = RequestMethod.GET)
这个也可以用一种简练的写法
@GetMapping(value = "/*")

处理参数

  • 由于路由对应的方法要接受参数,所以函数要加上输入参数
    @GetMapping(value = "/*")
    public String hello(String name) {
        System.out.println(name);
        return "Hello Spring Boot! jndi";
    }

之后/?name=123

可以控制台看到参数

但是这个东西必须保证传入的参数名称name和这个输入函数的形参名称name一致,如果你/?nickname=123,那就捕捉不到该参数了,如果参数名称很长,会不方便业务代码的书写

那么可以再加一个注解@RequestParam,这就相当于n = $_REQUEST['name']了,required = false 是不需要该参数时仍然可以调用hello方法,可以看到,参数名称不那么受限了

    @GetMapping(value = "/*")
    public String hello(@RequestParam(value = "name",required = false) String n) {
        System.out.println(n);
        return "Hello Spring Boot! jndi";
    }@RequestParam("name")

POST的话当然也是如法炮制,但是一旦参数多了可以有如下简洁的写法:

就是传入一个类,把类当作参数就好了

user.class

package com.example.demo.identy;

public class User {
    private String username;
    private String password;

    public String getPassword() {
        return password;
    }
    public String getUsername() {
        return username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public String toString() {
        return "username: " + username + "\npassword: " + password + "\n";
    }
}

HelloController

package com.example.demo;

import com.example.demo.identy.User;
import org.springframework.web.bind.annotation.*;

/**
 * 测试控制器
 *
 * @author: thai
 * @create: 2023-1-9
 */
@RestController
public class HelloController {

    @GetMapping(value = "/*")
    public String hello(@RequestParam(value = "name",required = false) String n) {
        System.out.println(n);
        return "Hello Spring Boot! jndi";
    }
    @RequestMapping(value = "/*",method = RequestMethod.POST)
    public String hello2(User user) {
        System.out.println(user);
        return "POST";
    }
}

成功收到数据

image-20230110211748049

假如收json数据需要

    @RequestMapping(value = "/*",method = RequestMethod.POST)
    public String hello3(@RequestBody User user) {
        System.out.println(user);
        return "POST but json";
    }

可以试着发发看{"username":"miku","password":"op"}

注意json是有数据类型的,数据类型要和user类里面参数对应

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇