SpringBoot入门教程(十三)CORS方式实现跨域

什么是跨域?浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。跨域资源访问是经常会遇到的场景,当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源便会发起一个跨域HTTP请求。出于安全考虑,浏览器会限制从脚本内发起的跨域HTTP请求。跨域的方式有很多种,今天主要介绍CORS(网络通信技术),全称Cross-OriginResourceSharing ,是一种允许当前域(domain)的资源(比如html/js/webservice)被其他域(domain)的脚本请求访问的机制,通常由于同域安全策略(thesame-originsecuritypolicy)浏览器会禁止这种跨域请求。由于CORS方式实现跨域需要服务端配合设置Header,在springboot中只需要添加以下配置即可,或者在需要支持跨域的方法中直接对response设置header,以下三种方式效果相同。第一种:@ConfigurationpublicclassWebMvcConfigextendsWebMvcConfigurerAdapter{/***重写a...

SpringBoot入门教程(五)Java基于MySQL实现附近的人

“附近的人”这个功能估计都不陌生,与之类似的功能最开始是在各大地图应用上接触过,比如搜附近的电影院,附近的超市等等。然而真正让附近的人火遍大江南北的应该是微信"附近的人"这个功能,记得微信刚出的时候,坊间还有一句"寂寞女聊玩微信,寂寞男人搜附近"的说法。创建测试数据库CREATETABLE`userposition`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`city`varchar(20)NOTNULL,`position`varchar(128)NOTNULL,`longitude`decimal(18,15)NOTNULL,`latitude`decimal(18,15)NOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=1DEFAULTCHARSET=utf8;insertinto`userposition`values(1,'北京市','回龙观新村中区',116.310771,40.06263);insertinto`userposition`values(...

SpringBoot入门教程(三)通过properties实现多个数据库环境自动切换配置

前面的文章已经介绍了CentOS部署SpringBoot项目从0到1的详细过程,包括Linux安装ftp、Tomcat以及Javajdk的全部过程。这篇文章主要介绍关于springboot如何通过多个properties实现数据库环境部署时自动切换配置的两种方式,部署时切换方式和打包时Maven控制方式。关于springboot基础矿建搭建有疑问的。可以看我之前的一篇文章。详解intellijidea搭建SpringBoot正常来讲,一个软件的开发上线的流程大部分都是分为三个环境,依次是开发、测试、上线。开发环境(dev):开发环境是指的是咱们本地跑的环境。测试环境(qa):一般是克隆一份生产环境的配置,qa即test。生产环境(prod)正式提供对外服务的,即是真实环境。关于三个环境的切换已然标准化了,这里只是一笔带过一下,因为下文中的配置文件会跟三个环境有关联。相信所有人都不会对这三个环境陌生的。今天主要讲讲关于springboot如何通过多个properties实现数据库环境部署时自动切换配置的两种方式,部署时切换方式和打包时Maven控制方式。首先介绍部署时切换的方式。1.1配...

Java分布式锁,搞懂分布式锁实现看这篇文章就对了

随着微处理机技术的发展,人们只需花几百美元就能买到一个CPU芯片,这个芯片每秒钟执行的指令比80年代最大的大型机的处理机每秒钟所执行的指令还多。如果你愿意付出两倍的价钱,将得到同样的CPU,但它却以更高的时钟速率运行。因此,最节约成本的办法通常是在一个系统中使用集中在一起的大量的廉价CPU。所以,倾向于分布式系统的主要原因是它可以潜在地得到比单个的大型集中式系统好得多的性价比。实际上,分布式系统是通过较低廉的价格来实现相似的性能的。随着互联网的兴起,越来越多的人使用者互联网产品。一般互联网系统都是分布式部署的,分布式部署确实能带来性能和效率上的提升,提升效率的同时,我们还需要注意,保证一个分布式环境下数据一致性的问题。在单机时代,虽然不存在分布式锁,但也会面临资源互斥的情况,只不过在单机的情况下,如果有多个线程要同时访问某个共享资源的时候,我们可以采用线程间加锁的机制,即当某个线程获取到这个资源后,就需要对这个资源进行加锁,当使用完资源之后,再解锁,其它线程就可以接着使用了。例如,在JAVA中,甚至专门提供了一些处理锁机制的一些API(synchronize/Lock等)。但是到了分布...

java实现Composite(组合)模式

组合模式涉及的是一组对象,其中一些对象可能含有其他对象,这些对象也可以含有对象,因此,有些对象代表的是对象群组。Composite模式的设计意图在于:让所有的用户能够用统一的接口处理单个对象以及对象群组packageapp.composite;importjava.util.ArrayList;importjava.util.Iterator;/***类的作用:存在年级和学校,都实现People接口,有输出名字的功能,实现组合模式*调用School的getName();获取全校学生的名字*@authorAdministrator**/publicclassCompositeTest{publicstaticvoidmain(String[]args){Schoolschool=newSchool("前途小学");Gradegrade1=newGrade("一年级");grade1.add(newStudent("小明"));grade1.add(newStudent("小红"));Gradegrade2=newGrade("二年级");grade2.add(newStudent("小亮...

Ajax实现聊天

用Ajax发送请求,查询数据库是否有自己的数据,如果有自己的数据,就返回前端页面<head><metacharset="UTF-8"><title>登录聊天室</title><?phpsession_start();$sender=$_SESSION['loginuser'];$username=$_GET['username'];?><metaname="name"content="content"charset="utf-8"><scripttype="text/javascript">functionismsg(){//是否有信息varxhr=myAjax();xhr.open('post','ismsg.php',true);xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');xhr.onreadystatechange=function(){if(this.readyState==4){$('myme...
代码星球 代码星球·2020-04-05

Ajax实现文件上传

利用html5中的file对象利用FormData对象进行上传 前端页面<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"><title>Ajax文件上传</title></head><scripttype="text/javascript">functionupfile(){varpic=document.getElementsByTagName('input')[0].files;//返回filelistpic=pic[0];//console.log(pic);//返回filevarstr="文件名称:"+pic.name+"<br/>";str+="文件大小:"+pic.size+"字节<br/>";str+="文件类型:"+pic.type+"<br/>";document.getElementById('xinxi').innerHTML=str;//将上传的文件解析到页面上...
代码星球 代码星球·2020-04-05

JavaGUI实现点名系统

有一个名字数组,根据线程知识是框中的数据依次修改packageWeek1008;importjava.awt.Font;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JTextField;publicclassMainextendsThreadimplementsActionListener{String[]s={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};JFrameframe=newJFrame("点名使用");JButtonbtn=newJButton("停止");JTextFieldtf=newJTextField();publicMain(){frame.setLayout(null);frame.setBounds(300,400,300,...
代码星球 代码星球·2020-04-05

smarty实现缓存

首先需要在mySmarty中添加配置信息,开启缓存,设置缓存文件存放目录,设置缓存时间缓存可以实现减少访问数据库,减轻数据库压力,访问一次数据库,形成静态页面,下次直接调用这个页面,也可以用nocache标签实现局部不缓存在mysmarty类中添加的语句$this->cache_dir='./cache';//缓存文件存放目录//开启缓存$this->caching=true;//配置缓存的生命周期$this->cache_lifetime=3600;//单位是秒 控制页面01.php<?php//演示缓冲require('../../smarty3/libs/smarty.class.php');require('./mySmarty.php');//定义方法functioninsert_welcome(){return123;}//创建对象$smarty=newmySmarty();//是否开启缓存$arr=array();if(!$smarty->isCached('01.html')){$conn=mysql_connect('local...
代码星球 代码星球·2020-04-05

ThinkPHP的配置

ThinkPHP配置:conf目录下'URL_PATHINFO_DEPR'=>'-',//修改URL的分隔符,'TMPL_L_DELIM'=>'<{',//修改左定界符'TMPL_R_DELIM'=>'}>',//修改右定界符'DB_TYPE'=>'mysql',//设置数据库类型'DB_HOST'=>'localhost',//设置主机'DB_NAME'=>'thinkphp',//设置数据库名'DB_USER'=>'root',//设置用户名'DB_PWD'=>'',//设置密码'DB_PORT'=>'3306',//设置端口号'DB_PREFIX'=>'tp_',//设置表前缀'DB_DSN'=>'mysql://root:@localhost:3306/thinkphp',//使用DSN方式配置数据库信息,优先'SHOW_PAGE_TRACE'=>true,//开启页面Trace,还要开启debug调试模式'TMPL_TEMPLATE_SUFFIX'=>'.html',//更改模板文件后缀...
代码星球 代码星球·2020-04-05

THINKPHP介绍

介绍:一、什么是MVCM-Model编写model类对数据进行操作V-View编写html文件,页面呈现C-Controller编写类文件(UserAction.class.php)二、ThinkPHP的MVC特点三、ThinkPHP的MVC对应的目录M项目目录/应用目录/Lib/ModelV项目目录/应用目录/TplC项目目录/应用目录/Lib/Action四、url访问C五、url的4种访问方式1.PATHINFO模式--重点!!!!!!http://域名/项目名/入口文件/模块名/方法名/键1/值1/键2/值22.普通模式http://域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值23.REWRITE模式http://域名/项目名/模块名/方法名/键1/值1/键2/值24.兼容模式http://域名/项目名/入口文件?s=模块名/方法名/键1/值1/键2/值2 THINKPHP目录ThinkPHP核心文件介绍├─ThinkPHP.php框架入口文件├─Common框架公共文件├─Conf框架配置文件├─Extend框架扩展目...
代码星球 代码星球·2020-04-05

mvc模式实现

listdemo.html负责显示,listModel.class.php负责从数据库存储数据和查找数据,mysql.class.php是操作数据库的类,但不直接使用,model类调用mysql,listmodel类继承model类,将数据库插入指定数据库,list.php将html文件引入,创建listmodel对象,向数据库插入数据,负责显示建表语句createtablelist(idintnotnullauto_incrementprimarykey,listnamevarchar(20)notnulldefault'',listpswvarchar(20)notnull)enginemyisamcharsetutf8; listdemo.html<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"><metaname="Generator"content="EditPlus®"><metaname="Author"content=""&g...
代码星球 代码星球·2020-04-05

php入门实现留言板

首先由一个文本文档read.txtliulan.html<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"><title>留言</title></head><body><formaction="./1.php"method="post"><p>标题:<inputtype="text"name="title"></p><p>留言:<textareaname="neirong"cols="50"rows="5"></textarea></p><p><inputtype="submit"value="提交"></p></form></body></html> 1.php<?php$arr=$_POST['title'].",".$_POST['neirong...
代码星球 代码星球·2020-04-05

jsp实现计算器

JavaBeanpackagecom.itheima.domain;importjava.math.BigDecimal;publicclassBigDecimalDemo{privatedoublefirstNum;privatecharfuHao='+';privatedoublesecondNum;publicdoublegetFirstNum(){returnfirstNum;}publicvoidsetFirstNum(doublefirstNum){this.firstNum=firstNum;}publicchargetFuHao(){returnfuHao;}publicvoidsetFuHao(charfuHao){this.fuHao=fuHao;}publicdoublegetSecondNum(){returnsecondNum;}publicvoidsetSecondNum(doublesecondNum){this.secondNum=secondNum;}publicdoubletoResult(){doubleresult=0;switch(fuHao)...
代码星球 代码星球·2020-04-05

广告条滑入滑出源代码实现

广告条滑入滑出源代码实现<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"><title>广告条滚动</title><styletype="text/css">*{padding:0px;margin:0auto;}#ad{width:1000px;height:300px;font-size:50px;background:red;font-weight:1000;font-size:100px;/*margin-top:-300px;*/}#box{width:1000px;height:800px;background:green;}</style><scripttype="text/javascript">window.onload=function(){varoad=document.getElementById('ad');//获得ad元素vartimer=setInterval(function(){//定...
首页上一页...562563564565566...下一页尾页