热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot(九)SpringBoot中使用Bootstrap和AngularJS

你好,【程序职场】专注于:SpringBoot,微服务和前端APP开发,闲暇之余一起聊聊职场规划,个人成长&#

你好,【程序职场】专注于:Spring Boot ,微服务 和 前端APP开发,闲暇之余一起聊聊职场规划,个人成长,还能带你一起探索 副业赚钱渠道,在提升技术的同时我们一起交流 敏捷流程 提高工作效率,从技术到管理一步步提升自我!
 
标签:一个执着的职场程序员!


本文是Spring Boot系列的第九篇,了解前面的文章有助于更好的理解本文:

1.Spring Boot(一)初识Spring Boot框架
2.Spring Boot(二)Spring Boot基本配置
3.Spring Boot(三)Spring Boot自动配置的原理
4.Spring Boot(四)Spring Boot web项目开发
5.Spring Boot(五)Spring Boot web开发项目(2)配置
6.Spring Boot(六)Spring Boot web开发 SSL配置
7.Spring Boot(七)Spring Boot Websocket
8.Spring Boot(八)Spring Boot Websocket实现聊天功能



前言

(一). Bootstrap介绍

(二). AngularJS介绍

(三). 项目实战

 

上篇文章为大家讲述了 Spring Boot中实现聊天功能;本篇文章接着上篇内容继续为大家介绍SpringBoot中 Bootstrap前端框架和AngularJS模板+数据绑定实现前端的动态页面。

 

(一). Bootstrap介绍

官方定义BootStrap是开发响应式和移动优先的web应用的最流行的HTML,css,Javascript框架。

它实现了只使用一套代码就可以在不同设备显示你想要的视图的功能,还提供了大量美观的html元素前端组件和jquery插件。

首先使用 我们需要下载 :
官网地址:http://getbootstrap.com.getting-started/

基本的模板页面如下




你好, Bootstrap!

.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-8
.col-md-4
.col-md-4
.col-md-4
.col-md-4
.col-md-6
.col-md-6
  

(二). AngularJS介绍

AngularJS官方定义是HTML开发本应该的样式,他是用来设计开发Web应用的。

使用声明式模板+数据绑定,mvw,mvvm,mvc依赖注入和测试,可以实现通过前端技术就能实现页面的动态。

下载地址:
https://angularJS.org/

我们看一个简单的AngularJs页面,如下:


你好 {{yourName}}!

实现输入信息后自动显示出来。

 

(三). 项目实战

上面解释了Bootstrap和AngularJS的使用和作用。下面我们通过一个简单实例来更深入的了解。

使用场景:我们使用Bootstrap制作导航,使用AngularJS实现导航切换页面的路由功能,并演示AngularJS通过$服务和Spring Boot 提供的REST服务,通过封装Jquery UI的日期选择器。

1.创建项目

创建一个Spring Boot项目 只依赖web
 

 

我们在该项目中需要 用到几个 库文件:Bootstrap,AngularJS,jQuery,jQueryUI,首先将这些资源放到src/mian/resourecs/static下,

2. 功能切换导航的添加

添加action.html 页面 放在 src/main/resources/static 目录下,代码如下:



1. 使用Bootstrap定义的导航,合并AngularJS的路由,通过路由 #/open 和 #/directive来切换视图
2. 使用来载入页面的
3. 其中 jquary-ui-min.js的脚本是我们定制指令使用,app.js定义AngularJS的模块和路由,directive.js是自定义的指令,controllers.js是控制器定义之处。


3. 模块和路由定义

添加js文件 app.js

var actionApp = angular.module('actionApp',['ngRoute']);
actionApp.config(['$routeProvider' , function($routeProvider) { $routeProvider.when('/oper', { controller: 'View1Controller', templateUrl: 'views/view1.html', }).when('/directive', { controller: 'View2Controller', templateUrl: 'views/view2.html', });
}]);

1.定义模块,并依赖与路由模块ngRout
2.配置路由,并注入$routProvider来配置
3./oper为路由名称
4.controller 定义的是路由的控制器名称
5.templateUrl定义的是视图的真正地址

4. 控制器定义

添加controllers.js文件
​​​​

actionApp.controller('View1Controller', ['$rootScope', '$scope', '$http', function($rootScope, $scope,$http) { $scope.$on('$viewContentLoaded', function() { console.log('页面加载完成'); }); $scope.search = function(){ personName = $scope.personName; $http.get('search',{ params:{personName:personName} }).success(function(data){ $scope.person=data; });; };}]);
actionApp.controller('View2Controller', ['$rootScope', '$scope', function($rootScope, $scope) { $scope.$on('$viewContentLoaded', function() { console.log('页面加载完成'); });}]);

1.定义控制器 View1Controller 并注入['$rootScope', '$scope', '$http'
2.使用$scope.$on监听 $viewContentLoaded时间,可以在页面内容加载完成后进行一些操作
3.在scope定义一个方法search,在页面上通过ng-click调用
4.通过$scope.personName获取页面定义的ng-model="personName"
5.使用$http.get向服务器地址 search发送get请求6.使用params添加请求参数

5. 通过查询和服务器交互数据

  • 名字:{{person.name}}
  • 年龄:{{person.age}}
  • 地址:{{person.address}}
  

6.服务器代码
添加一个javabea 用户和前端交互数据

package org.cxzc.myyoung.springbootbootstrapangular;
public class Person { private String name; private Integer age; private String address; public Person() { super(); } public Person(String name, Integer age, String address) { super(); this.name = name; this.age = age; this.address = address; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address;  }}

同时在Spring Boot入口类中添加 控制器

package org.cxzc.myyoung.springbootbootstrapangular;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.http.MediaType;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@SpringBootApplicationpublic class SpringbootbootstrapangularApplication {
public static void main(String[] args) { SpringApplication.run(SpringbootbootstrapangularApplication.class, args); }
@RequestMapping(value="/search",produces={MediaType.APPLICATION_JSON_VALUE})    public Person search(String personName){        return new Person(personName, 32, "hefei");    }}

这里我们简单做一个查询,接收前台传入的personName,返回Person对象,我们使用@RestController  返回值类型是对象,所以SpringMVC会自动将对象输出为JSON.

 

7. 自定义指令

添加 directives.js 文件,代码如下:

actionApp.directive('datePicker',function(){ return { restrict: 'AC', link:function(scope,elem,attrs){           // scope.treeObj = $.fn.zTree.init(elem, scope.settings); elem.datepicker(); } };});

1. 指令 datePicker
2.限制为属性指令和样式指令
3.使用link定义指令,可使用当前scope,当前元素和元素属性
4.初始化jquery的datePicker

8. 自定义指令页面添加

 

这里面就是通过属性形式,样式形式 调用指令的效果

效果如下:

 

 

 

ok,本篇内容到这里就完成了,如果小伙伴还有疑问,可以 关注我,我们一起进步

参考:
1. 《JavaEE开发的颠覆者 Spring Boot实战》

 

本案例下载地址:

https://github.com/ProceduralZC/itcxzc/tree/master/springbootchat


推荐阅读
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文介绍了解决IE678伪类不兼容问题的方法,包括少用CSS3和HTML5独有的属性,使用CSS hacker,使用last-child清除浮动、批量添加标签、去掉list item最后一个的border-right等技巧。同时还介绍了使用after清除浮动时加上IE独有属性zoom:1的处理方法。另外,本文还提到可以使用jQuery代替批量添加标签的功能,以及使用负边距和CSS2选择器element+element去掉list item最后一个的border-right的方法。 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
author-avatar
小哥
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有