一般分为View层、Controller层、Service层、Mapper层、pojo层。
View层:视图层,根据接到的数据展示页面给用户
Controller层:响应用户需求,决定用什么视图,需要准备什么数据来显示。Controller层负责前后端交互,接收前端请求,调用Service层,接收Service层返回的数据,最后返回具体的数据和页面到客户端
Service层:Service层也可以分为三个方面
(1)接口:用来声明方法
(2)继承实现接口
(3)impl:接口的实现(将mapper和service进行整合的文件)
Service层存放业务逻辑处理,有一些关于数据库处理的操作,但是不是直接和数据库打交道,有接口,也有接口的实现方法,在impl实现接口类中需要导入mapper类,mapper层是直接与数据库进行操作的。
Mapper层:也可以称为DAO层,是数据库CRUD的接口,只有方法名,具体实现在mapper.xml文件中,对数据库进行数据持久化操作(把数据放到持久化的介质中,同时提供CRUD操作)
src/main/resource文件夹中的mapper.xml文件,里面存储的是真正的数据库CRUD语句
Pojo层:存放实体类,与数据库中的属性基本保持一致,一般包括getter、setter、toString方法(未使用插件lombok的情况下)。
原文链接:https://blog.csdn.net/huzia/article/details/124343901
@Controller 和@RestController两种注解来表示此类负责接收和处理http请求。
@Controller会返回一个页面,前后端不分离,所以该注解不推荐使用。
@Controller
public class HelloController{
@RequestMapping("/hello")
public String index(ModelMap map){
map.addAttribute(attributeName:"name",attributeValue:"zhangsan");
return "hello"
}
}
返回的对象数据转为JSON格式,@RequestMapping可以添加在CONTROLLER类上
@RestController注解有两个目的。首先他是一个类似于@controller和@Service的构造型注解,能够让类被组件扫描功能发现。但是,与REST最相关在于@RestController会告诉Spring,控制器中所有的处理器方法的返回值都要直接写入响应体中,而不是将值放到模型中并传递给一个视图以便于渲染。
作为替代方案就是@Controller加上@Response。
让类变成控制器,能够开始接收客户端的请求了,具体怎么接收,在类里写好方法。
用get访问这个方法,需要写好连接地址
@GetMapping("/hello")
即在这个地方接收get请求http://localhost:8080/hello
@RequestMapping(value = "/hello",method = RequestMethod.GET)
这两个方法相同的意思,都是只能接收get
首先安装软件APIPOST
@RestController
public class HelloController {
//http://localhost:8080/hello
//http://localhost:8080/hello?nickname=zhangsan
//http://localhost:8080/hello?nickname=zhangsan&phone=123
// @GetMapping("/hello")
@RequestMapping(value = "/hello",method = RequestMethod.POST)
public String hello(){
return "POST请求";
}}
@RestController
public class HelloController {
//http://localhost:8080/hello
//http://localhost:8080/hello?nickname=zhangsan
//http://localhost:8080/hello?nickname=zhangsan&phone=123
// @GetMapping("/hello")
@RequestMapping(value = "/hello",method = RequestMethod.POST)
public String hello(String username,String password){
System.out.println(username);
System.out.println(password);
return "POST请求";
}
}
package com.example.helloworld2.entity;
public class User {
private String username;
private String password;
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username=username''
}
public String getPassword(){
return password;
}
public void setPassword(){
this.password=password;
}
@Override
public String toString(){
return "User{" + "username='" + username + '\'' + "password='" +password + '\'' + '}';
}
}
注意:第一次用这个类,需要用alt+shift+enter进行导入这个user类生效,否则报错哟
package com.example.helloworld2.controller;
import com.example.helloworld2.entity.User;
import com.sun.org.apache.bcel.internal.generic.RETURN;
import org.springframework.web.bind.annotation.*;
@RestController
public class HelloController {
//http://localhost:8080/hello
//http://localhost:8080/hello?nickname=zhangsan
//http://localhost:8080/hello?nickname=zhangsan&phone=123
// @GetMapping("/hello")
@RequestMapping(value = "/hello",method = RequestMethod.POST)
//注意:第一次用这个类,需要用alt+shift+enter进行导入这个user类生效,否则报错哟
public String hello(User user){
System.out.println(user);
return "POST请求";
}
}
package com.example.helloworld2.controller;
import com.example.helloworld2.entity.User;
import com.sun.org.apache.bcel.internal.generic.RETURN;
import org.springframework.web.bind.annotation.*;
@RestController
public class HelloController {
//http://localhost:8080/hello
//http://localhost:8080/hello?nickname=zhangsan
//http://localhost:8080/hello?nickname=zhangsan&phone=123
// @GetMapping("/hello")
@RequestMapping(value = "/hello",method = RequestMethod.POST)
public String hello(@RequestBody User user){
System.out.println(user);
return "POST请求";
}
}