"中文编程"知乎专栏原文

源码: 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>
  1. 数据库(用的Mysql)指定编码:
spring.datasource.url= jdbc:mysql://localhost:3306/jinxiaocun?useUnicode=true&characterEncoding=utf8
spring.datasource.sqlScriptEncoding=UTF-8
  1. jsp文件头指定编码:
<%@ page pageEncoding="UTF-8" %>
  1. 如上面的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演示的更多相关文章

  1. 2018-08-11 中文代码示例之Spring Boot 2.0.3问好

    上次试用Spring Boot还是两年前: 中文代码示例之Spring Boot 1.3.3演示. 打算用在一个讨论组内小项目上, 于是从官网Building an Application with ...

  2. 中文代码示例之Vuejs入门教程(一)

    原址: https://zhuanlan.zhihu.com/p/30917346 为了检验中文命名在主流框架中的支持程度, 在vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 所有演示 ...

  3. 2017-11-09 中文代码示例之Vuejs入门教程(一)

    "中文编程"知乎专栏原链 为了检验中文命名在主流框架中的支持程度, 在vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 所有演示都在本地测试通过, 源码在这里. 下面 ...

  4. 中文代码示例之Angular入门教程尝试

    原址: https://zhuanlan.zhihu.com/p/30853705 原文: 中文代码示例教程之Angular尝试 为了检验中文命名在Angular中的支持程度, 把Angular官方入 ...

  5. 2018-11-27 中文代码示例之Programming in Scala笔记第七八章

    续前文: 中文代码示例之Programming in Scala学习笔记第二三章 中文代码示例之Programming in Scala笔记第四五六章. 同样仅节选有意思的例程部分作演示之用. 源文档 ...

  6. 2017-11-07 中文代码示例之Angular入门教程尝试

    "中文编程"知乎专栏原址 原文: 中文代码示例教程之Angular尝试 为了检验中文命名在Angular中的支持程度, 把Angular官方入门教程的示例代码中尽量使用了中文命名. ...

  7. 2018-12-09 疑似bug_中文代码示例之Programming in Scala笔记第九十章

    续前文: 中文代码示例之Programming in Scala笔记第七八章 源文档库: program-in-chinese/Programming_in_Scala_study_notes_zh ...

  8. 2018-11-16 中文代码示例之Programming in Scala笔记第四五六章

    续前文: 中文代码示例之Programming in Scala学习笔记第二三章. 同样仅节选有意思的例程部分作演示之用. 源文档仍在: program-in-chinese/Programming_ ...

  9. 中文代码示例之NW.js桌面应用开发初体验

    先看到了NW.js(应该是前身node-webkit的缩写? 觉得该起个更讲究的名字, 如果是NorthWest之意的话, logo(见下)里的指南针好像也没指着西北啊)和Electron的比较文章: ...

随机推荐

  1. 1.开始学习ASP.NET MVC

    Hello,大家好! 好久没有开始记录博客了,是时候开始分享一下了,这个系列主要为零基础的同学,量身打造的.废话不多说,我们开干! 什么是ASP.NET MVC MVC(Model-View-Cont ...

  2. UWP忽略短时间内重复触发的事件

    原链接:UWP忽略短时间内重复触发的事件 - 超威蓝火 做移动端开发的可能都会遇到这种需求,当用户点击一个按钮之后,由于没有异步,或者设备性能很差等等原因,程序卡住了.但是用户不知道是咋回事啊,就开始 ...

  3. 项目Alpha冲刺(团队3/10)

    项目Alpha冲刺(团队3/10) 团队名称: 云打印 作业要求: 项目Alpha冲刺(团队) 作业目标: 完成项目Alpha版本 团队队员 队员学号 队员姓名 个人博客地址 备注 221600412 ...

  4. Alpha代码规范、冲刺任务与计划

    Alpha代码规范.冲刺任务与计划 团队名称: 云打印 作业要求: Alpha代码规范.冲刺任务与计划 作业目标:代码规范.冲刺任务与计划. 团队队员 队员学号 队员姓名 个人博客地址 备注 2216 ...

  5. Java学习笔记51(综合项目:家庭记账系统)

    javaEE的开发模式 1.什么是模式 模式在开发过程中总结出的“套路”,总结出的一套约定俗成的设计模式 2.javaEE经历的模式 model1模式: 技术组成:jsp+javaBean model ...

  6. 使用swoole进行消息推送通知,配合vb.net进行客户端开发一样爽[开发篇]

    在以前的项目中,就曾听说过swoole的大名,想用来进行消息推送,但是当时只是有了初步的了解,并不敢大胆的运用到线上产品.所谓 识不足则多虑,威不足则多怒.所以就是怕,只能跟领导说了运用极光的推送功能 ...

  7. C语言中几个常用数学计算函数ceil(), floor(), round()的用法

    最近在实现算法的过程中,遇到了使用几个数学计算函数,感觉挺有意思,就记下来 方便以后使用. ceil(x)返回不小于x的最小整数值(然后转换为double型). floor(x)返回不大于x的最大整数 ...

  8. vue 自学项目笔记

    感觉小青推荐的学习网课,  利用vue 仿制一个去哪网, 学习的东西很多, 在食用之前,需要先确保js 和css 过关 js https://www.bilibili.com/video/av3009 ...

  9. PHP画图的基本步骤GD库

    一:PHP新建一个图片步骤: :创建画布: $im=imagecreatetruecolor(300,80) 2:定义颜色: $black=imagecolorallocate($im, 0, 0, ...

  10. iOS-常用的两个弹簧动画pop

    POPSpringAnimation *popAna = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPosition]; popA ...