js中ajax请求路径设置问题

js是缓存于本地电脑的,那么如果当中的ajax请求路径写localhost是不是就不能访问服务器上的资源(服务器在不同电脑)?那么如果我换了个服务器是不是又要更改ajax的请求路径?有没有办法解决这个问题?就是设置一次就可以

1个回答

设置成相对路劲,不过好像有的地方会找不到

wild84
wild84 我的意思是,当js缓存在本地之后,localhost是不是代表的本地电脑而不是服务器
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
用ajax去读取一个路径上的文件失败,路径显示和设置的不一样显示undefintdata
![图片说明](https://img-ask.csdn.net/upload/201704/30/1493539984_276119.png) ![图片说明](https://img-ask.csdn.net/upload/201704/30/1493539993_228887.png) 应该是getFictionInfo 方法读取本地的data/chapter.json文件 结果调不错来,看报错 请求的路径都好像有点问题,求大神指点
angularJS动态加载controller
页面初始化时向后台发送ajax请求获得js文件路径进行加载 , 但是js文件中的controller无法调用显示XXX is not a function, 求一个能实现调用的方法
iOS webview 实现 代理服务器进行访问 急急急!!!!!!
在自己开发的iosapp的webview中,通过拦截或其他方式,使一个第三方的网页从页面载入到资源加载以及ajax请求都通过代理服务器进行访问,目前在调研过程中只实现了网页首次加载(地址栏变化)的拦截,当html加载到webview中进行解析之后,html里的js,图片以及ajax请求就无法进行拦截,只能获取到请求的地址,即使代理服务器设置成不能访问资源路径,webview上还是成功载入了资源
Js Ajax相同语法执行不同
下面三段js的ajax代码,都是传入username和password访问路径来获取请求,为什么只有第一段代码能正确获取到数据,但是第二段和第三段代码能访问到路径,但是返回的数据显示missing username /** 能正确获取数据的代码 */ var settings = { "url": "http://xxxxxxx/get_data.php?action=projectdata&project=test", "method":"POST", "headers":{ "Content-Type":"text/plain" }, "data":"{\"username\":\"xxxxx\",\"password\":\"xxxxx\"}" } $.ajax(settings).done(function (response) { console.log(response); }) /** 代码2 **/ $.ajax({ url:"http://xxxxxxx/get_data.php?action=projectdata&project=test", type:"POST", data: { "username": "xxxxxx", "password": "xxxxxx" }, dataType:'json', success: function (data) { console.log(data); }, error: function (err) { console.log(err); } }); /** 代码块 3 **/ var xhr = new XMLHttpRequest(); xhr.open("post","http://xxxxxxx/get_data.php?action=projectdata&project=test"); xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded") var sender = "{\"username\":\"xxxxx\",\"password\":\"******\"}"; //var sender = {"username":"xxxxx","password":"xxxxx"}; xhr.send(sender); xhr.onreadystatechange = function () { // 这步为判断服务器是否正确响应 if (xhr.readyState == 4 && xhr.status == 200) { console.log(xhr.responseText); } }; 这三段代码有什么区别吗
请教一种vue项目的语法
``` export function createArt(data) { return request({ url: '/article/create', method: 'post', data }) } ``` 这是在vue的项目中的一段代码,看不懂,怎么可以导出一个函数,这应该是导出 的是函数的返回值吧,也就是函数request()的结果,url里的路径,项目里根本就没有文件夹叫 article的呀,难道是动态生成的,下面的post是什么鬼,又不是发ajax请求,这种语法一般都是用来干什么的
struts 2,ajax返回json的404问题
今天尝试用struts时,发现这样一个问题。 前端ajax发送的请求总是报404。 以下是代码段,请各位看看问题出在哪里。 首先是Struts.xml ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.i18n.encoding" value="UTF-8" /> <constant name="struts.devMode" value="true" /> <package name="user" extends="json-default"> <action name="login" class="com.action.UserAction" method="login"> <result type="json" /> </action> </package> </struts> ``` 接下来是前台的js ``` /*登录方法*/ var login = function(){ $.ajax({ url:'login.action', async:false, dataType:'json', data:{ }, success:function(data){ console.log(data); } }); }; ``` 错误信息: > 404 There is no Action mapped for namespace / and action name login 显示的路径为 > http://localhost:8081/family/login.action ![jar包](https://img-ask.csdn.net/upload/201508/11/1439258093_947264.png) 求教问题究竟在哪里 ----------------------------------------------------------------------------------------- 问题已经找到! 本人手残了 把struts.xml写成了Struts.xml 多谢各位了
请教大神JQUERY ajax的问题
``` 请问代码里的script放在kqwork.js里就运行不了是什么问题,路径没有错,还有 <input type="button" value="上报考勤" id="uploadkq">怎么点击没有任何动作?浏览器请求也没有发送 <!doctype html> <html> <head> <meta charset="utf-8"> <title>考勤</title> <script type="text/javascript" src="../static/kqwork.js" charset="gb2312"></script> <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script> </head> <body> <span>考勤系统测试</span> <input type="button" value="获取考勤" id="getkq" > <input type="button" value="上报考勤" id="uploadkq"> <script> $(function () { $('#getkq').click(function () { $.ajax({ type: "post", dataType: "json", url: "/log", success: function (msg) { var today = new Date(); today.setFullYear(2017, 07, 05); monthDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); year = today.getYear() + 1900; if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) monthDays[1] = 29; nDays = monthDays[today.getMonth()]; firstDay = today; firstDay.setDate(1); startDay = firstDay.getDay(); column = 1; for (j = startDay; j < 7; j++) { kq.rows[1].cells[j].innerHTML = "" + column + "<br/>上午<select id='sel" + column + "'><option value ='1'>上班</option><option value ='3'>休息</option></select><br/>下午<select id='sel_pm" + column + "'><option value ='1'>上班</option><option value ='3'>休息</option></select>"; //$("#sel" + column + "").val(msg[column - 1].cw_work_type); // var checkValue = $("#select_id").val(); //获取Select选择的Value $("#sel" + column + "").val(msg[column - 1].cw_work_type); $("#sel_pm" + column + "").val(msg[column - 1].cw_work_type_pm); column++; } for (i = 2; i < 6; i++) { for (j = 0; j < 7; j++) { kq.rows[i].cells[j].innerHTML = "" + column + "<br/>上午<select id='sel" + column + "'><option value ='1'>上班</option><option value ='3'>休息</option></select><br/>下午<select id='sel_pm" + column + "'><option value ='1'>上班</option><option value ='3'>休息</option></select>"; $("#sel" + column + "").val(msg[column - 1].cw_work_type); $("#sel_pm" + column + "").val(msg[column - 1].cw_work_type_pm); column++; if (column > nDays) break; } } } }); }); /////此处单击事件为何不起作用?浏览器没有向后台发出请求的动作 $('#uploadkq').click(function () { var kq_arry = new Array(); for (i = 1; i < 31; i++) { kq_arry[i - 1] = $("#sel" + i + "").val(); } var kq_json = $.toJSON(kq_arry); $.ajax({ type: "post", dataType: "json", url: "/up", data: kq_arry, }); }); }); </script> <div align="center" id="div" style="position:absolute;width:840px;widt=840px;left:200px;top:100px;"> <TABLE id="kq" border='1' CELLSPACING='0' CELLPADDING='2' BGCOLOR='#B3DFDA'> <TR BGCOLOR='#AADFDA'> <TD background-color:yellow>周日</TD><TD >周一</TD><TD >周二</TD><TD >周三</TD><TD >周四</TD><TD >周五</TD><TD >周六</TD> </TR> <TR> <TD></TD> <TD></TD> <TD></TD> <TD></TD> <TD></TD> <TD></TD> <TD></TD> </TR> <TR> <TD></TD> <TD></TD> <TD></TD> <TD></TD> <TD></TD> <TD></TD> <TD></TD> </TR> <TR> <TD></TD> <TD></TD> <TD></TD> <TD></TD> <TD></TD> <TD></TD> <TD></TD> </TR> <TR> <TD></TD> <TD></TD> <TD></TD> <TD></TD> <TD></TD> <TD></TD> <TD></TD> </TR> <TR> <TD></TD> <TD></TD> <TD></TD> <TD></TD> <TD></TD> <TD></TD> <TD></TD> </TR> </table> </div> </body> </html> ```
关于jquery post请求服务器问题
一个按钮有个点击事件,这个点击事件是 访问服务器的,怎样把这个访问已post形式提交。 其中 jquery API 的post提交例子是这样子的: $.post("test.cgi", { name: "John", time: "2pm" }, function(data){ alert("Data Loaded: " + data); }); 这样子可以访问到服务器,但是是以ajax方式,respond返回的是整个页面的代码,不能跳转页面。 后来我用了javascript的方式来触发一个按钮事件: window.location.href="访问路径"; 但是这个方法是以get方式访问的。 问:在不用表单提交的情况下,和不用ajax的情况下,如何用以post方式访问服务器? 或者用ajax访问也行,但是ajax怎样跳转页面啊?ajax只能接收服务器返回来的文本,在服务器做跳转的话,打开浏览器调试那个respond是返回整个页面代码的。 求大神指导下。不胜感激。
vue中引入了axios 配置了axios.defaults.baseUrl,但是启动访问接口的时候直接是访问成vue默认的端口怎么解决
本人后台人员,对于问题描述不清楚直接上代码: 在vue的mian.js中: ```import axios from 'axios' Vue.config.productionTip = false /* page请求的根路径 */ axios.defaults.baseUrl = 'http://127.0.0.1:8081/admin/' Vue.prototype.$http = axios ``` 在做登录的地方: methods: { ``` /* restLoginForm () { /!* 重置登录表单 *!/ this.$refs.loginRef.resetFields() },*/ valLoginFrom () { this.$refs.loginRef.validate(async (valid) => { if (!valid) { console.log(this) const result = await this.$http.post('login', this.loginForm) console.log(result) } }) } } ``` 在浏览器中:![图片说明](https://img-ask.csdn.net/upload/201911/28/1574917219_55737.png) 希望哪位高手能够帮一下我,实在是不懂,谢谢了
为什么我的我用AJAX提交数据到Servlet最后数据始终是乱码??
这是jsp的页面,数据提交到doPost,然后响应到div里面显示,但是 AJAX中的中文数据提交到Servlet 始终是乱码;怎么改啊,大神们。。。 ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!-- 引入写了AJAX的js文件 --> <script type="text/javascript" src="${pageContext.request.contextPath }/AJAXDemo02POST/ajax_posttext.js"></script> <title>Insert title here</title> </head> <body> <h1>AJAX POST获取数据的练习</h1> <div style="width:300px;height:200px;border:1px solid red;" id="divajax"></div> <input type="button" value="点我获取数据" onclick="ajaxPostText()"/> </body> </html> ``` 这是 写了AJAX的js的文件 function ajaxPostText(){ // 创建异步对象: var xhr = createXMLHttp(); // 设置监听: xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ if(xhr.status == 200){ document.getElementById("divajax").innerHTML = xhr.responseText; } } } // 打开路径: xhr.open("POST","/AJAXDemo01/AJAXDemo01Servlet",true); //这一句没能将提交到post的中文数据编码改掉 xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); // 发送请求: xhr.send("name=张三&pass=密码"); } function createXMLHttp() { var xmlHttp; try { // Firefox, Opera 8.0+, Safari xmlHttp = new XMLHttpRequest(); } catch (e) { try {// Internet Explorer xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { } } } return xmlHttp; } 这是Servlet代码 public class AJAXDemo01Servlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//未完成 request.setCharacterEncoding("UTF-8"); String pass =request.getParameter("pass"); String name = request.getParameter("name"); response.setContentType("text/html;charset=UTF-8"); response.getWriter().println( "名称是:" + name + "密码是:" + pass); System.out.println("名称是:" + name + "密码是:" + pass); } } ![图片说明](https://img-ask.csdn.net/upload/201709/17/1505634495_151318.png)
jsp页面不能下载css,js文件以及图片
本人学生党一枚。自己写了一个web程序,本来是想着采用springMVc+mybatis+ajax技术写的。js后端和数据库的框架已经架构好了。但是测备架构前段代码时 遇到请求jsp文件时,jsp文件不能下载css,图片,以及js文件。 求大神指导!!!! ps:自己本地打开html文件时,所有都能正确显示。说明我的路径什么的都正确。
如何获取浏览器缓存里的URL资源的最后修改时间?
我用ajax请求资源 /xxx/a.html的数据 [list] [*]a.html页面保存了很大量的数据,所以想用缓存,不重新加载。 [*]但a.html又经常被修改,修改后必须重新请求新的数据。 [/list] 所以加上.setRequestHeader("If-Modified-Since",日期)来告诉服务器上次加载过的该文件的时间,使其在修改后重新加载。 [color=red]但是如何通过js获取该资源留在缓存中的上次修改时间是关键!请大虾们指点![/color] [b]问题补充:[/b] 回1F: 这种处理方式我觉得有点问题,但如果你已经加载过一次a.html,把浏览器关了,再重新访问的时候,就算原资源没有改,但不得不再加载一次,因为浏览器里已经没有那个值了,这个值只有缓存里有(我这个文件挺大的,所以比较吝惜请求次数了)。 回2F: 后面您说的方法:在客户端请求的时候,若认为资源已经修改了,主动在路径后面加(变)参数让服务器得知我请求的是新的资源。我觉得这确实能得到新的数据,但是逻辑上有点问题。(是不是我理解的问题) 客户端在请求的时候,通过js访问远程a.html的时候,是无法知道将要请求的资源对象是否刚修改过了。我怎么能知道什么时候加(变)这样的参数呢。(这个资源是静态资源)。 Last-Modified 是服务器发送HTTP响应的时候组装到包内的。但请求的时候浏览器通常会自动给请求包上打上If-Modified-Since时间戳。但是我测试过程中发现,通过ajax动态请求资源的时候,IE默认使用浏览器缓存,根本就不发数据包,加上 request的If-Modified-Since属性后,会发数据包了,但是这个时间应该设为缓存中最后的修改时间。如何获得不得而知了。 多谢您的积极解答,祝愉快。 [b]问题补充:[/b] 多谢,JQuery有个lastmodified[url],就是没有看出来怎么实现的,没看懂。
spring boot设置了Access-Control-Allow-Origin还是有跨域问题
最近使用spring cloud框架进行前后端分离开发,因为我们是通过网关去访问后台接口,ip 、端口都相同,所以没有出现过跨域问题,但是前端的同事把项目用webstrom打开以后(端口和ip就成了webstrom分配的)就有了跨域问题无法请求到后台,浏览器报"CORS 头缺少 'Access-Control-Allow-Origin'",但是我们已经在网关里设置了Access-Control-Allow-Origin为*,代码如下: ``` @Service public class AuthFilter extends ZuulFilter { /** * 日志对象 */ private static final Logger logger = LoggerFactory.getLogger(AuthFilter.class); @Autowired private FilterConfig filterConfig; /** * redis缓存 */ @Autowired private RedisService redisService; @Override public boolean shouldFilter() { return true; } @Override public Object run() { RequestContext ctx = RequestContext.getCurrentContext(); HttpServletRequest request = ctx.getRequest(); HttpServletResponse response = ctx.getResponse(); //解决浏览器跨域问题 response.addHeader("Access-Control-Allow-Origin", "*"); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); // response.addHeader("Access-Control-Allow-Credentials", "true"); // response.addHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, OPTIONS, PATCH"); // response.addHeader("Access-Control-Max-Age", "3600"); // response.addHeader("Vary", "Origin"); response.addHeader("Access-Control-Allow-Headers", "token,accesstoken,Content-type"); //请求接口URL时登录token有效性校验 return null; } @Override public String filterType() { return "pre"; } @Override public int filterOrder() { return 0; } } ``` 对此我在本地随便写了个小项目还原了当时的情景,我把代码以及报错贴出来麻烦各位看一下哪里有不对的; 前端代码: ``` <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/jquery-1.9.1.min.js"></script> </head> <script> function t1(){ $.ajax({ url:'http://localhost:9001/xzw/say', type:'post', contentType : 'application/json;charset=utf-8', dataType:'json', data : JSON.stringify({ batch_id : 'ncveirugheasolvgil' }), success : function(data){ alert('成功跨域'); alert(data); }, error : function(){ alert('error'); } }) } </script> <body> <input type="button" value="测试跨域是否能获取数据" onclick="t1()"/> </body> </html> ``` 后台代码: ``` @RestController @RequestMapping("/xzw") public class PageDemoController { @RequestMapping("/say") public String say(HttpServletRequest request,HttpServletResponse response,@RequestParam(value="batch_id")String batch_id){ response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.addHeader("Access-Control-Allow-Headers", "*"); System.out.println("batch_id="+batch_id); return "hello world"; } } ``` 浏览器报错 > 已拦截跨源请求:同源策略禁止读取位于 http://localhost:9001/xzw/say 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。[详细了解] > > 已拦截跨源请求:同源策略禁止读取位于 http://localhost:9001/xzw/say 的远程资源。(原因:CORS 请求未能成功)。[详细了解] 我们项目里的拦截器原本除了设置Access-Control-Allow-Origin还有验证token的代码,前端如果先进行登陆然后在ajax请求的时候把token拿到放在header里就不会有跨域问题,我把token验证的代码去掉了就出现了跨域问题,但是我看验证token的逻辑判断对跨域没有什么特殊的处理,一下为拦截器原代码: ``` public Object run() { RequestContext ctx = RequestContext.getCurrentContext(); HttpServletRequest request = ctx.getRequest(); HttpServletResponse response = ctx.getResponse(); //解决浏览器跨域问题 response.addHeader("Access-Control-Allow-Origin", "*"); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); // response.addHeader("Access-Control-Allow-Credentials", "true"); // response.addHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, OPTIONS, PATCH"); // response.addHeader("Access-Control-Max-Age", "3600"); // response.addHeader("Vary", "Origin"); response.addHeader("Access-Control-Allow-Headers", "token,accesstoken,Content-type"); //请求接口URL时登录token有效性校验 Object token = request.getHeader("token"); if(token==null||token.equals("")) { token = null; } boolean flag = false;//请求路径是否在过滤范围标识 if ("OPTIONS".equalsIgnoreCase(request.getMethod())) { ctx.setSendZuulResponse(false); return null; } String ignores = filterConfig.getIgnores(); if(!StringUtilHelper.isEmpty(ignores)) { String[] ignores_arr = ignores.split(","); for(String ignore:ignores_arr) { if(request.getRequestURI().toString().contains(ignore)) { //无需token校验 flag = true; break; } } } logger.info("网关日志:method={}, uri={},result={},token={}",request.getMethod(), request.getRequestURI(), (true==flag?"无需token校验":"需要token校验"),token); if(!flag) { //需要校验token有效性 if(token==null) { ctx.setSendZuulResponse(false); ctx.setResponseStatusCode(HttpServletResponse.SC_UNAUTHORIZED); ctx.setResponseBody("token为空,未认证用户"); return null; } else { //redis校验 if(redisService.check(token.toString())!=ServiceConstants.STATE_1) { ctx.setSendZuulResponse(false); ctx.setResponseStatusCode(HttpServletResponse.SC_UNAUTHORIZED); ctx.setResponseBody("token超时,请重新登录"); return null; } } } return null; } ```
spring后端restful格式接口使用nginx报404错误
项目进行前后端分离,后端接口在服务起来后直接访问没有问题 后端服务地址:localhost:8081 测试接口是否正常地址:localhost:8081/index 请求方式是GET ![图片说明](https://img-ask.csdn.net/upload/201911/05/1572917302_14176.png) ![图片说明](https://img-ask.csdn.net/upload/201911/05/1572917558_704068.png) 配置nginx ``` http { default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://127.0.0.1:8080; proxy_redirect default; #设置主机头和客户端真实地址,以便服务器获取客户端真实IP proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /test { # 自定义nginx接口前缀 include uwsgi_params; proxy_pass http://127.0.0.1:8081; # 后台api接口地址 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } } ``` 访问地址:http://localhost/test/index 会提示404,并且返回的是我后端spring预设的404页面,所以感觉后台是访问到了,但是为啥会出404呢?是我路径没配正确吗? ![图片说明](https://img-ask.csdn.net/upload/201911/05/1572917609_886715.png) 为什么会用这个访问地址测试,是因为我前端是vue+axios,所以我使用get方法传入的url参数是/test/index ,他浏览器里请求的就是这个地址,所以我就想直接拿这个路径来试了,这样正确吗?然后怎么样才能解决这个404问题正常调用接口解决跨域请求呢?求大佬指教! ======================================= 补充一下: 前端服务访问地址:localhost:8080 在我启动nginx后,访问localhost是能出现我的前端首页的 404页面只有html内容,也没加载出样式来
vs2017 asp.net web 应用程序 初学打不开网页。我iis都配置好了,asp.net 也装了
HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。 最可能的原因: 可能是缺少处理程序映射。默认情况下,静态文件处理程序将处理所有内容。 您要使用的功能可能尚未安装。 没有为网站或应用程序启用相应的 MIME 映射。(警告: 请不要为用户不应下载的 .ASPX 页或 .config 文件等内容创建 MIME 映射。) 如果未安装 ASP.NET。 可尝试的操作: 在 system.webServer/handlers 中: 确保映射了当前页所需的处理程序。 请特别注意前提(例如,runtimeVersion、pipelineMode、bitness)并将这些前提与应用程序池的设置进行比较。 请特别注意所需处理程序行中的书写错误。 请确认要使用的功能已经安装。 确认启用了 MIME 映射,或使用命令行工具 appcmd.exe 为网站添加 MIME 映射。 要设置 MIME 类型,请使用以下语法: %SystemRoot%\windows\system32\inetsrv\appcmd set config /section:staticContent /+[fileExtension='string',mimeType='string'] 变量 fileExtension 字符串是文件扩展名,变量 mimeType 字符串是文件类型说明。 例如,要为扩展名为“.xyz”的文件添加 MIME 映射: appcmd set config /section:staticContent /+[fileExtension='.xyz',mimeType='text/plain'] 警告: 请在确认您的 Web 服务器需要此 MIME 映射之后再将其添加到列表中。配置文件(如 .CONFIG)或动态脚本页(如 .ASP 或 .ASPX)不应直接下载,应始终通过处理程序来处理。有时会使用其他文件(如数据库文件或 .XML 或 .MDF 等用于存储配置的文件)来存储配置信息。请先确认客户端能否下载这些类型的文件,然后再启用这些文件。 安装 ASP.NET。 创建跟踪规则以跟踪此 HTTP 状态代码的失败的请求。有关为失败的请求创建跟踪规则的详细信息,请单击此处。 详细错误信息: 模块 StaticFileModule 通知 ExecuteRequestHandler 处理程序 StaticFile 错误代码 0x80070032 请求的 URL http://localhost:80/ZwcWeb/ZwcWelcome.aspx 物理路径 G:\VS\WebApp\ZwcWeb\ZwcWeb\ZwcWelcome.aspx 登录方法 匿名 登录用户 匿名 详细信息: 当所请求 URL 的文件扩展名是针对未在服务器上配置的 MIME 类型时,便会发生此错误。您可以为动态脚本页、数据库或配置文件以外的文件的文件扩展名添加 MIME 类型。这些文件类型使用一个处理程序来处理。您不应允许直接下载动态脚本页、数据库或配置文件。 查看详细信息 »
SpringMVC+JQuery ajax 总会跳转到一个输出返回值json页面
``` 前台代码 <script type="text/javascript"> function saveShopping(){ var tsid =[] $("input[name='tsid']:checked").each(function(){ tsid.push($(this).val()); if(tsid.length==0){ alert("你没有选择任何图书"); } }); alert(tsid); var url ="${pageContext.request.contextPath}/savaShopping?tsid="+tsid; if(tsid!=null){ alert(url); $.ajax({ url:url, type:"post", dataType:"json", async:false, beforeSend:function(data){ alert("发送成功"); }, success:function(data){ alert(data.msg); }, error:function(){ alert("出现错误"); } } ); }else{ alert("请选择购买的书籍") } } </script> 后台controler //放入购物车 @RequestMapping(value="savaShopping") @ResponseBody public Map saveShopping(@RequestParam String[] tsid){ for (int i = 0; i < tsid.length; i++) { long date1 = new Date().getTime(); BC_shopping shopping = new BC_shopping(); shopping.setS_date(date1); shopping.setS_num(1); shopping.setS_b_id(Integer.parseInt(tsid[i])); shoppingService.insertShopping(shopping); } Map<String, String> map = new HashMap<String, String>(); map.put("msg", "加入购物车成功"); return map; } 配置文件 <!-- 使spring扫描包下的所有类,让标注spring注解的类生效 --> <context:component-scan base-package="com.bk"/> <mvc:annotation-driven></mvc:annotation-driven> <!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> <!-- 访问静态资源 --> <mvc:resources location="/css/" mapping="/css/**"></mvc:resources> <mvc:resources location="/images/" mapping="/images/**"></mvc:resources> <mvc:resources location="/js/" mapping="/js/**"></mvc:resources> <!-- 完成请求和注解POJO的映射 --> <!--springmvc 3.1之前的配置 --> <!-- <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="jsonConverter"/> </list> </property> </bean> --> <!--springmvc 3.1之后的配置 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" p:ignoreDefaultModelOnRedirect="true" > <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/> </list> </property> </bean> ajax能 success 能接受到 返回的map之后 就跳转到下面的页面 图片上传不成功:就是在页面展示出map的json格式,就是在页面有一句 {"msg":"加入购物车成功"}
zTree显示问题,请大神赐教
``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <link rel="stylesheet" href="/finrst_maven/static/css/demo.css"> <link rel="stylesheet" href="/finrst_maven/static/css/zTreeStyle/zTreeStyle.css" type="text/css"/> <script type="text/javascript" src="/finrst_maven/static/js/jquery-1.7.2.min.js"></script> <script type="text/javascript" src="/finrst_maven/static/js/zTree/jquery.ztree.all-3.5.js"></script> <script type="text/javascript" src="/finrst_maven/static/js/zTree/jquery.ztree.all-3.5.min.js"></script> <script type="text/javascript" src="/finrst_maven/static/js/zTree/jquery.ztree.core-3.5.js"></script> <script type="text/javascript" src="/finrst_maven/static/js/zTree/jquery.ztree.core-3.5.min.js"></script> <script type="text/javascript" src="/finrst_maven/static/js/zTree/jquery.ztree.excheck-3.5.js"></script> <script type="text/javascript" src="/finrst_maven/static/js/zTree/jquery.ztree.excheck-3.5.min.js"></script> <script type="text/javascript"> // zTree 的参数配置,深入使用请参考 API 文档(setting 配置详解) var setting = { data: { simpleData: { enable: true, idKey: "id", pIdKey: "pId", rootPId: 0 } }, check:{ enable:true, chkStyle:"checkbox", chkboxType :{ "Y" : "ps", "N" : "ps" } }, }; // zTree 的数据属性,深入使用请参考 API 文档(zTreeNode 节点数据详解) var zTree; var treeNodes; $(function(){ $.ajax({ async : false, cache:false, type: 'POST', dataType : "json", url: "/finrst_maven/ztree/showZtree",//请求的action路径 error: function () {//请求失败处理函数 alert('fail'); }, success:function(data){ //请求成功后处理函数。 console.log(data); treeNodes = data; //把后台封装好的简单Json格式赋给treeNodes } }); $.fn.zTree.init($("#tree"), setting, treeNodes); }); </script> <body> <ul id="tree" class="ztree"></ul> </body> </html> ``` 这是jsp中的代码,但是checkBox不能显示,而且左侧的加减号也没显示,求大神赐教,不胜感激 图片结果:![图片说明](https://img-ask.csdn.net/upload/201608/06/1470487305_924496.png)
关于微信支付的支付授权目录是如何定义的
最近在做微信支付v3版的开发,在测试时报access_control:not_allow.查了资料发现应该是支付授权目录不对的原因。这里请教下:我的页面是在WEB-INF目录下的,那么我的支付授权目录是否应该包括WEB-INF这一级?因为WEB-INF下的页面客户端是无法直接访问的,需要由后台跳解析转到。那么这里再衍生出一个问题,由于微信支付本身是JS方式的Ajax请求,因此它判断来路页面就是支付页面URL,而这个URL就应该是微信浏览器的URL,也就是说支付授权目录是根据微信浏览器的URL来判断的。再者我的项目是spring mvc架构的,浏览器上显示的url通常都是:http://***/weixinPay/pay 这种类型的,是不直接显示映射到的jsp页面的路径的。所以,我的问题是:对于spring mvc架构的项目而言,微信支付的授权目录应该怎样定义?授权目录的页面能够放在WEB-INF目录下?谢谢。再次觉得腾讯做的东西真是太坑了。
Ext.Ajax.request做文件上传不执行回调函数?
我在做一个多文件上传,整体用的EXT,所以想用EXT的异步请求完成上传,上传没问题,就是上传完了,不执行回调函数,老自动弹一个下载"uploadFile.action"文件,其实就是一个json,好像是根本没执行回调函数,求各位老鸟解释下,并帮我解决,我不想别人上传完,总提示下载"uploadFile.action"。 页面代码: [code="java"] <form id="uploadForm" action="uploadFile.action"> <table border="0" cellspacing="1" class="fu_list"> <thead> <tr> <td colspan="2"><b>上传附件</b></td> </tr> </thead> <tbody> <tr> <td align="right" width="15%" style="line-height:35px;">添加附件:</td> <td><a href="javascript:void(0);" class="files" id="idFile"></a> <img id="idProcess" style="display:none;" src="../../images/upload/loading.gif" /></td> </tr> <tr id="fileList" style="display: none"> <td colspan="2"><table border="0" cellspacing="0"> <thead> <tr> <td>文件路径</td> <td width="100"></td> </tr> </thead> <tbody id="idFileList" name="idFileList"> </tbody> </table></td> </tr> <tr> <td colspan="2" style="color:gray">温馨提示:最多可同时上传 <b id="idLimit"></b> 个文件,只允许上传 <b id="idExt"></b> 文件。 </td> </tr> <tr id="uploadButton" style="display: none"> <td colspan="2" align="center" id="idMsg"><input type="button" value="开始上传" id="idBtnupload" disabled="disabled" /> &nbsp;&nbsp;&nbsp; <input type="button" value="全部取消" id="idBtndel" disabled="disabled" /> </td> </tr> </tbody> </table> </form> <SCRIPT type="text/javascript"> //以下为附件js代码 var isIE = (document.all) ? true : false; var $ = function (id) { return "string" == typeof id ? document.getElementById(id) : id; }; var Class = { create: function() { return function() { this.initialize.apply(this, arguments); } } } var Extend = function(destination, source) { for (var property in source) { destination[property] = source[property]; } } var Bind = function(object, fun) { return function() { return fun.apply(object, arguments); } } var Each = function(list, fun){ for (var i = 0, len = list.length; i < len; i++) { fun(list[i], i); } }; //提交操作 function doUpload(){ if(Efs.getExt("uploadForm").isValid()){ myMask.show(); Ext.Ajax.request({ //请求地址 url: 'uploadFile.action', //提交参数组 fileUpload: true, form: uploadForm, scope: uploadForm, //成功时回调 success: function(response, options) { //获取响应的json字符串 myMask.hide(); var json = response.responseText; var o= Ext.util.JSON.decode(json); // var s="<s:text name="o.msg"/>"; var s=o.msg; Ext.Msg.alert('<s:text name="msg_title"/>', s); }, failure: function (response,options){ myMask.hide(); var st='<s:text name="'+o.msg+'"/>'; Ext.Msg.alert('<s:text name="msg_title"/>', st); } }); } else Ext.Msg.alert('<s:text name="msg_title"/>', '<s:text name="msg_mustFill"/>'); } //文件上传 var FileUpload = Class.create(); FileUpload.prototype = { //表单对象,文件控件存放空间 initialize: function(form, folder, options) { this.Form = $(form);//表单 this.Folder = $(folder);//文件控件存放空间 this.Files = [];//文件集合 this.SetOptions(options); this.FileName = this.options.FileName; this._FrameName = this.options.FrameName; this.Limit = this.options.Limit; this.Distinct = !!this.options.Distinct; this.ExtIn = this.options.ExtIn; this.ExtOut = this.options.ExtOut; this.onIniFile = this.options.onIniFile; this.onEmpty = this.options.onEmpty; this.onNotExtIn = this.options.onNotExtIn; this.onExtOut = this.options.onExtOut; this.onLimite = this.options.onLimite; this.onSame = this.options.onSame; this.onFail = this.options.onFail; this.onIni = this.options.onIni; if(!this._FrameName){ //为每个实例创建不同的iframe this._FrameName = "uploadFrame_" + Math.floor(Math.random() * 1000); //ie不能修改iframe的name var oFrame = isIE ? document.createElement("<iframe name=\"" + this._FrameName + "\">") : document.createElement("iframe"); //为ff设置name oFrame.name = this._FrameName; oFrame.style.display = "none"; //在ie文档未加载完用appendChild会报错 document.body.insertBefore(oFrame, document.body.childNodes[0]); } //设置form属性,关键是target要指向iframe this.Form.target = this._FrameName; this.Form.method = "post"; //注意ie的form没有enctype属性,要用encoding this.Form.encoding = "multipart/form-data"; //整理一次 this.Ini(); }, //设置默认属性 SetOptions: function(options) { this.options = {//默认值 FileName: "files",//文件上传控件的name,配合后台使用 FrameName: "",//iframe的name,要自定义iframe的话这里设置name onIniFile: function(){},//整理文件时执行(其中参数是file对象) onEmpty: function(){},//文件空值时执行 Limit: 0,//文件数限制,0为不限制 onLimite: function(){},//超过文件数限制时执行 Distinct: true,//是否不允许相同文件 onSame: function(){},//有相同文件时执行 ExtIn: [],//允许后缀名 onNotExtIn: function(){},//不是允许后缀名时执行 ExtOut: [],//禁止后缀名,当设置了ExtIn则ExtOut无效 onExtOut: function(){},//是禁止后缀名时执行 onFail: function(){},//文件不通过检测时执行(其中参数是file对象) onIni: function(){}//重置时执行 }; Extend(this.options, options || {}); }, //整理空间 Ini: function() { //整理文件集合 this.Files = []; //整理文件空间,把有值的file放入文件集合 Each(this.Folder.getElementsByTagName("input"), Bind(this, function(o){ if(o.type == "file"){ o.value && this.Files.push(o); this.onIniFile(o); } })) //插入一个新的file var file = document.createElement("input"); file.name = this.FileName; file.type = "file"; file.onchange = Bind(this, function(){ this.Check(file); this.Ini(); }); this.Folder.appendChild(file); //执行附加程序 this.onIni(); //添加附件成功,显示列表 if(this.Files.length>0){ document.getElementById('fileList').style.display=""; document.getElementById('uploadButton').style.display=""; } }, //检测file对象 Check: function(file) { //检测变量 var bCheck = true; //空值、文件数限制、后缀名、相同文件检测 if(!file.value){ bCheck = false; this.onEmpty(); } else if(this.Limit && this.Files.length >= this.Limit){ bCheck = false; this.onLimite(); } else if(!!this.ExtIn.length && !RegExp("\.(" + this.ExtIn.join("|") + ")$", "i").test(file.value)){ //检测是否允许后缀名 bCheck = false; this.onNotExtIn(); } else if(!!this.ExtOut.length && RegExp("\.(" + this.ExtOut.join("|") + ")$", "i").test(file.value)) { //检测是否禁止后缀名 bCheck = false; this.onExtOut(); } else if(!!this.Distinct) { Each(this.Files, function(o){ if(o.value == file.value){ bCheck = false; } }) if(!bCheck){ this.onSame(); } } //没有通过检测 !bCheck && this.onFail(file); }, //删除指定file Delete: function(file) { //移除指定file this.Folder.removeChild(file); this.Ini(); if(this.Folder.getElementsByTagName("input").length==1){//没有附件时隐藏 document.getElementById('fileList').style.display="none"; document.getElementById('uploadButton').style.display="none"; } }, //删除全部file Clear: function() { //清空文件空间 Each(this.Files, Bind(this, function(o){ this.Folder.removeChild(o); })); this.Ini(); document.getElementById('fileList').style.display="none";//清空同样隐藏 document.getElementById('uploadButton').style.display="none"; } } var fu = new FileUpload("uploadForm", "idFile", { Limit: 3, ExtIn: [], onIniFile: function(file){ file.value ? file.style.display = "none" : this.Folder.removeChild(file); }, onEmpty: function(){ alert("请选择一个文件"); }, onLimite: function(){ alert("超过上传限制"); }, onSame: function(){ alert("已经有相同文件"); }, // ExtIn: ["jpg", "gif"] 可以限制上传文件后缀名,不写即为所有 // onNotExtIn: function(){ alert("只允许上传" + this.ExtIn.join(",") + "文件"); }, onFail: function(file){ this.Folder.removeChild(file); }, onIni: function(){ //显示文件列表 var arrRows = []; if(this.Files.length){ var oThis = this; Each(this.Files, function(o){ var a = document.createElement("a"); a.innerHTML = "取消"; a.href = "javascript:void(0);"; a.onclick = function(){ oThis.Delete(o); return false; }; arrRows.push([o.value, a]); }); } else { arrRows.push(["<font color='gray'>没有添加文件</font>", "&nbsp;"]); } AddList(arrRows); //设置按钮 //$("idBtnupload").disabled = $("idBtndel").disabled = this.Files.length <= 0; } }); $("idBtnupload").onclick = function(){ //显示文件列表 var arrRows = []; Each(fu.Files, function(o){ arrRows.push([o.value, "&nbsp;"]); }); AddList(arrRows); fu.Folder.style.display = "none"; $("idProcess").style.display = ""; $("idMsg").innerHTML = "正在添加文件到您的网盘中,请稍候……<br />有可能因为网络问题,出现程序长时间无响应,请点击“<a href='?'><font color='red'>取消</font></a>”重新上传文件"; doUpload(); $("idProcess").style.display = "none"; //fu.Form.submit(); } //用来添加文件列表的函数 function AddList(rows){ //根据数组来添加列表 var FileList = $("idFileList"), oFragment = document.createDocumentFragment(); //用文档碎片保存列表 Each(rows, function(cells){ var row = document.createElement("tr"); Each(cells, function(o){ var cell = document.createElement("td"); if(typeof o == "string"){ cell.innerHTML = o; }else{ cell.appendChild(o); } row.appendChild(cell); }); oFragment.appendChild(row); }) //ie的table不支持innerHTML所以这样清空table while(FileList.hasChildNodes()){ FileList.removeChild(FileList.firstChild); } FileList.appendChild(oFragment); } $("idLimit").innerHTML = fu.Limit; $("idExt").innerHTML = fu.ExtIn.join(","); $("idBtndel").onclick = function(){ fu.Clear(); } //在后台通过window.parent来访问主页面的函数 //function Finish(msg){ alert(msg); location.href = location.href; } <SCRIPT> [/code] struts配置文件(用的插件自动生成json): [code="java"] <action name="*File" method="{1}" class="com.web.action.UploadFile"> <result type="json" name="success"> <param name="includeProperties">msg</param> <param name="excludeNullProperties">true</param> </result> <result type="json" name="error"> <param name="includeProperties">msg</param> <param name="excludeNullProperties">true</param> </result> </action> [/code] 后台UploadFile.java的代码 [code="java"] package com.web.action; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.common.pojo.AppUser; import com.opensymphony.xwork2.ActionContext; /** * 负责文件的上传 */ public class UploadFile { private File[] files; private String[] filesFileName; private Map<String, String> filesPath;// 文件名及其上传后路径 private String msg; public String upload() { /* * Map session=ActionContext.getContext().getSession(); AppUser * user=(AppUser) session.get("user"); if(user==null){ return "error"; } */ msg="上传成功!"; for (int i = 0; i < files.length; i++) { fileCopy(files[i], filesFileName[i]); } return "success"; } private void fileCopy(File file, String fileName) { BufferedInputStream bis = null; BufferedOutputStream bos = null; String realPath = ServletActionContext. getServletContext().getRealPath("/upload/" + fileName); System.out.println(realPath); try { bis = new BufferedInputStream(new FileInputStream(file)); bos = new BufferedOutputStream(new FileOutputStream(new File( realPath))); byte[] buffer = new byte[1024 * 8]; int i = -1; while ((i = bis.read(buffer)) != -1) { bos.write(buffer,0,i); } bos.flush(); } catch (Exception e) { System.out.println("上传异常!"); msg="上传出错!"; e.printStackTrace(); }finally{ try { if (bis != null) bis.close(); if (bos != null) bos.close(); } catch (IOException e1) { System.out.println("上传结束异常!"); e1.printStackTrace(); } } } public File[] getFiles() { return files; } public void setFiles(File[] files) { this.files = files; } public String[] getFilesFileName() { return filesFileName; } public void setFilesFileName(String[] filesFileName) { this.filesFileName = filesFileName; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } } [/code]
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
《阿里巴巴开发手册》读书笔记-编程规约
Java编程规约命名风格 命名风格 类名使用UpperCamelCase风格 方法名,参数名,成员变量,局部变量都统一使用lowerCamelcase风格 常量命名全部大写,单词间用下划线隔开, 力求语义表达完整清楚,不要嫌名字长 ...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
Python爬虫精简步骤1 获取数据
爬虫的工作分为四步: 1.获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。 2.解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 3.提取数据。爬虫程序再从中提取出我们需要的数据。 4.储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。 这一篇的内容就是:获取数据。 首先,我们将会利用一个强大的库——requests来获取数据。 在电脑上安装
Python绘图,圣诞树,花,爱心 | Turtle篇
1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle() circle.shape('circle') circle.color('red') circle.speed('fastest') circle.up() square = turtle.Turtle()
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
为什么听过很多道理,依然过不好这一生?
记录学习笔记是一个重要的习惯,不希望学习过的东西成为过眼云烟。做总结的同时也是一次复盘思考的过程。 本文是根据阅读得到 App上《万维钢·精英日课》部分文章后所做的一点笔记和思考。学习是一个系统的过程,思维模型的建立需要相对完整的学习和思考过程。以下观点是在碎片化阅读后总结的一点心得总结。
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计
Linux 命令(122)—— watch 命令
1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 [1] watch(1) manual
Linux 命令(121)—— cal 命令
1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 [1] cal(1) manual
记jsp+servlet+jdbc实现的新闻管理系统
1.工具:eclipse+SQLyog 2.介绍:实现的内容就是显示新闻的基本信息,然后一个增删改查的操作。 3.数据库表设计 列名 中文名称 数据类型 长度 非空 newsId 文章ID int 11 √ newsTitle 文章标题 varchar 20 √ newsContent 文章内容 text newsStatus 是否审核 varchar 10 news...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告(本文) 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问