1. 前端传json后端怎么接收(前端传json后端接收乱码)
前端向后端传一个json数组对象1、数据给后台,如果没有框架的话,后台从request中拿到的只能是字符串或字符串数组,因为js没有集合的概念。你可以把数据封装成json格式的数组往后台传,或者直接用request.getParameterValues(id)获得字符串数组再转成集合。
2、首先,功能说明:其实很简单,就是要根据后台返回的json数据在页面创建一个combotree,这个对象需要的是一个树状的json格式。
3、是document.getElementsByName吧?另外如果是在IE9或IE9以下,无论表单元素是写name属性或是id属性都会取得到值。
4、将json字符串儿装换成json对象,然后就可以访问其中的数据了。
5、用你自己的pojo对象接收就可以了,前提是属性值对应上json的KEY就可以了。
前端ajax异步传值以及后端接收参数的几种方式前端ajax传递表单数据,类似{name:zhangsan,age:17}后台只需利用request.getParameter(name)形式即可获取对应的value值。前端传递json数据格式。
HTML赋值(输出到Element的value或data-name)JS赋值(将数据填充到``的javaScript变量声明中。)script填充JSON(填充JSON数据到``标签中,前端通过DOM获取JSON字符串并解析成对象。
通过表单传递前端使用表单时,为name属性赋值,后台controller层方法的参数只要与name的值相同,即可获取到该属性的值。ajaxjs中将值取出来,通过data这个key传值,数据的值里面也是以key、value的方式,即JSON格式。
,2,3的前台ajax调用方法都一样。如果需要区分不同的ajax调用。我们可以传递一个不同值的type参数。后台再通过switch执行各自的处理程序。(4)利用System.Web.Services.WebMethodAttribute。
后台应该如何取到前端传来的json对象
前端发送类似如下的ajax请求:后台如果使用Servlet来接收的话,红框中直接写前端的JSON的实体类名来获取;如果使用SSM框架整合的时候可以在Controller层配置Spring的注解@RequestBody可以处理前台传的json数据与后台实体类对应。
首先,功能说明:其实很简单,就是要根据后台返回的json数据在页面创建一个combotree,这个对象需要的是一个树状的json格式。
用你自己的pojo对象接收就可以了,前提是属性值对应上json的KEY就可以了。
url:url,dataType:json,data:{mydata:jsonStr},success:function(data,textStatus){alert(操作成功);},error:function(xhr,status,errMsg){alert(操作失败!);}});第三部,后台方法接收。
【JSON】JSON在前端和后端传递在数据传输过程中,JSON是以文本、即字符串的形式传递的,而JavaScript操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。
如果后端用nodejs的koa库,直接从request.body中获取对应参数即可。
将json字符串儿装换成json对象,然后就可以访问其中的数据了。
如果要给后端传递json数据,就需要增加content-type参数,告诉后端,传递过来的数据格式,并且需要将data转为字符串进行传递。实际上,服务端接收到后,发现是json格式,做的操作就是将字符串转为json对象。
如果是ajax就直接获取如果是传到一个页面就再get再在js中使用%=变量名%就可以获取了。
2. 如何用nodejs搭建web服务器
使用Node.js搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到几个比较重要的模块:http模块、文件系统、url解析模块、路径解析模块、以及301重定向技术等,下面我们就一起来学习如何搭建一个简单的Web服务器。
作为一个Web服务器应具备以下几个功能:
1、能显示以.html/.htm结尾的Web页面
2、能直接打开以.js/.css/.json/.text结尾的文件内容
3、显示图片资源
4、自动下载以.apk/.docx/.zip结尾的文件
5、形如http://xxx.com/a/b/ , 则查找b目录下是否有index.html,如果有就显示,如果没有就列出该目录下的所有文件及文件夹,并可以进一步访问。
6、形如http://xxx.com/a/b, 则作301重定向到http://xxx.com/a/b/ , 这样可以解决内部资源引用错位的问题。
引入需要用到的几个模块:
创建服务并在指定的端口监听:
在创建服务的时候需要传递一个匿名函数processRequest 对请求进行处理,processRequest接收2个参数,分别是request和response, request对象中包含了请求的所有内容,response是用来设置响应头以及对客户端做出响应操作。
请求处理函数中有几个重点需要说一下:
对于路径中有中文的,浏览器会自动进行编码(英文不变,中文会变),因此在接收到地址后,需要对地址进行解码,否则最后得到的路径和真实路径不相符,
当访问路径不是以具体的文件结尾,并且不是以/结尾,则需要通过重定向加上/,表示当前目录,否则当前路径下的静态资源会找不到
如果访问路径是目录,则列出该目录下所有文件及文件夹,并可以点击访问,为了让中文目录能正常显示,则还要在header中设置charset=utf-8
核心代码就这么多,大概140行左右,完整的代码已上传到github:https://github.com/git-onepixel/Node,
如果要运行demo,打开cmd切换到根目录,运行node start 即可。
3. mac上安装node.js弹出来的输入框是什么
输入当前用户的密码
一、Mac 安装 nodejs
前言
由于自己的拓展需求,要临时使用到node.js,所以此次本君就在此mark下 Mac 下node.js的安装和简单的检验示例,给各位小主留个标记,提高下以后的效率。本章对于一些小白而言还是具有普及意义的。
step 1:
访问nodejs官网),点击红色选框区域的v6.10.0 LTS版本并下载,详见下图:
官网版本.png
step 2:
双击刚下载的.pkg文件,打开之后按照步骤默认安装就行,安装完成后的截图如下:
安装完成.png
step 3:
安装完成后,需要进一步验证下版本号等信息,在LaunchPad中打开终端,分别输入 :
npm -v
node -v
两个命令,如下图出现版本信息,说明安装成功。
终端验证版本号.png
step 4:
新建一个js文件,nodejsTest.js , 输入下面的代码, 并保存
打开终端进入 nodejsTest.js 所在目录, 输入 node nodejsTest
终端显示如下:
终端运行.png
打开浏览器,点击或者输入http://127.0.0.1:8000/, 如果无法打开,可以将刚才新建的js文件中的.listen(8000, “127.0.0.1”) 的ip监听改成 .listen(8000),然后点击或者输入http://localhost:8000/
浏览器测试.png
二、#Mac系统下SublimeText运行JavaScript控制台
Sublime Text 2下载地址:(ht.com/)
Sublime Text 2.png
前言
JavaScript控制台的调试和输出在浏览器端的使用算是工作中常用了,作为前端开发主力编辑器Sublime Text本身是不支持JavaScript的输出和运行的。有的时候我们需要看一下输出的效果,不得不借助于F12查看控制台的程序。作为插件系统及其丰富的编辑器,我们可以通过添加Build System的方法来让Sublime Text支持Javascript Console控制台调试。
JSC方式(Mac OS X)
step 1:
Mac内置了一个javascript控制台程序,路径比较深,(可以用命令"open 目录"来打开目录)
打开目录.png
step 2:
启动Sublime Text,Tools > Build System > New Build System,如下图所示:
New Build System.png
step 3:
配置选项内容,保存在默认的User目录
保存.png
菜单SublimeText->preferences->browser pakager,打开目录
打开目录.png
step 4:
新建一个JS文件测试控制台输出效果,使用快捷键Command + B按钮进行调试,需要注意的是这里使用debug,而不能使用console.log;选择编译系统,菜单Tools > Build System > Automatic或者JSC
截图如下所示:
截图.png
NodeJS方式
step 1:
下载安装NodeJS,安装步骤详见上文所述,检查是否安装了NodeJS,在终端中运行 node -v 命令
step 2:
重复上文中JSC方式的第二步,在Build Sytem添加以下内容:保存为NodeJS.sublime-build
按照如上方式操作后,你可能会发现自己怎么不OK呢?!可能自己就是那不幸运的一部分,如果你没有成功也不用着急,可以参考以下方式,接着来Do it!
在终端运行:which node
获取路径如下:/usr/local/bin/node
重新配置如下:
step 3:
测试输出效果:
安装Package Control
如果需要使用Sublime Test安装插件,可以访问这个网站ol.io/installation,按照说明安装Package Control。重启sublime text,在package control Install中搜索这个插件并下载。也就是说这个插件可以在sublime中直接搜索下载。
4. HTTPS和SSH方式的区别和使用
在管理Git项目上,很多时候都是直接使用https url克隆到本地,当然也有有些人使用SSH url克隆到本地。这两种方式的主要区别在于:使用https url克隆对初学者来说会比较方便,复制https url然后到git Bash里面直接用clone命令克隆到本地就好了,但是每次fetch和push代码都需要输入账号和密码,这也是https方式的麻烦之处。而使用SSH url克隆却需要在克隆之前先配置和添加好SSH key,因此,如果你想要使用SSH url克隆的话,你必须是这个项目的拥有者。否则你是无法添加SSH key的,另外ssh默认是每次fetch和push代码都不需要输入账号和密码,如果你想要每次都输入账号密码才能进行fetch和push也可以另外进行设置。
5. nodejs当web服务器行不行
可以呀
使用Node.js搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到几个比较重要的模块:http模块、文件系统、url解析模块、路径解析模块、以及301重定向技术等,下面我们就一起来学习如何搭建一个简单的Web服务器。
作为一个Web服务器应具备以下几个功能:
1、能显示以.html/.htm结尾的Web页面
2、能直接打开以.js/.css/.json/.text结尾的文件内容
3、显示图片资源
4、自动下载以.apk/.docx/.zip结尾的文件
5、形如http://xxx.com/a/b/ , 则查找b目录下是否有index.html,如果有就显示,如果没有就列出该目录下的所有文件及文件夹,并可以进一步访问。
6、形如http://xxx.com/a/b, 则作301重定向到http://xxx.com/a/b/ , 这样可以解决内部资源引用错位的问题。
引入需要用到的几个模块:
创建服务并在指定的端口监听:
在创建服务的时候需要传递一个匿名函数processRequest 对请求进行处理,processRequest接收2个参数,分别是request和response, request对象中包含了请求的所有内容,response是用来设置响应头以及对客户端做出响应操作。
processRequest:function(request,response){varhasExt =true;varrequestUrl = request.url;varpathName = url.parse(requestUrl).pathname;//对请求的路径进行解码,防止中文乱码pathName = decodeURI(pathName);//如果路径中没有扩展名if(path.extname(pathName) ===''){//如果不是以/结尾的,加/并作301重定向if(pathName.charAt(pathName.length-1) !="/"){pathName +="/";varredirect ="http://"+request.headers.host + pathName;response.writeHead(301, {location:redirect});response.end();return;}//添加默认的访问页面,但这个页面不一定存在,后面会处理pathName +="index.html";hasExt =false;//标记默认页面是程序自动添加的}//获取资源文件的相对路径varfilePath = path.join("http/webroot",pathName);//获取对应文件的文档类型varcontentType =this.getContentType(filePath);//如果文件名存在fs.exists(filePath,function(exists){if(exists){response.writeHead(200, {"content-type":contentType});varstream = fs.createReadStream(filePath,{flags:"r",encoding:null});stream.on("error", function() {response.writeHead(500,{"content-type":"text/html"});response.end("<h1>500 Server Error</h1>");});//返回文件内容stream.pipe(response);}else{//文件名不存在的情况if(hasExt){//如果这个文件不是程序自动添加的,直接返回404response.writeHead(404, {"content-type":"text/html"});response.end("<h1>404 Not Found</h1>");}else{//如果文件是程序自动添加的且不存在,则表示用户希望访问的是该目录下的文件列表varhtml ="<head><meta charset='utf-8'></head>";try{//用户访问目录varfiledir = filePath.substring(0,filePath.lastIndexOf('\'));//获取用户访问路径下的文件列表varfiles = fs.readdirSync(filedir);//将访问路径下的所以文件一一列举出来,并添加超链接,以便用户进一步访问for(variinfiles){varfilename = files[i];html +="<div><a href='"+filename+"'>"+filename+"</a></div>";}}catch(e){html +="<h1>您访问的目录不存在</h1>"}response.writeHead(200, {"content-type":"text/html"});response.end(html);}}});}请求处理函数中有几个重点需要说一下:
对于路径中有中文的,浏览器会自动进行编码(英文不变,中文会变),因此在接收到地址后,需要对地址进行解码,否则最后得到的路径和真实路径不相符,
当访问路径不是以具体的文件结尾,并且不是以/结尾,则需要通过重定向加上/,表示当前目录,否则当前路径下的静态资源会找不到
如果访问路径是目录,则列出该目录下所有文件及文件夹,并可以点击访问,为了让中文目录能正常显示,则还要在header中设置charset=utf-8
核心代码就这么多,大概140行左右,完整的代码已上传到github:https://github.com/git-onepixel/Node,
如果要运行demo,打开cmd切换到根目录,运行node start 即可。
6. js,nodejs如何判断文件是什么编码格式
nodejs编码只支持utf8的编码方式,无论是打开某个文件或者写.js脚本都得以utf8的编码方式保存,不然程序无法运行,读出来的文件是乱码。
如果是在前台,读取文件是通过FileReader或者FileReaderSync这两个webAPI和input[type='file']标签来配合来完成,但是这个两个API已经包涵了判断文件的编码方式的功能,无论是GBK还是utf8编码的文件都能正确打开不出现乱码,但是nodejs就会出现这样的问题,读取gbk和unicode编码的文件出现奇怪的乱码,有一个模块iconv-lite可以解决搜信编码问题,但是前提是你得知道这个文件的编码方式,举个例子:
有一个gkb的文件叫gbk.txt正确查看它的方式如下:
var icon=require('iconv-lite');
var fs=require('fs'改漏备)
fs.readFile('gbk.txt',function(err,buffer){
var str=iconv.decode(buffer,'gbk')
console.log(str)//得到无乱码的内容
})
但是如果不知道文件的编码方式,那有该怎么办呢?
那就来聊一聊编码方式,首先UNICODE编码,UNICODE编码的文件无论核毁内容是什么,前两个字节要不是FF FE 或者 FE FF,
utf-8头两个字节是EF BB,至于gbk吧,目前我没找到判断方法,只能粗略的判断如果不是unicode和utf8就认为是GBK,
代码如下:
var fs=require('fs')
fs.readFile('code.txt',function(err,buffer){
if(buffer[0]==0xff&&buffer[1]==0xfe){
console.log('unicode')
}else if(buffer[0]==0xfe&&buffer[1]==0xff){
console.log('unicode')
}else if(buffer[0]==0xef&&buffer[1]==0xbb){
console.log('utf8')
}else{
console.log('else')
}
})
7. nodejs爬虫,html 网页中文乱码处理
在处理彩票网站网页时,遇到了中文乱码问题,这在浏览器正常显示时并未出现。使用Node.js爬取并保存HTML文档后,发现中文部分显示为乱码。
起初,怀疑是网站反爬措施导致的字体替换问题。但查看HTML源码后,发现字符集为gb2312。随后,查阅了关于爬虫乱码及编码转换的相关资料,了解到将GBK编码转为UTF8编码即可解决此问题。
对HTML源码进行分析,发现中文乱码为口字码。为解决此问题,引入了iconv-lite库,该库支持编码间的转换。使用iconv-lite将GBK编码的Buffer转换为UTF8编码,成功解决了中文乱码问题。
在安装和使用iconv-lite时,需注意调用iconv.decode()方法的参数应为Buffer类型。在请求时,确保获取的数据为未经处理的Buffer类型,否则将无法正确转换编码。使用axios进行请求时,可设置响应数据类型为Buffer,以获取未处理的原始数据。对于使用request发送请求的情况,将encoding设置为null即可获取Buffer类型的响应数据。
8. 如何用nodejs搭建web服务器
使用Node.js搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到几个比较重要的模块:http模块、文件系统、url解析模块、路径解析模块、以及301重定向技术等,下面我们就一起来学习如何搭建一个简单的Web服务器。
作为一个Web服务器应具备以下几个功能:
1、能显示以.html/.htm结尾的Web页面
2、能直接打开以.js/.css/.json/.text结尾的文件内容
3、显示图片资源
4、自动下载以.apk/.docx/.zip结尾的文件
5、形如http://xxx.com/a/b/ , 则查找b目录下是否有index.html,如果有就显示,如果没有就列出该目录下的所有文件及文件夹,并可以进一步访问。
6、形如http://xxx.com/a/b, 则作301重定向到http://xxx.com/a/b/ , 这样可以解决内部资源引用错位的问题。
引入需要用到的几个模块:
//http协议模块varhttp = require('http');//url解析模块varurl = require('url');//文件系统模块varfs = require("fs");//路径解析模块varpath = require("path");
创建服务并在指定的端口监听:
//创建一个服务varhttpServer = http.createServer(this.processRequest.bind(this));//在指定的端口监听服务httpServer.listen(port,function(){console.log("[HttpServer][Start]","runing at http://"+ip+":"+port+"/");console.timeEnd("[HttpServer][Start]");});
在创建服务的时候需要传递一个匿名函数processRequest 对请求进行处理,processRequest接收2个参数,分别是request和response, request对象中包含了请求的所有内容,response是用来设置响应头以及对客户端做出响应操作。
processRequest:function(request,response){varhasExt =true;varrequestUrl = request.url;varpathName = url.parse(requestUrl).pathname;//对请求的路径进行解码,防止中文乱码pathName = decodeURI(pathName);//如果路径中没有扩展名if(path.extname(pathName) ===''){//如果不是以/结尾的,加/并作301重定向if(pathName.charAt(pathName.length-1) !="/"){pathName +="/";varredirect ="http://"+request.headers.host + pathName;response.writeHead(301, {location:redirect});response.end();return;}//添加默认的访问页面,但这个页面不一定存在,后面会处理pathName +="index.html";hasExt =false;//标记默认页面是程序自动添加的}//获取资源文件的相对路径varfilePath = path.join("http/webroot",pathName);//获取对应文件的文档类型varcontentType =this.getContentType(filePath);//如果文件名存在fs.exists(filePath,function(exists){if(exists){response.writeHead(200, {"content-type":contentType});varstream = fs.createReadStream(filePath,{flags:"r",encoding:null});stream.on("error", function() {response.writeHead(500,{"content-type":"text/html"});response.end("<h1>500 Server Error</h1>");});//返回文件内容stream.pipe(response);}else{//文件名不存在的情况if(hasExt){//如果这个文件不是程序自动添加的,直接返回404response.writeHead(404, {"content-type":"text/html"});response.end("<h1>404 Not Found</h1>");}else{//如果文件是程序自动添加的且不存在,则表示用户希望访问的是该目录下的文件列表varhtml ="<head><meta charset='utf-8'></head>";try{//用户访问目录varfiledir = filePath.substring(0,filePath.lastIndexOf('\'));//获取用户访问路径下的文件列表varfiles = fs.readdirSync(filedir);//将访问路径下的所以文件一一列举出来,并添加超链接,以便用户进一步访问for(variinfiles){varfilename = files[i];html +="<div><a href='"+filename+"'>"+filename+"</a></div>";}}catch(e){html +="<h1>您访问的目录不存在</h1>"}response.writeHead(200, {"content-type":"text/html"});response.end(html);}}});}
请求处理函数中有几个重点需要说一下:
对于路径中有中文的,浏览器会自动进行编码(英文不变,中文会变),因此在接收到地址后,需要对地址进行解码,否则最后得到的路径和真实路径不相符,
当访问路径不是以具体的文件结尾,并且不是以/结尾,则需要通过重定向加上/,表示当前目录,否则当前路径下的静态资源会找不到
如果访问路径是目录,则列出该目录下所有文件及文件夹,并可以点击访问,为了让中文目录能正常显示,则还要在header中设置charset=utf-8
核心代码就这么多,大概140行左右,完整的代码已上传到github:https://github.com/git-onepixel/Node,
如果要运行demo,打开cmd切换到根目录,运行node start 即可。