目录
一、软件安装
需要安装的软件是idea专业版,刚使用的时候可以使用30天,后面可以找方法去破解。
安装的步骤很多博主都讲过,这里就不再重复了。
IntelliJ IDEA 下载安装及配置使用超详细图文教程_idea下载安装配置教程-CSDN博客
二、软件的简单了解
在新建项目的时候,首先需要找到setting修改settings.xml这个文件的,默认路径在C盘,这里老师发了个文件,修改之后我放到了D:\moven_repository这个路径下,文件在上方显示。
该文件需要修改的内容如下:
然后修改setting中的:
修改完成之后,
三、基础知识应用
1、四个常用注释
java
@RestController //用在类上面的,要求类在浏览器访问就用这个
@RequestMapping //在后面添加一个字符串,用作路径的前缀,从而使得路径不易重复
@Autowired //对象类型,自动装配
@Value //简单类型赋值
以下是对这四个注解(注释)的简单解释(来自文心一言):
@RestController
: 这是一个特殊的@Controller
注解,用于表明该类是一个RESTful Web服务的控制器。它告诉Spring框架,此类中的方法返回的是领域对象,而不是视图,通常这些对象会被自动转换为JSON或XML格式的响应。@RequestMapping
: 用于映射web请求(如HTTP GET, POST等)到特定的处理器函数、方法或类。你可以使用它来定义URL模式、HTTP方法、请求参数等。@Autowired
: 这是Spring框架提供的依赖注入注解。它告诉Spring自动装配bean的依赖关系。当Spring发现@Autowired
注解时,它会在应用上下文中查找一个匹配的bean,并将其注入到被注解的字段、构造函数或方法中。@Value
: 用于注入值(如配置文件中的属性)到字段、方法参数或方法返回值。你可以使用它来读取如.properties
或.yml
等配置文件中的属性值,并将其注入到Spring管理的bean中。
注意:@RequestMapping
通常与@GetMapping
、@PostMapping
等一起使用,或者直接放在方法上来定义具体的请求映射。而在类上使用@RequestMapping
时,它通常用于为该类下的所有方法提供一个共同的路径前缀。
2、尝试新建类
新建类的时候,在命名时写test.demo1表示新建一个包test,然后在这个包下新建一个.java文件:
使用这种方法就不用专门去新建包,然后再写文件了。
新建完成之后,就可以在这个里面进行Java代码的编写了。
首先使用两个注释进行一个最简单的代码编写,编写之后再浏览器显示返回值:
java
@RestController//有该注解,就可以让下面的类在浏览器访问
public class demo1 {
@RequestMapping("/helloYa") //这里指定路径,自己定义就好
public String hello(){
return "hello Ya";//会将这个返回到浏览器中
}
}
然后在地址栏中输入
java
localhost:8080/helloYa //默认端口8080,这里可能会有端口冲突,这里就需要解决一下端口冲突的问题
端口冲突的解决查看这篇文章(侵权联系删除):
WIN10 关闭占用某一端口号的进程_win10如何关闭指定端口的程序-CSDN博客
最终成功解决冲突之后,显示如下:
上面是直接在新建的类中进行操作,也可以引用其他的类,比如在这里我们新建一个Student类,并添加相应的方法和属性:
java
package com.example.demo1.test;
public class student {
private int id;
private String name;
private int age;
public String test(){
System.out.println("加油!");
return "";
}
// public int getId() {
// return id;
// }
public void setId(int id) {
this.id = id;
}
public void setName(String name){
this.name=name;
}
public void setage(int age){
this.age=age;
}
}
在demo1中使用@Autowired进行对象类型的自动匹配时,必须要先在所要引用的类中使用
@Component注解。
java
@Component //泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注,标识为一个Bean。
注解之后,就进行@Autowired和@Value两个注解的使用
java
package com.example.demo1.test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class demo1 {
@Autowired
private student student;
@Value("QSJ")
private String name;
@RequestMapping("/helloYa") //这里指定路径
public String hello(){
System.out.println(name);
student.test();
return "hello Ya";//会将这个返回到浏览器中
}
}
在服务器的控制台显示:
在浏览器中显示:
上面简单使用了一下@Autowired和@Value两个注解,下面学习如何将服务器中写的数据传给浏览器。
3、控制反转(IOC容器)
在之前使用student类的时候需要自己new一个相应的对象,但是Spring会自动new一个对象,然后放到它的容器中,使用的时候直接用就可以了。
4、返回数据给浏览器
引用student对象,将该对象的某个值或者多个值从浏览器输出。
(1)显示某个值
java
@RequestMapping("/get1")
public student get1(){
student stu = new student();
stu.setId(1997);
stu.setName("QSJ");
stu.setage(24);
return stu;
}
上面的这串代码没有错,错误的是student类的错误,需要添加上所有属性的get函数:
java
package com.example.demo1.test;
import org.springframework.stereotype.Component;
@Component
public class student {
private int id;
private String name;
private int age;
public String test(){
System.out.println("加油!");
return "";
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge() {
return age;
}
public void setAge(int age){
this.age=age;
}
}
最终显示结果如下:
(2)显示多个值
使用List容器和ArrayList容器:
java
@RequestMapping("getAll1")
public List<student> getAll(){
student stu1 = new student();
stu1.setId(1997);
stu1.setName("QSJ1");
stu1.setAge(24);
student stu2 = new student();
stu2.setId(1998);
stu2.setName("QSJ2");
stu2.setAge(25);
student stu3 = new student();
stu3.setId(1999);
stu3.setName("QSJ3");
stu3.setAge(26);
List<student> list1 = new ArrayList<student>();
list1.add(stu1);
list1.add(stu2);
list1.add(stu3);
return list1;
}
最终显示结果:
5、浏览器传回数据给服务器
忘记咋传的了。。。。
出错:
易错点
- 注解的首字母都是大写的,写了之后回车可以自动引用相应的包,若拼写错误或者没有引用包会出错;
- 虽然在定义类的时候,get相关的函数不会显示被应用,但是在set相关的函数中使用了this,所以get函数还是需要写的,否则在传给浏览器的时候不会显示任何内容;
- 再修改代码之后,需要重新运行代码才会在正确的情况下显示相应的内容;