当前位置: 首页 > news >正文

springboot-基础-添加model和controller的简单例子+常用注解含义

备份笔记。所有代码都是2019年测试通过的,如有问题请自行搜索解决!

上一篇:springboot-基础-eclipse配置+helloword示例


目录

  • 添加model和controller的例子
  • 注解开发
    • 使用@RestController 大坑
  • Model ModelMap和ModelAndView的区别

添加model和controller的例子

文件结构:
在这里插入图片描述

User.java

package com.example.demo.model;public class User {private String name;private String sex;private String hobby;public User() {super();}public User(String name, String sex, String hobby) {super();this.name = name;this.sex = sex;this.hobby = hobby;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getHobby() {return hobby;}public void setHobby(String hobby) {this.hobby = hobby;}}

UserController.java


package com.example.demo.controller;import com.example.demo.model.User;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.ui.Model;@Controller
public class UserController {@RequestMapping(value="/user")public String index(Model model) {List<User> users = new ArrayList<User>();users.add(new User("name1", "male", "略略略"));users.add(new User("name2", "female", "singing"));users.add(new User("小猪佩奇", "雄性", "社会人"));model.addAttribute("users", users);return "user";}}

user.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8" /><title>test</title>
</head>
<body><table><tr><td>Name</td><td>Sex</td><td>Hobby</td><td>性别</td></tr><tr th:each="user:${users}" th:object="${user}"><td th:text="${user.name}"></td><td th:text="${user.sex}"></td><td th:text="${user.hobby}"></td><!-- 这里类似模糊查找 --><td th:text="*{name}"></td></tr></table>
</body>
</html>

application properties添加一点配置:

#国际化配置
spring.messages.basename=i18n/messages
spring.messages.encoding=UTF-8

结果:
在这里插入图片描述

注解开发

restful风格是一种开发想法,现行技术并没有完全实现。注解就是下表中的一些标记,这些标记带有特殊功能。

在这里插入图片描述
<context:component-scan/>标签默认情况下自动扫描指定路径下的包(含所有子包),将带有@Component@Repository@Service@Controller标签的类自动注册到spring容器。对标记了 Spring’s @Required@Autowired、JSR250’s @PostConstruct@PreDestroy@Resource、JAX-WS’s @WebServiceRef、EJB3’s @EJB、JPA’s @PersistenceContext@PersistenceUnit等注解的类进行对应的操作使注解生效(包含了annotation-config标签的作用)。

使用@RestController 大坑

这个注解相当于@ResponseBody 和 @Controller两个注解的组合,不返回视图,只返回数据。如果一个类上加了这个注解,那么这个类的函数都是返回不了视图的,return "redirect:/seq_tool/seq_order_details";也会只在页面上显示return的字符串。

解决方法是把类上的注解改为@Controller,然后给不返回视图,只返回数据的函数加上注解@ResponseBody,如

@RequiresPermissions("seq_tool:getcfmd")
@PostMapping(value="/getcfmd")
@ResponseBody
public PageResult getCfmd(String userid) {SeqOrderConditionVO vo = new SeqOrderConditionVO();PageInfo<SeqOrder> pageInfo = sysSeqOrderService.listCfmdByUserId(userid, vo);return ResultUtil.tablePage(pageInfo);
}

Model ModelMap和ModelAndView的区别

在这里插入图片描述

例子

  • model
 @RequestMapping(value = "/index1")public String index1(Model model) {model.addAttribute("result", "后台返回index1");return "result";}
  • ModelMap
@RequestMapping(value = "/index2")public String index2(ModelMap model) {model.addAttribute("result", "后台返回index2");return "result";}
  • ModelAndView
@RequestMapping(value = "/index3")public ModelAndView index3() {ModelAndView mv = new ModelAndView("result");// ModelAndView mv = new ModelAndView();// mv.setViewName("result");mv.addObject("result", "后台返回index3");return mv;}
@RequestMapping(value = "/index4")public ModelAndView index4() {Map<String, String> map = new HashMap<String, String>();map.put("result", "后台返回index4");return new ModelAndView("result", map);}

相关文章:

  • vscode不能远程连接ubuntu18.04.6
  • ElasticSearch之找到乔丹的空中大灌篮电影
  • Android 接入指纹识别
  • 【QT+QGIS跨平台编译】之五十四:【QGIS_CORE跨平台编译】—【qgssqlstatementlexer.cpp生成】
  • 【Linux】部署前后端分离项目---(Nginx自启,负载均衡)
  • SpringMVC(2)
  • 如何在 CentOS 上安装 ONLYOFFICE 文档 8.0
  • MySQL集群 双主架构(配置命令)
  • Nginx 和 Apache 的比较
  • Python 鼠标模拟
  • 【电子通识】为什么单片机芯片上会有多组VDD电源?
  • ES-ES的基本概念
  • CSS3技巧37:JS+CSS3 制作旋转图片墙
  • 行为树入门:BehaviorTree.CPP Groot2练习(叶子节点)(2)
  • android.text.BoringLayout.isBoring 的 NullPointerException
  • #Java异常处理
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Android Studio:GIT提交项目到远程仓库
  • Create React App 使用
  • docker python 配置
  • ESLint简单操作
  • Java到底能干嘛?
  • Linux下的乱码问题
  • Redux系列x:源码分析
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 理清楚Vue的结构
  • 前嗅ForeSpider采集配置界面介绍
  • 巧用 TypeScript (一)
  • 说说动画卡顿的解决方案
  • 思维导图—你不知道的JavaScript中卷
  • 王永庆:技术创新改变教育未来
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​secrets --- 生成管理密码的安全随机数​
  • # include “ “ 和 # include < >两者的区别
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (13)Hive调优——动态分区导致的小文件问题
  • (2015)JS ES6 必知的十个 特性
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (转)ObjectiveC 深浅拷贝学习
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • ... 是什么 ?... 有什么用处?
  • .net CHARTING图表控件下载地址
  • .NET Core 2.1路线图
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET 药厂业务系统 CPU爆高分析