集成 Spring @MVC 与 jQuery 和 Bootstrap Michael Isvy.

Slides:



Advertisements
Similar presentations
第二章 JSP 编译指令. 课程目标  JSP 编译指令  JSP 页面的表达式  JSP 页面的注释  JSP 页面的声明  Scriptlets.
Advertisements

1 Java 语言程序设计 计算机系 鲍金玲. 2 引子 甲骨文 甲骨文是全球最大的信息管理软件及服务供应商,成立于 1977 年,公司总部 设在美国加利福尼亚州的红木城( Redwood Shores ),全球员工达 名, 包括 名开发人员、 7500 多名技术支持人员和.
第 9 章 测试部署  9.1 测试  9.2 部署. 9.1 测试  应用测试:使用 JUnit 单元测试框架 测试的目的是检验开发结果是否满足规定需求,测试是保证软件质量的一个重要手段, 在软件开发过程中是不可缺少的组成部分。 单元测试与集成测试分别有各自的定义:在实际开发中,两者之间的界定是模糊的。
跨平台移动开发框架比较 How many mobile platforms android 拥有最多的 developer. 开发语言-大众脸- java 开发成本最低,不用单独买一台电脑. 开发者账号-免费 发布应用很快-当天提交,当天就能发布 iOS 贵族平台-至少把自己包装的很高大上.
①绝密信息 严禁泄露 版权所有 © 金蝶软件(中国)有限公司 ①绝密信息 严禁泄露 BOS WEB 平台系 统部 WAFII 控件介绍.
HE Fixed Assets Manage System
二月春风似剪刀, 这些变化得瞧瞧 主讲老师:王海 2016年1月27日20:00 YY频道:
移动校园Hybrid应用开发介绍 2015年11月.
学生教育办介绍 2015年9月.
女老闆的震撼教育 故事文案/黃祖強 視覺設計/高淑貞 版權所有,請保持著作完整性,歡迎自由分享。.
Java程序设计教程 第一讲 Java概述.
浅析浏览器解析和渲染 偏右.
基于SSH的web开发 AND 企业级WEB应用开发新技术
第一章 認識 Visual Basic 本章投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載
云智慧助力在线医疗服务性能优化 —让IT运营更简单 2015年4月 云智慧科技(北京)有限公司.
速收简历 速收简历移动APP项目 速收简历团队.
第一页是课程的标题 Spring入门示例.
MVC Servlet与MVC设计模式.
Web程序设计基础 太原理工大学 计算机科学与技术学院 林福平 求实创新
第8章 CSS基础知识 【学习目标】 对于一个网页设计者来说,对HTML语言一定不感到陌生,因为它是网页制作的基础,但是如果希望网页能够美观、大方,并且升级维护方便,那么仅仅知道HTML还是不够的,还需要了解CSS。了解CSS基础知识,可以为后面的学习打下基础。 本章主要内容包括: 为什么在网页中加入CSS。
攻击JAVA WEB 阿里巴巴集团安全中心 周拓.
2016年1月20日20:00 YY频道:
计算机学院计算机科学与技术系 中德联合软件技术研究所 李波
食品營養與安全概論 蔬果汁推廣活動: 配出你的健康 台灣大學生化科技系 TA鄭雅文.
J2EE Struts 和Spring 的区别.
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
他們,與眾不同…….
第八章 分析與設計階段 – 物件導向設計(OOD)
武汉纺织大学传媒学院 cm.wtu.edu.cn
Selenium 一个用于Web应用程序测试的工具 Robin Ren
Hello World 體驗實作第一個JSP程式.
第 3 章 網頁的基本設定與預覽.
Selenium经典教程 selenium教程.
软件设计模式与体系结构课程设计 周 宇 College of Information Science and Technology
HTML 钟晖云 QQ:
JSP自定义标签技术的分析与应用 ----Custom Tag 的分析与应用
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
Maven [培训人员注意事项: 有关自定义此模板的详细帮助,请查看最后一张幻灯片。另外,可以在一些幻灯片的备注窗格中查找其他课程文本。
Cloud (AWS) 產品放置 ex.巴士, 球場, 旅館 …. 客戶需求SW模組化 1.客製化需求 2.Web技術
JavaScript 靜宜大學 資管系 楊子青.
EAS820 Web开发培训 ---基础篇 BOS WEB平台系统部 范来华
作者:梁桐铭 博客: 微信公众号:角落的白板报
简单的介绍,简单的配置,简单的扩展 By jfm
NAMO網頁製作教學簡報 講師:李惠茹.
DWR WEB开发交流 1、自我介绍 2、DWR概述 3、DWR DEMO介绍 4、DWR实现机制 5、DWR配置说明 6、JS开发注意事项.
郑晟 昆明理工大学 云南省计算机技术应用重点实验室
前终端一体化开发解决方案 腾讯 lucaspei(裴伟).
网站设计 前端 选择器(复习),表单.
第11章 系统结构与包模型模型.
UI 软件 设计 页面布局(二).
2.2 Web界面设计 信息工程系 向模军 Tel: QQ:
第4章 CSS基础 主讲人:刘泰然 经济管理学院.
网页设计与制作教程第5版 机械工业出版社同名教材 配套电子教案.
第三章 HTML相关技术基础知识 纵观各种动态页面开发技术,无论是JSP、ASP还是PHP都无 法摆脱HTML的影子。这些动态的页面开发技术无非是在静 态HTML页面的基础上添加了动态的可以交互的内容。HTML 是所有动态页面开发技术的基础。在接下来的章节将要详 细介绍的就是HTML相关的一系列技术,包括HTML、
主讲:陶建平 华中科技大学网络与计算中心
第十二章 过滤器.
网页设计与制作 Jiangxi Engineering Vocational College 信息工程系 徐卫红.
主编:钟元生 赵圣鲁.
賣場與網站設計 EC-IC 2010最佳賣場設計奬第一名觀摩 EC-IC 2010最佳賣場設計奬第三名觀摩 各國網站風格大不同 網站設計.
第二章 Java基本语法 讲师:复凡.
W3C标准网页制作 主讲教师:张 涛.
React.js.
OSGi: 服務導向的Java模組系統 廖峻鋒 (try) 台大資工所 智慧型機器人及自動化實驗室.
Web前端开发 第17章:AngularJS 阮晓龙 /
讀取網路資料及JSON開放資料 靜宜大學資管系 楊子青
----以《西北民族音乐学术资源数据库》为例 西安音乐学院 景 月 亲
第21章 Spring 的MVC框架 Spring不但一个很好的集成框剪,它还提供了构建Web应用程序的全功能MVC模块。Spring 的MVC框架非常强大并不逊色于其他专业的Web框架,如Struts、WebWork。但在国内Spring MVC应用的并不是特别多,原因可能是Struts太深入人心的缘故吧。
第二章 Java基本语法 讲师:复凡.
第1章 HTML基础 主讲人:刘泰然 经济管理学院.
JavaScript 教师:魏小迪
Presentation transcript:

集成 Spring @MVC 与 jQuery 和 Bootstrap Michael Isvy

Michael Isvy 大家好。 我的名字叫Michael. 我是法国人。2008年我开始在SpringSource 公司工作。 培训师兼资深顾问 2008 年加入 SpringSource 曾在 20 多个国家和地区教授 Spring Core-Spring、Spring MVC、Spring 与 JPA/Hibernate、Apache Tomcat… blog.springsource.com 上的活跃博主 大家好。 我的名字叫Michael. 我是法国人。2008年我开始在SpringSource 公司工作。 我是一个IT顾问和培训经理。(我已经在20多国家教过Spring, Tomcat 和vFabric的课程。Ke4cheng2) 我去过很多国家叫Spring 有空的时候,我就在blog.springsource.com上写博客。 我常常在SpringSource博客上写一些文章

历史 2004 Spring 1.0 创立 SpringSource (原名称 Interface21) … 2008 设立法国分公司 Spring 1.0?? 我 2009 VMware 收购 SpringSource 2012 Vmware 推出众多新产品:CloudFoundry、GemFire、RabbitMQ … 你们知不知道Spring是什么时候发布的? 我们可以讨论一下SpringSource的历史(li4shi3) 2004年:Spring 1.0 出来了。这个时候SpringSource有7个创始人.(chuang4shi3ren2) 一点儿零 2008年:SpringSource只有20个员工。(yuan2gong1). 法国 的SpringSource分公司是我跟朋友一起创建的。(ye4wu4) (ban3ben3) (chuang4jian4) 2009年: VMware 收购了SpringSource (shou1gou4) 到了2012年:我们比以前壮大了。我们现在有新的产品: Cloudfoundry, GemFire, RabbitMQ… (chan3pin3) 等等 deng3deng3 接下来 jie1xia4lai2 : et ensuite… 3

博客文章的启发 http://blog.springsource.org/2012/08/29/ 八月份的时候,我在博客上写了一篇文章。有很多人留言(liu2yan2, comment) 我很快就发现有很多人感兴趣。 我们今天要讨论的内容跟这篇文章有关。

议题 常见 Spring MVC 最佳实践 添加 jQuery (Javascript) HTML Javascript 添加 Bootstrap (CSS) 避免 JSP 粥 JSP 文件 HTML Javascript CSS Taglibs 这是今天的日程(ri4cheng2) 我们先要讨论Spring MVC的最优方法。 然后我们要用jQuery和Twitter Bootstrap的接合 最后咱们能发现JSP里边有太多技术:有HTML, JSP scriptlets, CSS, JavaScript… 都很乱。我们把这个叫做“JSP soup” (JSP 粥)。(ji4shu4) 最后咱们要讨论怎么避免(bi4mian2)JSP 粥。 我们先讨论。。 然后讨论。。。 再讨论。。。 最后讨论。。。

常见 Spring MVC 最佳实践

为什么选择 Spring MVC? 因为简单,很多人喜欢它 为什么有人用Spring MVC? Spring MVC是一个很简单web framework.

为什么选择 Spring MVC? InfoQ JVM Web 框架 20 强 Spring MVC 位列第一 http://www.infoq.com/research/jvm-web-frameworks 这个年有两个很大的民意测验 (min2yi4ce4yan4) 他们都说Spring MVC 是web frameworks 的第一名。

为什么选择 Spring MVC? 来自 zeroturnaround 的调查 Spring MVC 位列第一 http://zeroturnaround.com/labs/developer-productivity-report-2012-java-tools-tech-devs-and-data/ 这个年有两个很大的民意测验 (min2yi4ce4yan4) 他们都说Spring MVC 是web frameworks 的第一名。

如何使用 Spring MVC? 哪种方式更恰当? 已过时!! @Controller public class UserController { @RequestMapping(value="/users/", method=RequestMethod.POST) public ModelAndView createUser(User user) { //... } } public class UserController extends SimpleFormController { public ModelAndView onSubmit(Object command) { //... } } 已过时!! Next: show quickly what we have in the code.

通过 Spring MVC 验证 程序验证? 非首选方式! class DiningValidator extends Validator { public void validate(Object target, Errors errors) { if ((DiningForm)target) .merchantNumber.matches("[1-9][0-9]*") ) errors.rejectValue("merchantNumber", "numberExpected"); } 非首选方式!

通过 Spring MVC 验证 POJO Bean 验证 (JSR 303) 注释 import javax.validation.constraints.*; public class Dining { @Pattern(regexp="\\d{16}") private String creditCardNumber; @Min(0) private BigDecimal monetaryAmount; @NotNull private Date date; } POJO

通过 Spring MVC 验证 控制器 Bean 验证 (JSR 303) @Controller import javax.validation.Valid; … @Controller public class UserController { @RequestMapping("/user") public String update(@Valid User user, BindingResult result) { if (result.hasErrors()) { return "rewards/edit"; } // continue on success... } 控制器 Go into app and run 2 ways: correct and not correct. way

表示层 JSP 表单标记库 <c:url value="/user.htm" var="formUrl" /> <form:form modelAttribute="user" action="${formUrl}"> <label class="control-label">Enter your first name:</label> <form:input path="firstName"/> <form:errors path="firstName"/> ... <button type="submit">Save changes</button> </form:form>

JSP 最佳实践!!

没有 html 转义符:有遭受跨站脚本攻击的危险 JSP:哪种方法更好? <tr> <td> <%=user.getFirstName() %></td> <td> <%=user.getLastName() %> </td> </tr> 1 不好:若使用 taglibs 会更好 jsp 文件 <tr> <td> ${user.firstName} </td> <td> ${user.lastName} </td> </tr> 2 没有 html 转义符:有遭受跨站脚本攻击的危险 <tr> <td> <c:out value="${user.firstName}"/> </td> <td> <c:out value="${user.lastName}"/> </td> </tr> 3 不错!

Jar 文件最佳实践 Webjars 简介

它好用吗? 版本号!!!

最佳实践 通过 Maven 或 Gradle 管理版本号 Maven POM 文件 pom.xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.1.3.RELEASE</version> </dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> Maven POM 文件 pom.xml

版本号? 我们来谈谈 Webjars! JSP 文件 <link href="/bootstrap/css/bootstrap.css" rel="stylesheet"/> <script src="/js/addThis.js"></script> <script src="/js/jquery-ui.js"></script> <script src="/js/jquery.dataTables.js"></script> <script src="/js/jquery.js"></script> JSP 文件 我们来谈谈 Webjars! Show a folder which does not contain any version number

Webjars 允许 CSS 和 JS 库导入为 Maven 库 jQuery、jQuery-ui、bootstrap、backbonejs… http://www.webjars.org/

Webjars pom.xml <dependency> <groupId>org.webjars</groupId> <artifactId>jquery-ui</artifactId> <version>1.9.1</version> </dependency> pom.xml

使用 Webjars pom.xml 内部 Spring 配置 JSP 内部 . js 文件在 jar 文件内! <dependency> <groupId>org.webjars</groupId> <artifactId>jquery-ui</artifactId> <version>1.9.1</version> </dependency> <mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/"/> . js 文件在 jar 文件内! <link rel="stylesheet" href="/webjars/jquery-ui/1.9.1/js/jquery-ui-1.9.1.custom.js"> Possibly: show that we can outsource from a variable

添加 jQuery

jQuery 是什么? Javascript 框架 非常简单的核心,拥有数以百计的插件 数据表 jQuery UI(日期选择器、表单交互…)

为什么选择 jQuery? Demo jQuery

Jquery 用户界面

Jqueri 用户界面 最流行的 jQuery 插件之一 自动完成 日期选择器 拖放 滑块 … 我们从日期开始! Demo

您在 Java 中如何使用日期? 不错! java.util.Date Joda Time JSR 310: 日期和时间 API 仅适用于简单情况 不错! 与 Spring MVC 完美集成 尚不可用可能在 2013 年 Demo: server side

jqueryui 日期选择器 JSP 文件 <script> $( "#startDate" ).datepicker({ dateFormat: "yy-m-dd" }); $( "#endDate" ).datepicker({ dateFormat: "yy-m-dd" }); </script> … <form:input path="startDate" /> <form:input path="endDate" /> Demo: JSP (avec ou sans jQuery) JSP 文件

添加 jQuery 数据表

jQuery 数据表 jQuery 数据表插件 单击、排序、滚动、下一页/上一页… http://datatables.net/

Spring MVC 中的数据表 您甚至不需要自己编写 Javascript! 只需借助 DataTables4J http://datatables4j.github.com/docs/ <dependency> <groupId>com.github.datatables4j</groupId> <artifactId>datatables4j-core-impl</artifactId> <version>0.7.0</version> </dependency> pom.xml

Spring MVC 中的数据表 JSP 文件内部 <datatables:table data="${userList}" id="dataTable" row="user"> <datatables:column title="First Name" property="firstName" sortable="true" /> <datatables:column title="Last Name" property="lastName" sortable="true" /> </datatables:table> JSP 文件

Bootstrap 我们来谈谈 CSS…

为什么选择 Bootstrap? 网页设计师从此不再哭泣,泪水成往事! 我们来谈谈 Bootstrap!

Bootstrap 是什么? 原名为“Twitter Bootstrap” 始于 2011 字体、表单、按钮、图表、导航以及其他界面组件 可与 jQuery 完美集成 Demo

Bootstrap 是什么? 1 2 3 Github 上最流行的项目! https://github.com/popular/starred

Bootstrap 主题 数以百计的主题 让您的网站看起来与众不同! 既有免费的,也有商业化的 例如:www.bootswatch.com/

避免 JSP 粥 JSP 文件 HTML Javascript CSS Taglibs

避免 JSP 粥 我们的应用程序现在在浏览器中看起来还不错 实际上怎么样? 我们可以做得更好! Show code

JSP 自定义标记 您驾驭 JSP 的最佳帮手! 轻松将 100 行代码转换为 10 行代码! 离不开的朋友

自定义标记 自定义标记是 Java EE 的一部分 .tag 和 .tagx 文件 创建于 2004 年 并非新功能!

表单字段:无自定义标记 JSP CSS div 标签 表单输入 错误消息(如果有) <div class="control-group" id="${lastName}"> <label class="control-label">${lastNameLabel}</label> <div class="controls"> <form:input path="${name}"/> <span class="help-inline"> <form:errors path="${name}"/> </span> </div> CSS div 标签 表单输入 错误消息(如果有) 离不开的朋友

使用自定义标记 inputField.tag 先创建一个标记(或 tagx)文件 <%@ taglib prefix="form" uri="http://www.spring…org/tags/form" %> <%@ attribute name="name" required="true" rtexprvalue="true" %> <%@ attribute name="label" required="true" rtexprvalue="true" %> <div class="control-group" id="${name}"> <label class="control-label">${label}</label> <div class="controls"> <form:input path="${name}"/> <span class="help-inline"> <form:errors path="${name}"/> </span> </div> 离不开的朋友

使用自定义标记 1 行代码, JSP 而不是 9 行! 自定义标记调用 包含自定义标记的 文件夹 JSP 文件 不再是 JSP 粥! <html xmlns:custom="urn:jsptagdir:/WEB-INF/tags/html" …> … <custom:inputField name="firstName" label="Enter your first name:" /> <custom:inputField name="lastName" label="Enter your last name:" /> </html> JSP 文件 JSP 1 行代码, 而不是 9 行! 离不开的朋友 不再是 JSP 粥!

总结 考虑对静态文件使用 WebJars 将 Spring MVC 与 jQuery 集成很简单 http://www.webjars.org/ 将 Spring MVC 与 jQuery 集成很简单 考虑使用 DataTables4J http://datatables4j.github.com/docs/ Bootstrap 酷毙了! JSP 自定义标记可助您一臂之力 这是今天的日程(ri4cheng2) 我们先要讨论Spring MVC的最优方法。 以后我们要用jQuery和Twitter Bootstrap 最后我们能发现JSP里边有太多技术:有HTML, JSP scriptlets, CSS, JavaScript… 都很乱。我们叫这个“JSP soup” (JSP 粥)。 最后咱们要讨论怎么避免(bi4mian2)JSP 粥。 我们先讨论。。 然后讨论。。。 在讨论。。。 最后讨论。。。

谢谢!