中文代码示例之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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何使GCC支持中文(utf-8)的变量名、函数名?
知乎原文地址 作者:@狗屎咖啡 目前VS 和Clang都是支持utf-8的变量名、函数名,但 GCC不支持。 有人提意见,提了好几年了:UTF-8 support for identifier names in GCC GCC并没有解决,但官方给了一个解决方案:FAQ - GCC Wiki 就是用这样一条脚本语句转换一下源文件 perl -pe 'BEGIN { binmode STDIN, ":utf8"; } s/(.)/ord($1) < 128 ? $1 : sprintf("\\U%08x", ord($1))/ge;' 这条语句的意思是将源文件按utf-8读取出来,大于128的unicode(不在ASCII里)都用16进制的Uxxxxxxxx的格式替代。 这种格式叫UCN。 实际上gcc内部还是将UCN转换成utf-8字符串,再加到符号表。却不支持原生的UTF-8符号,这个就有点搞笑了。 虽然有人会说,C、C++的标准里没有对UTF-8符号的支持,GCC不支持UTF-8符号是符合标准的。但是GCC从来就不是死守标准的乖宝宝对吧,加了不少扩展了。为啥这个不能扩展一下呢?...
- 下一篇
Java开发面试题汇总 -- 精选版(附答案)
目前流行的开发技术、常见的面试问题以及问题的答案都已经写的特别清楚了,今天我在之前的基础上,再基于面个人的经验继续精选一些面试题给大家阅读参考。 image 1,Java的反射 Java 反射机制是在运行状态中,对于任意一个类,都能够获得这个类的所有属性和方法,对于任意一个对象都能够调用它的任意一个属性和方法。这种在运行时动态的获取信息以及动态调用对象的方法的功能称为Java 的反射机制。反射也就是动态加载对象,并对对象进行剖析。Class 类与java.lang.reflect 类库一起对反射的概念进行了支持,该类库包含了Field,Method,Constructor类(每个类都实现了Member 接口)。 image 反射的作用: 1),在运行时判断任意一个对象所属的类 2),在运行时构造任意一个类的对象 3),在运行时判断任意一个类所具有的成员变量和方法 4),在运行时调用任意一个对象的方法 优点:可以动态的创建对象和编译,最大限度发挥了java的灵活性。 缺点:对性能有影响。使用反射基本上一种解释操作,告诉JVM我们要做什么并且满足我们的要求,这类操作总是慢于直接执行java...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Linux系统CentOS6、CentOS7手动修改IP地址