SpringMVC(二)

Model

以Map方式进行存储,用于向作用域中存值。

注意:在Model中增加模型数据,若不指定key,则默认使用对象的类型作为key

java 复制代码
@Controller //控制器类
public class IndexController {
    @RequestMapping("/index3")
    public String index3(SmbmsUser smbmsUser, Model model){
        model.addAttribute("smbmsUser",smbmsUser);
        return "/demo03.jsp";//并返回 "/demo03.jsp" 作为视图名称。
    }
}

Map

以Map方式进行存储,用于向作用域中存值。

java 复制代码
@Controller //控制器类
public class IndexController {
    @RequestMapping("/index4")
    public String index4(SmbmsUser smbmsUser, Map<String,Object> map){
        map.put("smbmsUser",smbmsUser);
        return "/demo03.jsp";//并返回 "/demo03.jsp" 作为视图名称。
    }
}

@ModelAttribute

用于将请求参数绑定到模型对象上。

java 复制代码
@Controller
@RequestMapping("/user")
public class DemoController {
    @RequestMapping("/demo")
    public String demo(@ModelAttribute("smbmsUser") SmbmsUser smbmsUser){
        System.out.println(smbmsUser);
        return "/demo03.jsp";
    }
}

@SessionAttributes

只能定义在类上,作用是将指定的Model中的键值对添加至session中。

html 复制代码
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<html>
  <head>
      <title>Title</title>
  </head>
  <body>
      ${requestScope.smbmsUser}=======${sessionScope.smbmsUser}
  </body>
</html>
java 复制代码
@Controller
@RequestMapping("/user")
@SessionAttributes("smbmsUser")//session作用域
public class DemoController {
    @RequestMapping("/demo02")
    public String demo02( SmbmsUser smbmsUser){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("smbmsUser",smbmsUser);//request作用域
        System.out.println(smbmsUser);
        return "/demo04.jsp";
    }
}

servlet方式

引入servlet-api.jar

XML 复制代码
<!--servlet-api-->
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <scope>provided</scope>
</dependency
java 复制代码
@Controller
@RequestMapping("/user")
public class DemoController {
    @RequestMapping("/demo04")
    public String demo04(SmbmsUser smbmsUser,
                         HttpServletRequest request,
                         HttpSession session){
        System.out.println(smbmsUser.toString());
        session.setAttribute("smbmsUser",smbmsUser);
        request.setAttribute("smbmsUser",smbmsUser);
        return "/demo04.jsp";
    }
}

转发与重定向

复制代码
return "redirect:/user.jsp";//重定向
return "forward:页面";//转发

@ResponseBody

用于将控制器方法的返回值直接写入 HTTP 响应体中,而不是解析为视图名称。

对象中添加:

@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)表示属性为null不返回。

java 复制代码
@Controller
@RequestMapping("/user")
public class DemoController {
    @ResponseBody
    @RequestMapping("/demo05")
    public ResultJSON demo05(){
        Bill bill = new Bill();
        bill.setId(1111);
        bill.setBillCode("abccc");
        bill.setProductDesc("aaaaaa");
        return ResultJSON.success(bill);
    }
}

HTTP响应体

HTTP 响应体(HTTP Response Body)是 HTTP 响应消息的一部分,用于携带从服务器返回给客户端的数据。

HTTP 响应由三个部分组成:

状态行(Status Line):包含 HTTP 版本、状态码和状态描述。

响应头(Response Headers):包含关于响应的元数据,如内容类型、内容长度、缓存控制等。

响应体(Response Body):实际的数据内容,可以是 HTML、JSON、XML、文本等。

视图解析

在传统的 MVC 框架中,控制器方法的返回值通常是一个视图名称(例如,一个 JSP 文件名)。Spring MVC 会根据这个视图名称找到对应的视图模板,并将模型数据渲染到该视图中,最终生成 HTML 页面并返回给客户端。

@RestController

标注该类中所有的方法都返回JSON 用于类中。无须在写@Controller。

@DateTimeFormat

用户对象属性,控制入参时日期类型转换。

相关推荐
我是无敌小恐龙1 小时前
Java SE 零基础入门Day01 超详细笔记(开发前言+环境搭建+基础语法)
java·开发语言·人工智能·opencv·spring·机器学习
云烟成雨TD4 小时前
Spring AI Alibaba 1.x 系列【28】Nacos Skill 管理中心功能说明
java·人工智能·spring
QC·Rex4 小时前
Spring AI MCP Apps 实战:打造聊天与富 UI 融合的智能化应用
人工智能·spring·ui·spring ai·mcp
Predestination王瀞潞5 小时前
Java EE3-我独自整合(第七章:Spring AOP 通知类型)
python·spring·java-ee
曹牧5 小时前
Spring :component-scan
java·后端·spring
曹牧6 小时前
Spring:@RequestMapping
java·后端·spring
刘 大 望7 小时前
RAG相关技术介绍及Spring AI中使用--第三期
java·人工智能·后端·spring·机器学习·ai·aigc
tang_jian_dong10 小时前
springboot + vue3 集成tianai.captcha验证码
java·spring boot·spring
小小仙。11 小时前
IT自学第四十天
spring·docker
Predestination王瀞潞11 小时前
Java EE3-我独自整合(第六章:Spring AOP 工作流程与切入点表达式)
java·spring·java-ee