2017-11-25 中文代码示例之Spring Boot 1.3.3演示
源码: program-in-chinese/jinxiaocun
由于这个演示项目成型于去年(详见中文编程的尝试历程小记), Spring Boot还是老版本. 尚未将其更新到最新版本, 先将其中的一些中文命名的部分小结在此.
URL
如: /商品表 /单位表
实现方式见最后附上的"单位控制器"源码中的:
@RequestMapping(value = "/单位表")
及
protected static final String URL = "单位表";
类/方法/变量用中文命名
见后面附上的源码
jsp文件名, 以及jsp中的变量名
如"单位表.jsp"中的"${单位.名称}".
这需要"单位"类中的属性命名为"名称". 由于命名约定, 需要将接口以get/set开头.
数据库的表/列命名
下面是mysqldump的结果("单位"部分)
DROP TABLE IF EXISTS `单位`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `单位` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`名称` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
完整schema在此
编码相关注意点(现在想起的, 欢迎补遗)
需要在pom.xml中添加:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
- 数据库(用的Mysql)指定编码:
spring.datasource.url= jdbc:mysql://localhost:3306/jinxiaocun?useUnicode=true&characterEncoding=utf8
spring.datasource.sqlScriptEncoding=UTF-8
- jsp文件头指定编码:
<%@ page pageEncoding="UTF-8" %>
- 如上面的mysqldump中所见, 表和列都设置为了utf8
附上单位相关部分源码
单位类:
@Entity
public class 单位 {
private long id;
@NotEmpty(message = "单位名称不可为空")
@Size(max = 20, message = "单位长度不可超过20")
private String 名称;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String get名称() {
return 名称;
}
public void set名称(String 名称) {
this.名称 = 名称;
}
}
单位控制类:
@Controller
@RequestMapping(value = "/单位表")
public class 单位控制 {
protected static final String URL = "单位表";
protected static final String 表名 = "单位表";
@Autowired
private 单位库 单位库;
@RequestMapping(method = RequestMethod.GET)
public String 列表(Model 模型) {
List<单位> 表 = 单位库.findAll();
if (表 != null) {
模型.addAttribute(表名, 表);
}
// 需要初始化被校验的对象
模型.addAttribute("单位", new 单位());
return URL;
}
@RequestMapping(method = RequestMethod.POST)
public String 添加(@Valid 单位 单位, BindingResult 约束结果, Model 模型) {
if (约束结果.hasErrors()) {
return URL;
}
单位库.save(单位);
return 列表(模型);
}
}
单位表.jsp:
<body>
<jsp:include page="置顶.jsp" />
<h2>单位列表</h2>
<c:forEach var="单位" items="${单位表}">
<div>
<c:out value="${单位.名称}"/>
</div>
</c:forEach>
<h3>添加单位</h3>
<form:form method="POST" modelAttribute="单位">
<form:errors path="*" cssClass="errorblock" element="div" />
<label for="名称">名称:</label>
<form:input type="text" path="名称" size="50" />
<form:errors path="名称" cssClass="error"/>
<br/>
<input type="submit" value="提交"></input>
</form:form>
</body>
注
演示本身非常幼稚, Spring Boot当时也是摸索学习中, 后也没有继续深入. 使用jsp而不是Thymeleaf的原因是, 后者当时不支持中文变量命名. 缘由详见业余小项目, 学用Spring boot (如对中文写代码本能排斥, 求放过)22楼.
2017-11-25 中文代码示例之Spring Boot 1.3.3演示的更多相关文章
- 2018-08-11 中文代码示例之Spring Boot 2.0.3问好
上次试用Spring Boot还是两年前: 中文代码示例之Spring Boot 1.3.3演示. 打算用在一个讨论组内小项目上, 于是从官网Building an Application with ...
- 中文代码示例之Vuejs入门教程(一)
原址: https://zhuanlan.zhihu.com/p/30917346 为了检验中文命名在主流框架中的支持程度, 在vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 所有演示 ...
- 2017-11-09 中文代码示例之Vuejs入门教程(一)
"中文编程"知乎专栏原链 为了检验中文命名在主流框架中的支持程度, 在vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 所有演示都在本地测试通过, 源码在这里. 下面 ...
- 中文代码示例之Angular入门教程尝试
原址: https://zhuanlan.zhihu.com/p/30853705 原文: 中文代码示例教程之Angular尝试 为了检验中文命名在Angular中的支持程度, 把Angular官方入 ...
- 2018-11-27 中文代码示例之Programming in Scala笔记第七八章
续前文: 中文代码示例之Programming in Scala学习笔记第二三章 中文代码示例之Programming in Scala笔记第四五六章. 同样仅节选有意思的例程部分作演示之用. 源文档 ...
- 2017-11-07 中文代码示例之Angular入门教程尝试
"中文编程"知乎专栏原址 原文: 中文代码示例教程之Angular尝试 为了检验中文命名在Angular中的支持程度, 把Angular官方入门教程的示例代码中尽量使用了中文命名. ...
- 2018-12-09 疑似bug_中文代码示例之Programming in Scala笔记第九十章
续前文: 中文代码示例之Programming in Scala笔记第七八章 源文档库: program-in-chinese/Programming_in_Scala_study_notes_zh ...
- 2018-11-16 中文代码示例之Programming in Scala笔记第四五六章
续前文: 中文代码示例之Programming in Scala学习笔记第二三章. 同样仅节选有意思的例程部分作演示之用. 源文档仍在: program-in-chinese/Programming_ ...
- 中文代码示例之NW.js桌面应用开发初体验
先看到了NW.js(应该是前身node-webkit的缩写? 觉得该起个更讲究的名字, 如果是NorthWest之意的话, logo(见下)里的指南针好像也没指着西北啊)和Electron的比较文章: ...
随机推荐
- 背水一战 Windows 10 (69) - 控件(控件基类): UIElement - Manipulate 手势处理, 路由事件的注册, 路由事件的冒泡, 命中测试的可见性
[源码下载] 背水一战 Windows 10 (69) - 控件(控件基类): UIElement - Manipulate 手势处理, 路由事件的注册, 路由事件的冒泡, 命中测试的可见性 作者:w ...
- 几种简单的编码(为什么使用ASCII码)
二-十进制码(BCD码) 在目前的数字系统中,一般是采用二进制数进行运算的,但是由于人们习惯采用十进制数,因此常需进行十进制数和二进制数之间的转换,其转换方法上面已讨论过了.为了便于数字系统处理十进制 ...
- linux 软件安装篇
在linux下安装软件,不像windows一样,下一步下一步安装,但是也有很方便的方式.也有自定义的安装方式,总体来说,套路还不算太深,但是要实践才能出真知哦! linux版本有很多,但是大部分命令都 ...
- 解决SpringBoot jar包太大的问题
转载 2017年09月18日 09:21:53 577 SpringBoot的web应用一般都添加了spring-boot-maven-plugin插件. Maven xml代码 <buil ...
- JS 数据类型和数据分析
栈区:(stack)-由编译器自动分配释放,存放函数的参数值,局部变量的值等. 特点是存放体积小,使用频率高的数据.可以类比内存. 堆区:(heap)-一般由程序员分配释放,若开发者不释放,程序结束时 ...
- [EXP]K8 jboss invoke deploy getshell exploit
MSF jboss invoke deploy EXPLOIT moudle Date:2013.11.28 Author:K8gege 改这个EXP中 过程有点不进人意 没能在一个payload里直 ...
- “大话架构”阿里架构师分享Java程序员需要突破的技术要点
一.源码分析 源码分析是一种临界知识,掌握了这种临界知识,能不变应万变,源码分析对于很多人来说很枯燥,生涩难懂. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 我认为是阅读源码的最核心 ...
- 课程五(Sequence Models),第一 周(Recurrent Neural Networks) —— 1.Programming assignments:Building a recurrent neural network - step by step
Building your Recurrent Neural Network - Step by Step Welcome to Course 5's first assignment! In thi ...
- 解决Chrome浏览器主页被hao123、360和2345篡改简单有效方法
转自:https://blog.csdn.net/qq_32635971/article/details/72793115?locationNum=10&fps=1 当你打开浏览器看到各种首页 ...
- underscore.js源码解析【数组】
// Array Functions // --------------- // Get the first element of an array. Passing **n** will retur ...