ajax通过js文件引入后的url问题

大致情况:我用TP5.1和ajax想要实现图片上传的需求,开始我是把ajax写在html模板中的图片上传没有问题,后来考虑到代码规范的问题,不想把代码都写在一起,而是单独写在一个js文件中去引入,结果图片上传失败。

ajax与html写在同一个页面时通过: url:"{:url('模块名/控制器名/方法名')}" 就可以向该方法发生请求。

    $.ajax({
        type : "POST",
        url:"{:url('admin/Del/delAdmin')}",
        dataType:"json",
        data:{"admin":admin},
        success : function(data){
            window.location.reload();
            alert(data);
        },
        error:function(){
            alert('删除失败');
        }
    });

把该代码写在js文件中放在public/static 下引入后的url应该怎么改

2个回答

因为{:url('admin/Del/delAdmin')}是模板中的标签,在解析输出模板到浏览器成html页面时,会替换为实际的url地址。
写在js文件中没有解析输出的过程,就不会替换了。

你可以在模板中把{:url('admin/Del/delAdmin')}输出到js的全局变量中,然后在js文件中使用这个变量。
模板:

<script type="text/javascript">
var myUrl = "{:url('admin/Del/delAdmin')}";
</script>
<script type="text/javascript" src="xxxx.js"></script>

xxx.js文件:

    $.ajax({
        type : "POST",
        url: myUrl,
        dataType:"json",
        data:{"admin":admin},
        success : function(data){
            window.location.reload();
            alert(data);
        },
        error:function(){
            alert('删除失败');
        }
    });

ROOT_PATH . 'public' . DS . 'static

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于.net 中ajax获取值问题
``` ajax.aspx页面: namespace SGweb.Web.ajax { public partial class ajax : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string type = Request.QueryString["Type"]; if (type.Equals("buildinglist")) { Response.Write("yes"); } } } } BuildingList.aspx前台: <body> <form id="form1" action="BuildingList.aspx" runat="server"> <div><a href="javascript:;" onclick="Del1(this)" >删除</a> </div> <script type="text/javascript" src="/lib/jquery/1.9.1/jquery.min.js"></script> <script type="text/javascript" src="/lib/layer/2.4/layer.js"></script> <script type="text/javascript"> function Del1(obj) { layer.confirm('确认吗?', function (index) { $.ajax({ type: 'POST', url: '/ajax/ajax.aspx?Type=buildinglist', dataType: 'text', success: function (data) { if (data == "yes") { layer.msg('删除成功!'); location.replace(location.href); } else { layer.msg('删除失败!'); } }, error: function (data) { console.log(data.msg); }, }); }); } </script> </form> </body> 改引入的文件都引入了,路径都对,当点击时没有反应,实在找不到原因了 ```
JSP使用JQery的ajax出现问题,麻烦各位解答
``` 背景: 楼主用MyEclipse建了一个Web项目,使用JSP,其中有<%%>内的java代码以及js代码,在项目中还有一个servlet 现在,想实现这样一个效果: 当在jsp中点击一下<form>中的一个button时候,调用js一个funcition,把js一个全局变量传给servlet 百度了一下,好像JQery的ajax可以实现,但是楼主按照教程写下代码之后发现项目没有反应,不清楚错在哪里,麻烦大家赐教。 具体情况: servlet代码 public class test extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String countid_str =request.getParameter("countid"); int countid = Integer.parseInt(countid_str); Main.countPV = countid; Main.getPV(); } } servlet 的 web.xml 配置: <servlet> <servlet-name>test</servlet-name> <servlet-class>servlet.test</servlet-class> </servlet> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> 项目引入的jq ![图片说明](https://img-ask.csdn.net/upload/201604/22/1461255692_57877.jpg) js中全局变量countbv ![图片说明](https://img-ask.csdn.net/upload/201604/22/1461255722_705860.jpg) 单机触发js事件的form <form action="test" method="post" class="list"> <input type="button" id="deal" value="deal" onClick="btn_deal()"> </form> js事件 $.ajax({ type:"post", async: false, url:"test", data:{ countid:countpv+"" }, success:function(msg){ alert(msg); }, error:function(){ alert("error"); } }); 麻烦各位指出错误。 ```
Ajax加载jsp页面的问题
``` UserInfo.jsp 页面: * <body> * <jsp:include page="/head.jsp" flush="false"></jsp:include> * <div class="userInfo"> * <div class="functionList"> * <div class="listTitle"><a>功能列表</a></div> * <div class="funcList"> * <ul> <!--页面左侧按钮--> * <li class="li1" onclick="avatarUploadJsp()"><a>上传头像</a></li> * <li class="li2" onclick="userInfoSetJsp()"><a>信息设置</a></li> * <li class="li3" onclick="pwdAlterJsp()"><a>密码修改</a></li> * </ul> * </div> * </div> * * <div class="infoSetView"> * <div class="infoViewTitle"><a>信息设置视图</a></div> * <div class="infoView"> * <!--这里变换页面的--> * <jsp:include page="/avatarUpload.jsp"></jsp:include> * </div> * </div> * </div> * <jsp:include page="/bottom.jsp" flush="false"></jsp:include> * </body> avatarUpload界面 * <div class="container"> * * <div class="userInfoSetTitle"> * <span class="titleIcon"><img src="style/img/faceIcon/user.png" alt="userInfoModify"></span> * <span class="title"><a>Avatar Upload</a></span> * </div> * * <div class="imageBox"> * <div class="thumbBox"></div> * <div class="spinner" style="display: none">Loading...</div> * </div> * <div class="cropped"></div> * <div class="action"> * <input type="file" id="file" name="avatarUpload"> * <input type="button" id="btnCrop" value="剪切|上传"> * <input type="button" id="btnZoomIn" value="放大"> * <input type="button" id="btnZoomOut" value="缩小"> * </div> * </div> ``` 原意是点击左侧上传头像,在infoView中显示avatarUpload界面。 问题:在原界面写 ``` <jsp:include page="/avatarUpload.jsp"></jsp:include> ``` 效果都出来了且可以剪切头像: ![图片说明](https://img-ask.csdn.net/upload/201512/27/1451184844_974354.png) 但是用ajax动态切换界面的时候,界面可以显示,但是不能剪切上传头像。。 js代码: ``` * function avatarUploadJsp(){ * $(".infoView").empty();//avatarUpload.jsp * $.ajax({ * url:"http://localhost:8080/Pilgrim/test/goAvatarUploada", * type:"POST", * data:{"aaa":"nihao"}, * success:function(data){ * $(".infoView").append(data); * //$(window).load(data); * }, * error:function(){ * alert(" ajax trans error"); * } * }); * * } ``` ![图片说明](https://img-ask.csdn.net/upload/201512/27/1451184955_704343.png) 求解,是什么原因造成的,js都引入了
vue 动态引入url加载不到图片,路径没问题
![读取不到图片](https://img-ask.csdn.net/upload/201906/08/1559972257_471702.png)
jquery ajax方法调用在session超时以后如何跳转到登录页面?
jquery ajax方法调用在session超时以后如何跳转到登录页面? session超时以后虽然被过滤器过滤到了,但是并不会跳转到登录页面请求具体的解决方法。 我参考了这篇文章,但是我调用ajaxStart不起作用。 http://www.blogjava.net/vickzhu/archive/2009/06/05/280223.html ext jquery 用户访问超时(ext session过期) 解决两种情况下的用户访问超时。 a)普通http请求的session超时。 b)异步http请求的session超时,使用ext后大部分的界面刷新都是异步的ajax请求。 不管是那种类型的http请求总是可以由一个过滤器来捕捉。 分类:普通http请求的header参数中没有x-requested-with:XMLHttpRequest头信息,而异步的有。 其实对于常见的ajax框架,header中还有标示自己身份的header信息。 对于普通的http请求,发现session超时后直接重定向到一个超时页面,显示访问超时。 对于异步http请求,发现session超时后则向请求的response中写入特定的超时头信息,客户端ajax对象检测 头信息,发现有超时状态标志后调用显示超时信息的javascript方法,提示用户访问超时。 服务器端session超时后在过滤器中为response添加新的头信息,标记该请求超时: if(r.getHeader("x-requested-with")!=null && r.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){ response.setHeader("sessionstatus","timeout"); } 使用Ext.Ajaxt对象完成异步请求的交互,Ext.Ajax是单实例对象(非常重要,全局单一Ext.Ajax实例!)。 注册Ext.Ajax的requestcomplete事件,每个ajax请求成功后首先响应该事件。在该事件的回调函数里面判断 访问请求是否超时。使用Ext.Ajax对象的好处是,只需要引入一个包含了几行超时处理代码的js文件,就可以 为当前应用增加超时处理功能,原有代码不需要做任何修改。 使用Ext.Ajaxt对象完成异步请求交互,假如checkUserSessionStatus是你的回调方法,每个页面引用: Ext.Ajax.on('requestcomplete',checkUserSessionStatus, this); function checkUserSessionStatus(conn,response,options){ //Ext重新封装了response对象 if(typeof response.getResponseHeader.sessionstatus != 'undefined'){ //发现请求超时,退出处理代码... } } 可以利用的几个特性:a)所有的ajax请求均带有x-requested-with:XMLHttpRequest头信息b)Ext.Ajax是单实例对象(非常重要,全局单一Ext.Ajax实例!)c)注册Ext.Ajax的requestcomplete事件,每个ajax请求成功后首先响应该事件(概念类似spring的aop拦截)。 jquery提供了几个全局事件可以用来处理session过期请求,如当ajax请求开始时会触发ajaxStart()方法的回调函数;当ajax请求结束时,会触发ajaxStop()方法的回调函数。这些方法都是全局的方法,因此无论创建它们的代码位于何处,只要有ajax请求发生时,都会触发它们。类似的事件还有:ajaxComplete(),ajaxError(),ajaxSend(),ajaxSuccess()等。 如果使某个ajax请求不受全局方法的影响,那么可以在使用$.ajax()方法时,将参数中的global设置为false,jquery代码如下:$.ajax({ url:"test.html", global:false//不触发全局ajax事件}) 对于其他的ajax框架,解决用户访问请求超时这个问题的思路是类似的。
使用Apexcharts.js中的brush类型图表,上面的折线图无法刷新,求教问题在哪?
# Apexcharts.js中的brush类型图表无法刷新数据 求教各路大神,本人最近在做一个前端开发项目,需要用一张图来展现100个数据,这100个数据是从通过ajax请求从后端接收的,每10秒轮询一次,更新100个数据。 网上找到了开源库apexcharts.js,瞬间被高大上的brush类型图所吸引,引入到我在开发的程序中(网上demo图如下): ![图片说明](https://img-ask.csdn.net/upload/201907/06/1562392234_131426.jpg) 但是出现了下面柱状图数据刷新正常,而上面折线图无法刷新的问题,如下图所示,详细问题描述和代码也在下方,谢谢各位。 ![图片说明](https://img-ask.csdn.net/upload/201907/06/1562393740_668680.png) 我根据示例代码和官方网站上的doc进行了修改,并移植到开发的程序中。大致原理是:打开网页——前端按10秒钟轮询方式通过ajax发送请求到后端——后端python程序生成100个数据,通过json格式返回前端——前端更新数据并刷新图表 前端跟后端交互的代码如下 ``` var storm_data_s6a = ""; var strom_time_s6a = ""; $(document).ready(function(){ setInterval(function(){$.ajax({ type:"POST", url:"/sigStorm/", dataType:"json", contentType:"application/json", data:JSON.stringify({"S6a_storm":true,"Cx_storm":true,"Rejcall":true}), success:function(res){ storm_data_s6a = res.S6a_storm; storm_time_s6a = res.storm_time; //alert(storm_data_s6a[15]); stormFigure() } }) },100000); }); ``` 为了实现图表实时刷新的目的,防止重复新建插入图表,我在处理图表呈现时采用了“清空元素内容”,再“重新创建图表”的办法,代码如下: ``` function stormFigure() { var time1 = new Date(storm_time_s6a).getTime() var time2 = time1 - 1200000 var time3 = time1 - 5940000 var data1 = generateDayWiseTimeSeries(new Date(time3).getTime(), 100, { min: 30, max: 90 }); var options1 = { chart: { id: "chart2", type: "area", height: 230, foreColor: "#ccc", toolbar: { autoSelected: "pan", show: false } }, colors: ["#00BAEC"], stroke: { width: 3 }, grid: { borderColor: "#555", yaxis: { lines: { show: false } } }, dataLabels: { enabled: true }, fill: { gradient: { enabled: true, opacityFrom: 0.55, opacityTo: 0 } }, markers: { size: 5, colors: ["#000524"], strokeColor: "#00BAEC", strokeWidth: 3 }, series: [ { name: "S6a_flow", data: data1 } ], tooltip: { x:{ show: true, format: 'HH:mm' }, theme: "dark" }, xaxis: { type: "datetime", }, yaxis: { tickAmount: 10, min: 0, max: 250, } }; $("#chart-area").empty(); var chart1 = new ApexCharts(document.querySelector("#chart-area"), options1); chart1.render(); //chart1.updateSeries([{ data: data1 }]); //chart1.updateOptions(null,false,false,false); var options2 = { chart: { id: "chart1", height: 130, type: "bar", foreColor: "#ccc", brush: { target: "chart2", enabled: true }, selection: { fill: { color: "#fff", opacity: 0.4 }, xaxis: { min: time2, max: time1 } } }, colors: ["#FF0080"], series: [ { name: "S6a_flow", data: data1 } ], stroke: { width: 2 }, grid: { borderColor: "#444" }, markers: { size: 0 }, xaxis: { type: "datetime", tooltip: { enabled: false } }, yaxis: { tickAmount: 2, min: 0, max: 200 } }; $("#chart-bar").empty(); var chart2 = new ApexCharts(document.querySelector("#chart-bar"), options2); chart2.render(); } ``` 但是在程序运行后,就出现了上面的折线图不能刷新的情况(重新打开网页可以)。下面的柱状图刷新没有问题。 可以确认的是,数据是没有问题的,我把chart2 options2中的brush.enable置为false后,折线图也可以实时刷新。但是我翻遍了官网,也未能得到brush设置的有效指导。 此问题已困扰我几天,求教各位大神和曾经使用过ApexCharts工具的大神给予指导,不胜感激~
刚开始接触vuex,login.vue文件中this.$store.state.token,总是报错——无法解析$store
我想实现一个登录功能,在login.vue文件下面 ``` if (this.$store.state.token) { that.$router.push('/'); console.log(this.$store.state.token); } else { that.$router.replace('/login'); } ``` 这里的this.$store一直提示无法解析,可我该引入的都引入了呀,实在不知道为什么会出这种错误,望各位大神帮帮我 store.js文件 ``` import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); const state = { token: localStorage.getItem('token') ? localStorage.getItem('token') : '', //token }; export default new Vuex.Store({ state, getters: { getStorage(state) { if (!state.token) { state.token = JSON.parse(localStorage.getItem(key)); } return state.token } }, mutations: { setToken(state, token) { state.token = token.value; localStorage.setItem("token", token.token); }, deleteToken(state) { state.token = ""; localStorage.removeItem("token") } } }) ``` main.js ``` import store from './store'; ////////////////// //中间代码省略了 ///////////////// new Vue({ el: '#app', store, router: router, render: h => h(App) }); ``` login.vue ``` import {mapMutations} from 'vuex'; export default { name: "login", data: function () { return { loginText: '用户登录', account: '', password: '', value: '', single: false }; }, methods: { ...mapMutations(['setToken']), doLogin: function () { $('#userinfo .error-note').removeClass('error-note-show'); var user = {}; user.username = this.account; user.password = this.password; const that = this; $.ajax({ url: "http://localhost:9090/auth/login", type: "POST", contentType: "application/json", dataType: "text", data: JSON.stringify(user), success: function (data, status, xhr) { var token = xhr.getResponseHeader("token"); that.setToken({token: token}); that.$router.push({path: "/"}); var storage = window.localStorage; console.log(storage.getItem("token")); if (this.$store.state.token) { that.$router.push('/'); console.log(this.$store.state.token); } else { that.$router.replace('/login'); } }, error: function (res) { console.log("返回格式错误" + res); } });} }, }, }; ```
文件上传$.ajaxFileUpload is not a function
使用ajaxFileUpload进行文件上传,在chrome浏览器脚本控制台报错:$.ajaxFileUpload is not a function,点击上传按钮没有响应。 代码如下: ``` <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" src="js/ajaxfileupload.js"></script> <script type="text/javascript"> function uploadFileByAjax() { //验证文件是否选择文件 var fileObj = $("#uploadFile"); var fileName = fileObj.attr("value"); if(fileName == null || fileName == ""){ return; } alert(fileName); $.ajaxFileUpload({ url : "/Itil/attamgn/upload", //需要链接到服务器地址 secureuri : false, fileElementId : "uploadFile", //文件选择框的id属性 dataType : "json", //服务器返回的格式,可以是json, xml success : function(data, status) //相当于java中try语句块的用法 { //alert("记录ID:" + data.seqId); //alert("文件名:" + data.uplName); attList.push(data.seqId); //修改显示文件列表 var content = "<li id=\"file" + fileIndex + "\" class=\"one-line border-radius-all attach\"><span class=\"name one-line\"><a class=\"ico ico-attach text\">"; content = content + data.uplName + "</a></span>"; content = content + "<span class=\"tool\"><a class=\"ico ico-remove hover\" title=\"删除\" onclick=\"deleteUploadFile('file"+fileIndex + "', '"+ data.seqId +"')\"></a></span></li>"; content = content + $("#fileList").html(); $("#fileList").html(content); }, error : function(data, status, e) //相当于java中catch语句块的用法 { alert("上传失败"); } } ); } </script> <body> <a><span id="" class="ico ico16 ico-attach hover ml10" title="添加附件" onclick="uploadFileByAjax(); return false; "></span></a> </body> ``` 哪位大神指点一下啊! 从访问时的页面源码可以进入引入的jquery.min.js和ajaxfileupload.js文件,可以确认引入没问题。
刚搭的ssm框架,不能直接通过url访问WEB-INF下的html
如下图,我不能直接通过地址栏的url去访问HTML页面. ![图片说明](https://img-ask.csdn.net/upload/201708/09/1502243574_813631.png) 以下是我的配置: # web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Archetype Created Web Application</display-name> <!-- Spring和mybatis的配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mybatis.xml</param-value> </context-param> <!-- 编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Spring监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 防止Spring内存溢出监听器 --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- Spring MVC servlet --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 --> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app> # spring-mybatis.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd "> <!-- <context:annotation-config /> --> <!-- 自动扫描 --> <!-- <context:component-scan base-package="com.lizhm" /> --> <context:component-scan base-package="**.*.services"/> <!-- 引入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties" /> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" > <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 初始化连接大小 --> <property name="initialSize" value="${initialSize}"></property> <!-- 连接池最大数量 --> <property name="maxActive" value="${maxActive}"></property> <!-- 连接池最大空闲 --> <property name="maxIdle" value="${maxIdle}"></property> <!-- 连接池最小空闲 --> <property name="minIdle" value="${minIdle}"></property> <!-- 获取连接最大等待时间 --> <property name="maxWait" value="${maxWait}"></property> </bean> <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath*:/**/*Mapper.xml"></property> </bean> <!-- DAO(services)接口所在包名,Spring会自动查找其下的类 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="**.*.mapper" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 配置基于注解的声明式事务 --> <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven> </beans> # spring-mvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <context:annotation-config/> <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --> <context:component-scan base-package="**.*.controllers" /> <!--避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 --> </list> </property> </bean> <!-- 配置SpringMVC --> <!-- 1.开启SpringMVC注解模式 --> <!-- 简化配置: (1)自动注册DefaultAnootationHandlerMapping,AnotationMethodHandlerAdapter (2)提供一些列:数据绑定,数字和日期的format @NumberFormat, @DateTimeFormat, xml,json默认读写支持 --> <mvc:annotation-driven/> <!-- 2.静态资源默认servlet配置 (1)加入对静态资源的处理:js,gif,png (2)允许使用"/"做整体映射 --> <mvc:default-servlet-handler/> <!-- <mvc:resources mapping="/lib/**" location="/lib/" /> --> <mvc:resources mapping="/resources/**" location="/resources/" /> <!-- <mvc:resources mapping="/WEB-INF/view/**" location="/WEB-INF/view/" /> --> <!-- 定义跳转的文件的前后缀 ,视图模式配置--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> --> <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> <property name="prefix" value="/WEB-INF/view/" /> <property name="suffix" value=".html" /> </bean> <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 默认编码 --> <property name="defaultEncoding" value="utf-8" /> <!-- 文件大小最大值 --> <property name="maxUploadSize" value="10485760000" /> <!-- 内存中的最大值 --> <property name="maxInMemorySize" value="40960" /> </bean> </beans>
用Echarts制作饼图没有显示。
用Echarts制作饼图没有显示,pie页面代码如下: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="js/jquery-1.11.3.js"></script> <script type="text/javascript" src="js/echarts.min.js"></script> <title>饼图例子</title> </head> <body> <div id="mainChart" style="width: 600px;height:400px;"> </div> <script type="text/javascript"> //使用ajax加载数据 $.ajax({ method : 'post', url : 'pie', dataType : 'json', success : function(data) {//data格式:[{name:nameValue,value:valueVal},...] initChat(data); } }); function initChat(data) { var myChart = echarts.init(document.getElementById('mainChart')); option = { backgroundColor: '#cccccc', color:["#D53A35","#296294"], title : { text : '用户性别聚合分析', x : 'center' }, tooltip : { trigger : 'item', formatter : "{a} <br/>{b} : {c} ({d}%)" }, legend : { orient : 'vertical', left : 'left', data : formatData(data).xAxData }, series : [ { name : '男女数量', type : 'pie', radius : '55%', center : [ '50%', '60%' ], color:['#297ca3','#c35b3b'], data : formatData(data).serData, itemStyle : { emphasis : { shadowBlur : 10, shadowOffsetX : 0, shadowColor : 'rgba(0, 0, 0, 0.5)' } } } ] }; myChart.setOption(option, true); }; function formatData(data) { var xAxData = []; var serData = []; for (var i = 0; i < data.length; i++) { xAxData.push(data[i].name || ""); serData.push({ name : data[i].name, value : data[i].value || 0 }); } return { xAxData : xAxData, serData : serData }; }; </script> </body> </html> ``` 我把这篇代码删掉,只输出个字符串,是可以显示的,把这个代码放上就不行了,我感觉应该是这篇代码的问题,我把Controller的代码放在下面: ``` package com.ssh.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Controller public class EchartsController { @RequestMapping("/topie") public String toPie(){ return "pie"; } @RequestMapping(value="pie",method= RequestMethod.POST) @ResponseBody //处理的是异步请求,并且响应的结果是json格式 public List<Map<String, Object>> getPieData() { List<Map<String, Object>> data = new ArrayList<>(); Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "男"); map.put("value", "20"); data.add(map); map = new HashMap<String, Object>(); map.put("name", "女"); map.put("value", "30"); data.add(map); return data; } } ``` 找了很久,也没找到问题,求大神帮助!!!! 我的项目目录如下: ![图片说明](https://img-ask.csdn.net/upload/201912/28/1577517453_218697.png) 问题已解决: 应该是js文件没有引入,我开始调了很长时间都没有用,js那删了改 改了删 但最后还是和现在代码一样,但是可以显示了,昨天弄了很久都没弄出来,哎,具体原因,为什么会这样,我也不是很清楚,有懂得大神吗,求解答 结果现在是这样这样的 ![图片说明](https://img-ask.csdn.net/upload/201912/29/1577592792_561495.png)
用ajax方法在请求数据后在写了一些HTML,但是样式却丢失了
* 这是静态页面的效果图 ![静态页面效果](https://img-ask.csdn.net/upload/201704/21/1492772621_21213.png) 这是这一部分的HTML,只截取了两个商品的 ``` <div class="maincontent-area"> <div class="zigzag-bottom"></div> <div class="container"> <div class="row"> <div class="col-md-12"> <div class="latest-product"> <h2 class="section-title">Latest Products</h2> <div class="product-carousel" **id="content2"**> <div class="single-product"> <div class="product-f-image"> <img src="img/product-1.jpg" alt=""> <div class="product-hover"> <a href="#" class="add-to-cart-link"><i class="fa fa-shopping-cart"></i> Add to cart</a> <a href="single-product.html" class="view-details-link"><i class="fa fa-link"></i> See details</a> </div> </div> <h2><a href="single-product.html">Samsung Galaxy s5- 2015</a></h2> <div class="product-carousel-price"> <ins>$700.00</ins> <del>$100.00</del> </div> </div> <div class="single-product"> <div class="product-f-image"> <img src="img/product-2.jpg" alt=""> <div class="product-hover"> <a href="#" class="add-to-cart-link"><i class="fa fa-shopping-cart"></i> Add to cart</a> <a href="single-product.html" class="view-details-link"><i class="fa fa-link"></i> See details</a> </div> </div> <h2>Nokia Lumia 1320</h2> <div class="product-carousel-price"> <ins>$899.00</ins> <del>$999.00</del> </div> </div> <div class="single-product"> <div class="product-f-image"> <img src="img/product-3.jpg" alt=""> <div class="product-hover"> <a href="#" class="add-to-cart-link"><i class="fa fa-shopping-cart"></i> Add to cart</a> <a href="single-product.html" class="view-details-link"><i class="fa fa-link"></i> See details</a> </div> </div> <h2>LG Leon 2015</h2> <div class="product-carousel-price"> <ins>$400.00</ins> <del>$425.00</del> </div> </div> ``` 我在上面定义了ID然后用ajax 写了拼的字符串,写的HTML,但是样式却加载不进去,却成了这样字的![图片说明](https://img-ask.csdn.net/upload/201704/21/1492773304_327866.png) 我的js代码如下 ``` function init_newProd(){ $.ajax({ type:"post", url:"/struts2/petShop/home/newProduct.action", dataType:"json", success:function(data){ var d = eval("("+data+")");//这里需要进行json处理,将json字符串转换为json格式; display_newProd(d); } }); } function display_newProd(data){ var newProd = data.newProd; var newProd_l = newProd.length; var content = $("#content2"); var str= ""; for(var i=0;i<newProd_l;i++){ str = str+"<div class='single-product'>" + "<div class='product-f-image'>"+ "<img style='height:270px' src='/struts2/common/img/"+newProd[i].pet_pic+"'>"+ " <div class='product-hover'>"+ " <a href='"+newProd[i].pet_id+"' class='add-to-cart-link'><i class='fa fa-shopping-cart'></i> Add to cart</a>"+ " <a href='/struts2/petShop/detail/detail.action?petId="+newProd[i].pet_id+"' class='view-details-link'><i class='fa fa-link'></i> See details</a>"+ "</div></div>"+ "<h2><a href='single-product.html'>"+newProd[i].pet_name+"</a></h2>"+ " <div class='product-carousel-price'>"+ "<ins>$700.00</ins> <del>$"+newProd[i].pet_price+"</del>"+ "</div></div>"; } content.append(str); } ``` 请问各位大神,到底是上面情况,导致样式改变,静态页面需要的css,js我全部引入,并且顺序呢我没有更改 用到的js插件有这些 <script src="/struts2/common/js/bootstrap.min.js"></script> <!-- jQuery sticky menu --> <script src="/struts2/common/js/owl.carousel.min.js"></script> <script src="/struts2/common/js/jquery.sticky.js"></script> <!-- jQuery easing --> <script src="/struts2/common/js/jquery.easing.1.3.min.js"></script> <!-- Main Script --> <script src="/struts2/common/js/main.js"></script> <!-- Slider --> <script src="/struts2/common/js/bxslider.min.js"></script> <script src="/struts2/common/js/script.slider.js"></script>
ajax一直不进入success:function()总是提示获取不到数据
public class UserDaoImpl implements UserDao { @Override public User login(User user) { Connection con = null; PreparedStatement ps = null; ResultSet rs = null; try { con = BaseDao.getCon(); String sql = "select * from user where name=? and password=?"; ps = con.prepareStatement(sql); ps.setString(1, user.getName()); ps.setString(2, user.getPassword()); rs = ps.executeQuery(); User users; if (rs.next()) { users = new User(); System.out.println(); users.setId(rs.getInt("id")); users.setName(rs.getString("name")); users.setPassword(rs.getString("password")); users.setEmail(rs.getString("email")); users.setPhone(rs.getString("phone")); users.setMoney(rs.getString("money")); return users; } else { return null; } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } @Override public boolean register(User user) { String sql = "insert into user values(0,?,?,?,?,?) "; List<Object> list = new ArrayList<Object>(); list.add(user.getName()); list.add(user.getPassword()); list.add(user.getEmail()); list.add(user.getPhone()); list.add(user.getMoney()); boolean flag = BaseDao.addUpdateDelete(sql, list.toArray()); if (flag) { return true; } else { return false; } } public ArrayList<User> query() { Connection con = null; ArrayList<User> barArr = new ArrayList<User>(); try { con = BaseDao.getCon(); PreparedStatement stmt = con.prepareStatement("select * from user"); ResultSet rs = stmt.executeQuery(); while (rs.next()) { User bar = new User(); bar.setName(rs.getString("name")); bar.setMoney(rs.getString("money")); barArr.add(bar); } con.close(); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return barArr; } } @WebServlet("/user/userlogin") public class UserLoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { User user = new User(); // 获取login.jsp页面提交的账号和密码 String name = request.getParameter("name"); String password = request.getParameter("password"); String money=request.getParameter("money"); // 测试数据 System.out.println(name + " " + password+" "+money); // 获取login.jsp页面提交的账号和密码设置到实体类User? user.setName(name); user.setPassword(password); HttpSession session = request.getSession(); // 引入数据交互层 UserDao dao = new UserDaoImpl(); User us = dao.login(user); // 测试返回的值 System.out.println(us); if (us != null) { session.setAttribute("user", user); request.getRequestDispatcher("/index/echarts.jsp").forward(request, response); // request.setAttribute("info", "登录成功"); } else { request.setAttribute("info", "登录失败"); request.getRequestDispatcher("/index/info.jsp").forward(request, response); } UserDaoImpl barDao = new UserDaoImpl(); ArrayList<User> barArr = barDao.query(); response.setContentType("text/html; charset=utf-8"); JSONArray json = JSONArray.fromObject(barArr); System.out.println("得到的数据:"+json.toString()); PrintWriter writer = response.getWriter(); writer.println(json); writer.flush(); writer.close(); } } public class BaseDao { private static String driver; private static String url; private static String user; private static String password; private static String money; static { driver = ResourceBundle.getBundle("db").getString("driver"); url = ResourceBundle.getBundle("db").getString("url"); user = ResourceBundle.getBundle("db").getString("user"); password = ResourceBundle.getBundle("db").getString("password"); } public static Connection getCon() throws ClassNotFoundException, SQLException { Class.forName(driver); System.out.println("测试加载数据库成功"); Connection con = DriverManager.getConnection(url, user, password); System.out.println("测试数据库连接成功"); return con; } public static void close(Connection con, PreparedStatement ps, ResultSet rs) { if (rs != null) {// 关闭 try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (con != null) { try { con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static boolean addUpdateDelete(String sql, Object[] arr) { Connection con = null; PreparedStatement ps = null; try { con = BaseDao.getCon();// 第一步 :连接数据库的操作 ps = con.prepareStatement(sql);// 第二步:预编译 // 第三步:设置值 if (arr != null && arr.length != 0) { for (int i = 0; i < arr.length; i++) { ps.setObject(i + 1, arr[i]); } } int count = ps.executeUpdate();// 第四步:执行sql语句 if (count > 0) { return true; } else { return false; } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; } } <%@page import="org.apache.catalina.connector.Request"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Hello ECharts</title> <!-- 使用单文件引入的方式使用ECharts.JS --> <script type="text/javascript" src="../scripts/echarts-all.js"></script> <script type="text/javascript" src="../scripts/jquery.js"></script> </head> <body> 您的用户名是: ${user.name} <div id="myDiv" style="height: 400px"></div> <script type="text/javascript"> function loadData(option) { $.ajax({ type : 'post', //传输类型 async : false, url : 'bar.do', //web.xml中注册的Servlet的url-pattern data : { "name" : name }, dataType : 'json', //返回数据形式为json success : function(result) { if (result) { option.legend.data = []; option.series[0].data = []; for (var i = 0; i < result.length; i++) { alert(result[i].name + "---" + result[i].money); option.legend.data.push(result[i].name); option.series[0].data.push({ name : result[i].name, value : result[i].money }); } myChart.setOption(option); } }, error : function(errorMsg) { alert("加载数据失败"+errorMsg); } });//AJAX }//loadData() var myChart = echarts.init(document.getElementById('myDiv')); var option = { title : { text : '某站点用户访问来源', subtext : '纯属虚构', x : 'center' }, tooltip : { trigger : 'item', formatter : "{a} {b} : {c} ({d}%)" }, legend : { orient : 'vertical', left : 'left', data : [] }, series : [ { name : '访问来源', type : 'pie', radius : '55%', center : [ '50%', '60%' ], data : [], itemStyle : { emphasis : { shadowBlur : 10, shadowOffsetX : 0, shadowColor : 'rgba(0, 0, 0, 0.5)' } } } ] }; //加载数据到option loadData(option); //设置option </script> </body>
react-redux项目出现问题,求解决
最近刚开始做react-redux项目,不太熟悉,出了很多错,求大手子指点。 项目文件的目录大概这样![目录](https://img-ask.csdn.net/upload/201708/04/1501831910_597035.png) 我在show2.html中引入了show2.js文件,show2.js文件中包含了react组件,show2.html的情况是这样![show2.html](https://img-ask.csdn.net/upload/201708/04/1501832022_440013.png) 在show2.js中引入了一个react组件,show2.js中是这样写的![show2.js](https://img-ask.csdn.net/upload/201708/04/1501832082_317460.png), 所引入的charts是这样![Charts](https://img-ask.csdn.net/upload/201708/04/1501832121_737005.png), 其中,引入的start是这样 ``` import React, {Component} from 'react'; const echarts = require('echarts'); class Start extends Component { constructor(props) { super(props); this.setChartOption = this.setChartOption.bind(this); this.initChart = this.initChart.bind(this); } initChart() { $.ajax({ url: this.props.url, dataType: 'json', cache: false, success: function (data) { let myChart = echarts.init(this.props.div);//初始化echarts //我们要定义一个setPieOption函数将data传入option里面 console.log('22222'); //设置options myChart.setOption(data); // myChart.setOption(this.props.chartStyle); }.bind(this), error: function () { alert('未获取到数据'); }.bind(this) }); } componentDidMount() { this.initChart(); } componentDidUpdate() { this.initChart(); } render() { return null; } } export default Start; ``` 现在碰到的问题是这样!(数字是我测试用的,没有影响)![error](https://img-ask.csdn.net/upload/201708/04/1501832702_379616.png) 我刚开始在show2.js中使用的是import引入所需组件,报的是这样的错![error2](https://img-ask.csdn.net/upload/201708/04/1501832373_458244.png) 最近刚开始做这方面的东西,现在我该怎么办啊?运行不起来,我也不知道哪里出错了,求大手子前辈指点
elFinder java connector的使用方法
想将elFinder文件管理器与java后台程序连接,发现已经有人写了elfinder-servlet作为elFinder的java连接器,看了他的使用说明,自己也尝试了和多次,但是就是没有成功啊... 按照使用说明,可以将这个连接器作为一个jar包引入,自己写两个类继承java连接器中的两个抽象类,直接运行这个工程,访问servlet就应该显示elfinder的界面,但是不管用。。。后来又自己写了个jsp页面,但显示没有连接到backend... jsp页面代码: <html> <head> <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/themes/smoothness/jquery-ui.css" /> <link rel="stylesheet" type="text/css" href="http://elfinder.org/demo/css/elfinder.min.css" /> </head> <div id="elfinder"></div> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" ></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/jquery-ui.min.js"></script> <script src="http://elfinder.org/demo/js/elfinder.min.js" ></script>​ <script type="text/javascript"> $().ready(function() { var f = $('#elfinder').elfinder({ url : '/MyDemoServlet' }).elfinder('instance'); }); </script>​ </html> 运行后就显示Unable to connect to backend elfinder-servlet源码及说明网址: <https://github.com/Studio-42/elfinder-servlet>
web前端动态图表无法刷新数据,请教问题在哪?
# Apexcharts.js中的brush类型图表无法刷新数据 求教各路大神,本人最近在做一个前端开发项目,需要用一张图来展现100个数据,这100个数据是从通过ajax请求从后端接收的,每10秒轮询一次,更新100个数据。 网上找到了开源库apexcharts.js,瞬间被高大上的brush类型图所吸引,引入到我在开发的程序中(网上demo图如下): ![图片说明](https://img-ask.csdn.net/upload/201907/06/1562392234_131426.jpg) 但是出现了下面柱状图数据刷新正常,而上面折线图无法刷新的问题,如下图所示,详细问题描述和代码也在下方,谢谢各位。 ![图片说明](https://img-ask.csdn.net/upload/201907/06/1562393740_668680.png) 我根据示例代码和官方网站上的doc进行了修改,并移植到开发的程序中。大致原理是:打开网页——前端按10秒钟轮询方式通过ajax发送请求到后端——后端python程序生成100个数据,通过json格式返回前端——前端更新数据并刷新图表 前端跟后端交互的代码如下 ``` var storm_data_s6a = ""; var strom_time_s6a = ""; $(document).ready(function(){ setInterval(function(){$.ajax({ type:"POST", url:"/sigStorm/", dataType:"json", contentType:"application/json", data:JSON.stringify({"S6a_storm":true,"Cx_storm":true,"Rejcall":true}), success:function(res){ storm_data_s6a = res.S6a_storm; storm_time_s6a = res.storm_time; //alert(storm_data_s6a[15]); stormFigure() } }) },100000); }); ``` 为了实现图表实时刷新的目的,防止重复新建插入图表,我在处理图表呈现时采用了“清空元素内容”,再“重新创建图表”的办法,代码如下: ``` function stormFigure() { var time1 = new Date(storm_time_s6a).getTime() var time2 = time1 - 1200000 var time3 = time1 - 5940000 var data1 = generateDayWiseTimeSeries(new Date(time3).getTime(), 100, { min: 30, max: 90 }); var options1 = { chart: { id: "chart2", type: "area", height: 230, foreColor: "#ccc", toolbar: { autoSelected: "pan", show: false } }, colors: ["#00BAEC"], stroke: { width: 3 }, grid: { borderColor: "#555", yaxis: { lines: { show: false } } }, dataLabels: { enabled: true }, fill: { gradient: { enabled: true, opacityFrom: 0.55, opacityTo: 0 } }, markers: { size: 5, colors: ["#000524"], strokeColor: "#00BAEC", strokeWidth: 3 }, series: [ { name: "S6a_flow", data: data1 } ], tooltip: { x:{ show: true, format: 'HH:mm' }, theme: "dark" }, xaxis: { type: "datetime", }, yaxis: { tickAmount: 10, min: 0, max: 250, } }; $("#chart-area").empty(); var chart1 = new ApexCharts(document.querySelector("#chart-area"), options1); chart1.render(); //chart1.updateSeries([{ data: data1 }]); //chart1.updateOptions(null,false,false,false); var options2 = { chart: { id: "chart1", height: 130, type: "bar", foreColor: "#ccc", brush: { target: "chart2", enabled: true }, selection: { fill: { color: "#fff", opacity: 0.4 }, xaxis: { min: time2, max: time1 } } }, colors: ["#FF0080"], series: [ { name: "S6a_flow", data: data1 } ], stroke: { width: 2 }, grid: { borderColor: "#444" }, markers: { size: 0 }, xaxis: { type: "datetime", tooltip: { enabled: false } }, yaxis: { tickAmount: 2, min: 0, max: 200 } }; $("#chart-bar").empty(); var chart2 = new ApexCharts(document.querySelector("#chart-bar"), options2); chart2.render(); } ``` 但是在程序运行后,就出现了上面的折线图不能刷新的情况(重新打开网页可以)。下面的柱状图刷新没有问题。 可以确认的是,数据是没有问题的,我把chart2 options2中的brush.enable置为false后,折线图也可以实时刷新。但是我翻遍了官网,也未能得到brush设置的有效指导。 此问题已困扰我几天,求教各位大神和曾经使用过ApexCharts工具的大神给予指导,不胜感激~
echarts地图控件官方实例如何调用 显示地图
//问题描述: 调用了官网提供的地址但是就是不显示地图 //官网地址: https://www.echartsjs.com/examples/zh/editor.html?c=effectScatter-bmap //截图 ![图片说明](https://img-ask.csdn.net/upload/201910/17/1571241681_595745.jpg) //代码展示 ``` <script src="pcManager/dist/echarts.js"></script> <!-- 引入 vintage 主题 --> <script src="pcManager/theme/vintage.js"></script> <script> // 第二个参数可以指定前面引入的主题 var chart = echarts.init(document.getElementById('main'), 'vintage'); chart.setOption({ //把官网提供的option套进去 ... }); </script> ``` //目前显示的界面没有地图 ![图片说明](https://img-ask.csdn.net/upload/201910/17/1571241856_441443.jpg) //由于数据太多 把我的主要代码结构粘出来 ``` <head> <%--引入echarts控件--%> <script src="/erzhentang/FR-LIB/incubator-echarts-4.4.0/dist/echarts.js"></script> <!-- 引入 vintage 主题 --> <script src="/erzhentang/FR-LIB/incubator-echarts-4.4.0/theme/vintage.js"></script> <div id="dv_area" style="width: 800px;height:600px;"></div> <script type="text/javascript"> </head> <body> var myChart1 = echarts.init(document.getElementById('dv_area'),'vintage'); var data = [ {name: '海门', value: 9}, {name: '鄂尔多斯', value: 12}, {name: '招远', value: 12}, {name: '舟山', value: 12}, {name: '齐齐哈尔', value: 14}, {name: '盐城', value: 15}, {name: '赤峰', value: 16}, {name: '青岛', value: 18}, {name: '乳山', value: 18}, {name: '金昌', value: 19}, {name: '泉州', value: 21}, {name: '莱西', value: 21}, {name: '日照', value: 21}, {name: '胶南', value: 22}, {name: '南通', value: 23}, {name: '拉萨', value: 24}, {name: '云浮', value: 24}, {name: '梅州', value: 25}, {name: '文登', value: 25}, {name: '上海', value: 25}, {name: '攀枝花', value: 25}, {name: '威海', value: 25}, {name: '承德', value: 25}, {name: '厦门', value: 26}, {name: '汕尾', value: 26}, {name: '潮州', value: 26}, {name: '丹东', value: 27}, {name: '太仓', value: 27}, {name: '曲靖', value: 27}, {name: '烟台', value: 28}, {name: '福州', value: 29}, {name: '瓦房店', value: 30}, {name: '即墨', value: 30}, {name: '抚顺', value: 31}, {name: '玉溪', value: 31}, {name: '张家口', value: 31}, {name: '阳泉', value: 31}, {name: '莱州', value: 32}, {name: '湖州', value: 32}, {name: '汕头', value: 32}, {name: '昆山', value: 33}, {name: '宁波', value: 33}, {name: '湛江', value: 33}, {name: '揭阳', value: 34}, {name: '荣成', value: 34}, {name: '连云港', value: 35}, {name: '葫芦岛', value: 35}, {name: '常熟', value: 36}, {name: '东莞', value: 36}, {name: '河源', value: 36}, {name: '淮安', value: 36}, {name: '泰州', value: 36}, {name: '南宁', value: 37}, {name: '营口', value: 37}, {name: '惠州', value: 37}, {name: '江阴', value: 37}, {name: '蓬莱', value: 37}, {name: '韶关', value: 38}, {name: '嘉峪关', value: 38}, {name: '广州', value: 38}, {name: '延安', value: 38}, {name: '太原', value: 39}, {name: '清远', value: 39}, {name: '中山', value: 39}, {name: '昆明', value: 39}, {name: '寿光', value: 40}, {name: '盘锦', value: 40}, {name: '长治', value: 41}, {name: '深圳', value: 41}, {name: '珠海', value: 42}, {name: '宿迁', value: 43}, {name: '咸阳', value: 43}, {name: '铜川', value: 44}, {name: '平度', value: 44}, {name: '佛山', value: 44}, {name: '海口', value: 44}, {name: '江门', value: 45}, {name: '章丘', value: 45}, {name: '肇庆', value: 46}, {name: '大连', value: 47}, {name: '临汾', value: 47}, {name: '吴江', value: 47}, {name: '石嘴山', value: 49}, {name: '沈阳', value: 50}, {name: '苏州', value: 50}, {name: '茂名', value: 50}, {name: '嘉兴', value: 51}, {name: '长春', value: 51}, {name: '胶州', value: 52}, {name: '银川', value: 52}, {name: '张家港', value: 52}, {name: '三门峡', value: 53}, {name: '锦州', value: 54}, {name: '南昌', value: 54}, {name: '柳州', value: 54}, {name: '三亚', value: 54}, {name: '自贡', value: 56}, {name: '吉林', value: 56}, {name: '阳江', value: 57}, {name: '泸州', value: 57}, {name: '西宁', value: 57}, {name: '宜宾', value: 58}, {name: '呼和浩特', value: 58}, {name: '成都', value: 58}, {name: '大同', value: 58}, {name: '镇江', value: 59}, {name: '桂林', value: 59}, {name: '张家界', value: 59}, {name: '宜兴', value: 59}, {name: '北海', value: 60}, {name: '西安', value: 61}, {name: '金坛', value: 62}, {name: '东营', value: 62}, {name: '牡丹江', value: 63}, {name: '遵义', value: 63}, {name: '绍兴', value: 63}, {name: '扬州', value: 64}, {name: '常州', value: 64}, {name: '潍坊', value: 65}, {name: '重庆', value: 66}, {name: '台州', value: 67}, {name: '南京', value: 67}, {name: '滨州', value: 70}, {name: '贵阳', value: 71}, {name: '无锡', value: 71}, {name: '本溪', value: 71}, {name: '克拉玛依', value: 72}, {name: '渭南', value: 72}, {name: '马鞍山', value: 72}, {name: '宝鸡', value: 72}, {name: '焦作', value: 75}, {name: '句容', value: 75}, {name: '北京', value: 79}, {name: '徐州', value: 79}, {name: '衡水', value: 80}, {name: '包头', value: 80}, {name: '绵阳', value: 80}, {name: '乌鲁木齐', value: 84}, {name: '枣庄', value: 84}, {name: '杭州', value: 84}, {name: '淄博', value: 85}, {name: '鞍山', value: 86}, {name: '溧阳', value: 86}, {name: '库尔勒', value: 86}, {name: '安阳', value: 90}, {name: '开封', value: 90}, {name: '济南', value: 92}, {name: '德阳', value: 93}, {name: '温州', value: 95}, {name: '九江', value: 96}, {name: '邯郸', value: 98}, {name: '临安', value: 99}, {name: '兰州', value: 99}, {name: '沧州', value: 100}, {name: '临沂', value: 103}, {name: '南充', value: 104}, {name: '天津', value: 105}, {name: '富阳', value: 106}, {name: '泰安', value: 112}, {name: '诸暨', value: 112}, {name: '郑州', value: 113}, {name: '哈尔滨', value: 114}, {name: '聊城', value: 116}, {name: '芜湖', value: 117}, {name: '唐山', value: 119}, {name: '平顶山', value: 119}, {name: '邢台', value: 119}, {name: '德州', value: 120}, {name: '济宁', value: 120}, {name: '荆州', value: 127}, {name: '宜昌', value: 130}, {name: '义乌', value: 132}, {name: '丽水', value: 133}, {name: '洛阳', value: 134}, {name: '秦皇岛', value: 136}, {name: '株洲', value: 143}, {name: '石家庄', value: 147}, {name: '莱芜', value: 148}, {name: '常德', value: 152}, {name: '保定', value: 153}, {name: '湘潭', value: 154}, {name: '金华', value: 157}, {name: '岳阳', value: 169}, {name: '长沙', value: 175}, {name: '衢州', value: 177}, {name: '廊坊', value: 193}, {name: '菏泽', value: 194}, {name: '合肥', value: 229}, {name: '武汉', value: 273}, {name: '大庆', value: 279} ]; var geoCoordMap = { '海门': [121.15, 31.89], '鄂尔多斯': [109.781327, 39.608266], '招远': [120.38, 37.35], '舟山': [122.207216, 29.985295], '齐齐哈尔': [123.97, 47.33], '盐城': [120.13, 33.38], '赤峰': [118.87, 42.28], '青岛': [120.33, 36.07], '乳山': [121.52, 36.89], '金昌': [102.188043, 38.520089], '泉州': [118.58, 24.93], '莱西': [120.53, 36.86], '日照': [119.46, 35.42], '胶南': [119.97, 35.88], '南通': [121.05, 32.08], '拉萨': [91.11, 29.97], '云浮': [112.02, 22.93], '梅州': [116.1, 24.55], '文登': [122.05, 37.2], '上海': [121.48, 31.22], '攀枝花': [101.718637, 26.582347], '威海': [122.1, 37.5], '承德': [117.93, 40.97], '厦门': [118.1, 24.46], '汕尾': [115.375279, 22.786211], '潮州': [116.63, 23.68], '丹东': [124.37, 40.13], '太仓': [121.1, 31.45], '曲靖': [103.79, 25.51], '烟台': [121.39, 37.52], '福州': [119.3, 26.08], '瓦房店': [121.979603, 39.627114], '即墨': [120.45, 36.38], '抚顺': [123.97, 41.97], '玉溪': [102.52, 24.35], '张家口': [114.87, 40.82], '阳泉': [113.57, 37.85], '莱州': [119.942327, 37.177017], '湖州': [120.1, 30.86], '汕头': [116.69, 23.39], '昆山': [120.95, 31.39], '宁波': [121.56, 29.86], '湛江': [110.359377, 21.270708], '揭阳': [116.35, 23.55], '荣成': [122.41, 37.16], '连云港': [119.16, 34.59], '葫芦岛': [120.836932, 40.711052], '常熟': [120.74, 31.64], '东莞': [113.75, 23.04], '河源': [114.68, 23.73], '淮安': [119.15, 33.5], '泰州': [119.9, 32.49], '南宁': [108.33, 22.84], '营口': [122.18, 40.65], '惠州': [114.4, 23.09], '江阴': [120.26, 31.91], '蓬莱': [120.75, 37.8], '韶关': [113.62, 24.84], '嘉峪关': [98.289152, 39.77313], '广州': [113.23, 23.16], '延安': [109.47, 36.6], '太原': [112.53, 37.87], '清远': [113.01, 23.7], '中山': [113.38, 22.52], '昆明': [102.73, 25.04], '寿光': [118.73, 36.86], '盘锦': [122.070714, 41.119997], '长治': [113.08, 36.18], '深圳': [114.07, 22.62], '珠海': [113.52, 22.3], '宿迁': [118.3, 33.96], '咸阳': [108.72, 34.36], '铜川': [109.11, 35.09], '平度': [119.97, 36.77], '佛山': [113.11, 23.05], '海口': [110.35, 20.02], '江门': [113.06, 22.61], '章丘': [117.53, 36.72], '肇庆': [112.44, 23.05], '大连': [121.62, 38.92], '临汾': [111.5, 36.08], '吴江': [120.63, 31.16], '石嘴山': [106.39, 39.04], '沈阳': [123.38, 41.8], '苏州': [120.62, 31.32], '茂名': [110.88, 21.68], '嘉兴': [120.76, 30.77], '长春': [125.35, 43.88], '胶州': [120.03336, 36.264622], '银川': [106.27, 38.47], '张家港': [120.555821, 31.875428], '三门峡': [111.19, 34.76], '锦州': [121.15, 41.13], '南昌': [115.89, 28.68], '柳州': [109.4, 24.33], '三亚': [109.511909, 18.252847], '自贡': [104.778442, 29.33903], '吉林': [126.57, 43.87], '阳江': [111.95, 21.85], '泸州': [105.39, 28.91], '西宁': [101.74, 36.56], '宜宾': [104.56, 29.77], '呼和浩特': [111.65, 40.82], '成都': [104.06, 30.67], '大同': [113.3, 40.12], '镇江': [119.44, 32.2], '桂林': [110.28, 25.29], '张家界': [110.479191, 29.117096], '宜兴': [119.82, 31.36], '北海': [109.12, 21.49], '西安': [108.95, 34.27], '金坛': [119.56, 31.74], '东营': [118.49, 37.46], '牡丹江': [129.58, 44.6], '遵义': [106.9, 27.7], '绍兴': [120.58, 30.01], '扬州': [119.42, 32.39], '常州': [119.95, 31.79], '潍坊': [119.1, 36.62], '重庆': [106.54, 29.59], '台州': [121.420757, 28.656386], '南京': [118.78, 32.04], '滨州': [118.03, 37.36], '贵阳': [106.71, 26.57], '无锡': [120.29, 31.59], '本溪': [123.73, 41.3], '克拉玛依': [84.77, 45.59], '渭南': [109.5, 34.52], '马鞍山': [118.48, 31.56], '宝鸡': [107.15, 34.38], '焦作': [113.21, 35.24], '句容': [119.16, 31.95], '北京': [116.46, 39.92], '徐州': [117.2, 34.26], '衡水': [115.72, 37.72], '包头': [110, 40.58], '绵阳': [104.73, 31.48], '乌鲁木齐': [87.68, 43.77], '枣庄': [117.57, 34.86], '杭州': [120.19, 30.26], '淄博': [118.05, 36.78], '鞍山': [122.85, 41.12], '溧阳': [119.48, 31.43], '库尔勒': [86.06, 41.68], '安阳': [114.35, 36.1], '开封': [114.35, 34.79], '济南': [117, 36.65], '德阳': [104.37, 31.13], '温州': [120.65, 28.01], '九江': [115.97, 29.71], '邯郸': [114.47, 36.6], '临安': [119.72, 30.23], '兰州': [103.73, 36.03], '沧州': [116.83, 38.33], '临沂': [118.35, 35.05], '南充': [106.110698, 30.837793], '天津': [117.2, 39.13], '富阳': [119.95, 30.07], '泰安': [117.13, 36.18], '诸暨': [120.23, 29.71], '郑州': [113.65, 34.76], '哈尔滨': [126.63, 45.75], '聊城': [115.97, 36.45], '芜湖': [118.38, 31.33], '唐山': [118.02, 39.63], '平顶山': [113.29, 33.75], '邢台': [114.48, 37.05], '德州': [116.29, 37.45], '济宁': [116.59, 35.38], '荆州': [112.239741, 30.335165], '宜昌': [111.3, 30.7], '义乌': [120.06, 29.32], '丽水': [119.92, 28.45], '洛阳': [112.44, 34.7], '秦皇岛': [119.57, 39.95], '株洲': [113.16, 27.83], '石家庄': [114.48, 38.03], '莱芜': [117.67, 36.19], '常德': [111.69, 29.05], '保定': [115.48, 38.85], '湘潭': [112.91, 27.87], '金华': [119.64, 29.12], '岳阳': [113.09, 29.37], '长沙': [113, 28.21], '衢州': [118.88, 28.97], '廊坊': [116.7, 39.53], '菏泽': [115.480656, 35.23375], '合肥': [117.27, 31.86], '武汉': [114.31, 30.52], '大庆': [125.03, 46.58] }; var convertData = function (data) { var res = []; for (var i = 0; i < data.length; i++) { var geoCoord = geoCoordMap[data[i].name]; if (geoCoord) { res.push({ name: data[i].name, value: geoCoord.concat(data[i].value) }); } } return res; }; option = { title: { text: '全国主要城市空气质量 - 百度地图', subtext: 'data from PM25.in', sublink: 'http://www.pm25.in', left: 'center' }, tooltip: { trigger: 'item' }, bmap: { center: [104.114129, 37.550339], zoom: 5, roam: true, mapStyle: { styleJson: [{ 'featureType': 'water', 'elementType': 'all', 'stylers': { 'color': '#d1d1d1' } }, { 'featureType': 'land', 'elementType': 'all', 'stylers': { 'color': '#f3f3f3' } }, { 'featureType': 'railway', 'elementType': 'all', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'highway', 'elementType': 'all', 'stylers': { 'color': '#fdfdfd' } }, { 'featureType': 'highway', 'elementType': 'labels', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'arterial', 'elementType': 'geometry', 'stylers': { 'color': '#fefefe' } }, { 'featureType': 'arterial', 'elementType': 'geometry.fill', 'stylers': { 'color': '#fefefe' } }, { 'featureType': 'poi', 'elementType': 'all', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'green', 'elementType': 'all', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'subway', 'elementType': 'all', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'manmade', 'elementType': 'all', 'stylers': { 'color': '#d1d1d1' } }, { 'featureType': 'local', 'elementType': 'all', 'stylers': { 'color': '#d1d1d1' } }, { 'featureType': 'arterial', 'elementType': 'labels', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'boundary', 'elementType': 'all', 'stylers': { 'color': '#fefefe' } }, { 'featureType': 'building', 'elementType': 'all', 'stylers': { 'color': '#d1d1d1' } }, { 'featureType': 'label', 'elementType': 'labels.text.fill', 'stylers': { 'color': '#999999' } }] } }, series: [ { name: 'pm2.5', type: 'scatter', coordinateSystem: 'bmap', data: convertData(data), symbolSize: function (val) { return val[2] / 10; }, label: { normal: { formatter: '{b}', position: 'right', show: false }, emphasis: { show: true } }, itemStyle: { normal: { color: 'purple' } } }, { name: 'Top 5', type: 'effectScatter', coordinateSystem: 'bmap', data: convertData(data.sort(function (a, b) { return b.value - a.value; }).slice(0, 6)), symbolSize: function (val) { return val[2] / 10; }, showEffectOn: 'render', rippleEffect: { brushType: 'stroke' }, hoverAnimation: true, label: { normal: { formatter: '{b}', position: 'right', show: true } }, itemStyle: { normal: { color: 'purple', shadowBlur: 10, shadowColor: '#333' } }, zlevel: 1 } ] }; myChart1.setOption(option); </script> <body> ``` //已解决 需要引入必要的控件 ``` <%--引入echarts控件--%> <script src="/erzhentang/FR-LIB/incubator-echarts-4.4.0/dist/echarts.js"></script> <!-- 引入 vintage 主题 --> <script src="/erzhentang/FR-LIB/incubator-echarts-4.4.0/theme/vintage.js"></script> <%--引入地图所需控件--%> <script type="text/javascript" src="https://www.echartsjs.com/examples/vendors/lodash.js"></script> <script type="text/javascript" src="https://www.echartsjs.com/examples/javascripts/common.js"></script> <script type="text/javascript">function changeLang(lang) { if (lang === 'en') { if (location.hostname !== 'echarts.apache.org') { var re = new RegExp('/zh/', 'g'); var pathname = location.pathname.replace(re, '/en/'); var url = 'https://echarts.apache.org' + pathname + location.search + location.hash; location.href = url; return; } } location.href = location.href.replace( new RegExp('/(zh|en)/', 'g'), '/' + lang + '/' ); } window.ROOT_PATH = 'https://www.echartsjs.com/examples/'; </script> <script type="text/javascript" src="https://www.echartsjs.com/examples/vendors/dat.gui.min.js"></script> <script type="text/javascript" src="https://www.echartsjs.com/examples/vendors/ace/src/ace.js"></script> <script type="text/javascript" src="https://www.echartsjs.com/examples/vendors/ace/src/ext-language_tools.js"></script> <script type="text/javascript" src="https://www.echartsjs.com/examples/javascripts/editor.js?_v_=1571170137685"></script> <script type="text/javascript" src="https://www.echartsjs.com/examples/vendors/echarts-stat/ecStat.min.js?_v_=1571170137685"></script> <script type="text/javascript" src="https://www.echartsjs.com/examples/vendors/echarts/echarts.min.js?_v_=1571170137685"></script> <script type="text/javascript" src="https://www.echartsjs.com/examples/vendors/echarts/map/js/china.js?_v_=1571170137685"></script> <script type="text/javascript" src="https://www.echartsjs.com/examples/vendors/echarts/map/js/world.js?_v_=1571170137685"></script> <script type="text/javascript" src="https://www.echartsjs.com/examples/vendors/echarts/extension/dataTool.js?_v_=1571170137685"></script> <script type="text/javascript" src="https://www.echartsjs.com/examples/vendors/echarts/extension/bmap.js?_v_=1571170137685"></script> <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&amp;ak=KOmVjPVUAey1G2E8zNhPiuQ6QiEmAwZu&amp;__ec_v__=20190126"></script> <script type="text/javascript" src="https://api.map.baidu.com/getscript?v=2.0&amp;ak=KOmVjPVUAey1G2E8zNhPiuQ6QiEmAwZu&amp;services=&amp;t=20190622163250"></script> <script type="text/javascript">document.getElementById('nav-examples').className = 'active';</script> <!-- Baidu Tongji--> <script type="text/javascript">var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <!-- Google Analytics--> <script type="text/javascript" async="" src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script> <script type="text/javascript">window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-141228404-1'); </script> ```
ssm 报错:org.springframework.context.annotation.internalAsyncAnnotationProcessor
# ssm 框架 在本地完美运行放到Linux服务器报错 以下内容 Error creating bean with name '**org.springframework.context.annotation.internalAsyncAnnotationProcessor'**: Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.springframework.aop.interceptor.AsyncExecutionInterceptor.<init>(Ljava/util/concurrent/Executor;Lorg/springframework/aop/interceptor/AsyncUncaughtExceptionHandler;)V ## 之前是没有加 redis,没有发现问题,这次我加了redis然后就报错,大神们帮忙看看解决解决 这是spring-mvc配置: ``` ==============spring-mvc===================== <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd" > <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --> <mvc:annotation-driven/> <context:component-scan base-package="com.bls.mp.*"/> <!--避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <bean class="com.bls.mp.common.SpringTool"/> <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --> <!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> JSON转换器 </list> </property> </bean>--> <!-- 定义跳转的文件的前后缀 ,视图模式配置--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> <property name="prefix" value="/WEB-INF/resources/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 默认编码 --> <property name="defaultEncoding" value="utf-8" /> <!-- 文件大小最大值 --> <property name="maxUploadSize" value="10485760000" /> <!-- 内存中的最大值 --> <property name="maxInMemorySize" value="40960" /> </bean> <!-- 全局异常处理器 --> <bean class="com.bls.mp.common.exception.CustomExceptionResolver"></bean> <mvc:annotation-driven/> <!-- 拦截器配置 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/setadmin"/> <!--<mvc:mapping path="/user/userList"/> --> <mvc:mapping path="/Blocker"/> <mvc:mapping path="/grouponteam/grouponRanking"/> <mvc:mapping path="/grouponteam/arriverTime"/> <mvc:mapping path="/grouponteam/paging"/> <mvc:mapping path="/grouponteam/conditionGrouponT"/> <mvc:mapping path="/hospital/hospitalInfo"/> <mvc:mapping path="/hospital/setting"/> <mvc:mapping path="/hospital/orderdetails"/> <mvc:mapping path="/grouponteam/grouponTeamCountAndMoney"/> <mvc:mapping path="/grouponteam/OrderRefundList"/> <mvc:mapping path="/grouponteam/orderdetails"/> <mvc:mapping path="/grouponteam/paging"/> <mvc:mapping path="/grouponteam/conditionGrouponT"/> <mvc:mapping path="/grouponteam/grouponRanking"/> <mvc:mapping path="/grouponteam/arriverTime"/> <mvc:mapping path="/grouponteam/grouponTeamCountAndMoney"/> <mvc:mapping path="/imguoload"/> <mvc:mapping path="/imguoloads"/> <mvc:mapping path="/uploadFile"/> <mvc:mapping path="/uploadCenter"/> <mvc:mapping path="/onTheShelves"/> <mvc:mapping path="/updateTheRecommended"/> <mvc:mapping path="/deleteByGoods"/> <mvc:mapping path="/restoreGoods"/> <mvc:mapping path="/goods/goodslist"/> <mvc:mapping path="/goods/hasBeenOn"/> <mvc:mapping path="/goods/NotOn"/> <mvc:mapping path="/goods/RecycleBin"/> <mvc:mapping path="/goods/searchName"/> <mvc:mapping path="/goods/goodsdiy"/> <mvc:mapping path="/upload/uploadFile"/> <mvc:mapping path="/CreateClassImg"/> <mvc:mapping path="/imglist"/> <mvc:mapping path="/up_img"/> <mvc:mapping path="/moveImg"/> <mvc:mapping path="/deleteImg"/> <mvc:mapping path="/template/templateURL"/> <mvc:mapping path="/template/templateParentAll"/> <mvc:mapping path="/template/templatAll"/> <mvc:mapping path="/template/changeT"/> <mvc:mapping path="/template/deleteT"/> <mvc:mapping path="/TemplateMsg/addTemplateMsg"/> <mvc:mapping path="/TemplateMsg/templateMsgList"/> <mvc:mapping path="/TemplateMsg/templateSendlist"/> <mvc:mapping path="/TemplateMsg/TemplateSendMsg"/> <mvc:mapping path="/TemplateMsg/updataPTID"/> <mvc:mapping path="/TemplateMsg/deleteMB"/> <mvc:mapping path="/ThirdData/getdata"/> <mvc:mapping path="/ThirdData/updata"/> <mvc:mapping path="/setMoney/setMoneyList"/> <mvc:mapping path="/setMoney/setArriveMoney"/> <mvc:mapping path="/setMoney/checkfileCert"/> <mvc:mapping path="/setMoney/SetMoneyType"/> <mvc:mapping path="/user/userlists"/> <mvc:mapping path="/user/uOpenId"/> <mvc:mapping path="/visitor/theAlmostMoon"/> <mvc:mapping path="/visitor/SixAlmostMoon"/> <mvc:mapping path="/visitor/tops"/> <mvc:mapping path="/weixin/REFUND"/> <bean class="com.bls.mp.interceptor.AuthInterceptor"></bean> </mvc:interceptor> </mvc:interceptors> <task:annotation-driven/> <!-- 配置访问静态文件 --> <mvc:default-servlet-handler/> <mvc:resources location="/images/" mapping="/images/**"/> <mvc:resources location="/WEB-INF/js/" mapping="/js/**"/> <mvc:resources location="/WEB-INF/resources/jsp/" mapping="/jsp/**"/> <mvc:resources location="/WEB-INF/resources/css/" mapping="/css/**"/> </beans> ``` 这是 web.xml ``` ==============web.xml===================== <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Archetype Created Web Application</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mybatis.xml</param-value> <param-value>classpath:spring-redis.xml</param-value> </context-param> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>CORSFilter</filter-name> <filter-class>com.bls.mp.common.MyFilter</filter-class> <init-param> <param-name>excludedPages</param-name> <param-value>/UserAuthServlet</param-value> </init-param> </filter> <filter-mapping> <filter-name>CORSFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> </web-app> ``` 这是spring-mybatis.xml 配置 ``` ==============spring-mybatis.xml===================== <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 自动扫描 --> <context:component-scan base-package="com.bls.mp"/> <!-- 引入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties" /> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 初始化连接大小 --> <property name="initialSize" value="${initialSize}"></property> <!-- 连接池最大数量 --> <property name="maxActive" value="${maxActive}"></property> <!-- 连接池最大空闲 --> <property name="maxIdle" value="${maxIdle}"></property> <!-- 连接池最小空闲 --> <property name="minIdle" value="${minIdle}"></property> <!-- 获取连接最大等待时间 --> <property name="maxWait" value="${maxWait}"></property> </bean> <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath:com/bls/mp/mapping/*.xml"></property> </bean> <!-- DAO接口所在包名,Spring会自动查找其下的类 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.bls.mp.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> </beans> ``` 这是spring-redis.xml配置 ``` ===================spring-redis.xml============== <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:property-placeholder location="classpath:*.properties"/> <!--设置数据池--> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis.maxIdle}"></property> <property name="minIdle" value="${redis.minIdle}"></property> <property name="maxTotal" value="${redis.maxTotal}"></property> <property name="maxWaitMillis" value="${redis.maxWaitMillis}"></property> <property name="testOnBorrow" value="${redis.testOnBorrow}"></property> </bean> <!--链接redis--> <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> <property name="hostName" value="${redis.host}"></property> <property name="port" value="${redis.port}"></property> <property name="password" value="${redis.password}"></property> <property name="timeout" value="${redis.timeout}"></property> <property name="poolConfig" ref="poolConfig"></property> </bean> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p:connection-factory-ref="connectionFactory" > <!--以下针对各种数据进行序列化方式的选择--> <property name="keySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> <property name="valueSerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> <property name="hashKeySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> <!--<property name="hashValueSerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property>--> </bean> </beans> ```
Java ssm 框架 访问报错500
报错如下: ``` HTTP Status 500 – Internal Server Error Type Exception Report Message Servlet.init() for servlet SpringMVC threw exception Description The server encountered an unexpected condition that prevented it from fulfilling the request. Exception javax.servlet.ServletException: Servlet.init() for servlet SpringMVC threw exception org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1441) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:745) Root Cause org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.context.annotation.internalAsyncAnnotationProcessor': Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.springframework.aop.interceptor.AsyncExecutionInterceptor.<init>(Ljava/util/concurrent/Executor;Lorg/springframework/aop/interceptor/AsyncUncaughtExceptionHandler;)V org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:220) org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:615) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:465) org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:663) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:629) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:677) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:548) org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:489) org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) javax.servlet.GenericServlet.init(GenericServlet.java:158) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1441) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:745) Root Cause java.lang.NoSuchMethodError: org.springframework.aop.interceptor.AsyncExecutionInterceptor.<init>(Ljava/util/concurrent/Executor;Lorg/springframework/aop/interceptor/AsyncUncaughtExceptionHandler;)V org.springframework.scheduling.annotation.AnnotationAsyncExecutionInterceptor.<init>(AnnotationAsyncExecutionInterceptor.java:60) org.springframework.scheduling.annotation.AsyncAnnotationAdvisor.buildAdvice(AsyncAnnotationAdvisor.java:150) org.springframework.scheduling.annotation.AsyncAnnotationAdvisor.<init>(AsyncAnnotationAdvisor.java:99) org.springframework.scheduling.annotation.AsyncAnnotationBeanPostProcessor.setBeanFactory(AsyncAnnotationBeanPostProcessor.java:105) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1585) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:220) org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:615) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:465) org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:663) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:629) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:677) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:548) org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:489) org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) javax.servlet.GenericServlet.init(GenericServlet.java:158) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1441) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:745) Note The full stack trace of the root cause is available in the server logs. Apache Tomcat/8.5.12 ``` 一搭到服务器上就出现这个错误,但是本地window没问题;卡了一天了,脑瓜子呼呼的,第一次用这个玩意,实在看不出来啥问题了,有没有大佬帮忙指点指点,给条明路呀!! 下面是几个基础配置: web.xml: ``` <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Archetype Created Web Application</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mybatis.xml</param-value> </context-param> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>CORSFilter</filter-name> <filter-class>com.bls.mp.common.MyFilter</filter-class> <init-param> <param-name>excludedPages</param-name> <param-value>/UserAuthServlet</param-value> </init-param> </filter> <filter-mapping> <filter-name>CORSFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> </web-app> ``` spring-mvc.xml: ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd" > <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --> <context:component-scan base-package="com.bls.mp.controller"/> <!--避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <!-- <bean id="thirdDataService" class="com.bls.mp.service.impl.ThirdDataServiceImpl"/>--> <bean class="com.bls.mp.common.SpringTool"/> <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --> <!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> JSON转换器 </list> </property> </bean>--> <!-- 定义跳转的文件的前后缀 ,视图模式配置--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> <property name="prefix" value="/WEB-INF/resources/jsp/" /> <property name="suffix" value=".jsp" /> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> </bean> <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 默认编码 --> <property name="defaultEncoding" value="utf-8" /> <!-- 文件大小最大值 --> <property name="maxUploadSize" value="10485760000" /> <!-- 内存中的最大值 --> <property name="maxInMemorySize" value="40960" /> </bean> <!-- 全局异常处理器 --> <bean class="com.bls.mp.common.exception.CustomExceptionResolver"></bean> <mvc:annotation-driven/> <!-- 拦截器配置 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/setadmin"/> <!--<mvc:mapping path="/user/userList"/> --> <mvc:mapping path="/Blocker"/> <mvc:mapping path="/goods/goods"/> <bean class="com.bls.mp.interceptor.AuthInterceptor"></bean> </mvc:interceptor> </mvc:interceptors> <task:annotation-driven/> <!-- 配置访问静态文件 --> <mvc:default-servlet-handler/> <mvc:resources location="/images/" mapping="/images/**"/> <mvc:resources location="/WEB-INF/js/" mapping="/js/**"/> <mvc:resources location="/WEB-INF/resources/jsp/" mapping="/jsp/**"/> <mvc:resources location="/WEB-INF/resources/css/" mapping="/css/**"/> </beans> ``` spring-mybatis.xml: ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 自动扫描 --> <context:component-scan base-package="com.bls.mp"/> <!-- 引入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties" /> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 初始化连接大小 --> <property name="initialSize" value="${initialSize}"></property> <!-- 连接池最大数量 --> <property name="maxActive" value="${maxActive}"></property> <!-- 连接池最大空闲 --> <property name="maxIdle" value="${maxIdle}"></property> <!-- 连接池最小空闲 --> <property name="minIdle" value="${minIdle}"></property> <!-- 获取连接最大等待时间 --> <property name="maxWait" value="${maxWait}"></property> </bean> <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath:com/bls/mp/mapping/*.xml"></property> </bean> <!-- DAO接口所在包名,Spring会自动查找其下的类 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.bls.mp.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> </beans> ``` jdk版本: 1.8.0_222 tomcat 版本:8.0 有没有大佬来给看看呀0.0
【小白前端】如何提取iframe里的文本内容(PS:存在跨域)?
自己写的html然后里边有一个iframe引入地址是百度网的话,我想从百度网获取一点文本的话,能够实现吗,应该怎么做? 同一个域名下的话,是可以实现的,但是这个不同,就遇到问题了,用jquery的话,获取不到内容;用test()就会报错。 他的报错 _Uncaught DOMException: Blocked a frame with origin "http://127.0.0.99"from accessing a cross-origin frame. _ HTML代码 ``` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> <style> div.dd { width: 500px; height:500px; } iframe { width: 100%; height: 500px; background-color: rgba(0,0,0,0.1); } </style> </head> <body> <div class="input"> 内容:<input type="text" id="input" value="111"> <button class="btn btn-success" xonclick="test()">获取</button> <iframe id="iframea" name="iframe1" src="https://www.baidu.com/" frameborder="0"> </iframe> </div> </body> <script> $(function() { $('.btn').click(function() { // var $text = $("#iframea").contents().find(".mnav").text;//jquery 方法1 // var $text = $("#iframea").contents().find("#ccc").text; // alert($text) // $('#input').val($text); var word = $("#iframea").contents().find('#u1').text(); console.log(word) alert(word); }) }) function test() { // var a = document.getElementById("iframea").contentWindow.document.getElementById("u1").value; // var word = document.getElementById("iframea").contentWindow.document.getElementById("u1") // alert(word) } </script> </html> ``` 小生在此谢过各位看官和大神!!! br br br 兜兜转转,问题还是没有完全解决,但相对于上周,有多知道了一点东西。 知道了如何用jsonp跨域获取数据;可是,最重要的一步是如何将百度网转换成jsonp形式呢?要把他转换成jsonp形式,才可以抓取。 首先是 http://127.0.0.1/za_soft/aaaa.html ``` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> <!-- <script src="https://www.baidu.com/"></script> --> <script type="text/javascript"> $.ajax({ type: "get", async: false, url: "http://127.0.0.1:8800/zzzzz.js", dataType: "jsonp", jsonp: "callBack", // 传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般认为:callback) jsonpCallback: 'flightHandler', // 自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写“?”,jQuery会自动为你处理数据 success: function(json) { alert('您查询到航班信息:票价:' + json.price + '$, 余票:' + json.tickets + '张。' + '航班:' + json.code); console.log($(this).html); }, error: function() { alert('失败!!!!'); } }) </script> </head> <body> 内容:<input type="text" id="input" value="111"> <button class="btn btn-success" onclick="test()">获取</button> <iframe id="iframea" name="iframe1" src="https://www.baidu.com/" frameborder="0"> </iframe> </body> </html> ``` 下边是http://127.0.0.1:8800/zzzzz.js ``` flightHandler({ "code": "CA1998", "price": 1780, "tickets": 5 }); ``` 我最终的目的是想要将 ajax里面的 url: "http://127.0.0.1:8800/zzzzz.js", 地址换成 url: "https://www.baidu.com/", 所以问题来了, 怎么样把百度网转换成一个jsonp形式的文件呢? 求教求教啊。。。。。。
130 个相见恨晚的超实用网站,一次性分享出来
相见恨晚的超实用网站 持续更新中。。。
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
iOS Bug 太多,苹果终于坐不住了!
开源的 Android 和闭源的 iOS,作为用户的你,更偏向哪一个呢? 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 毋庸置疑,当前移动设备操作系统市场中,Android 和 iOS 作为两大阵营,在相互竞争的同时不断演进。不过一直以来,开源的 Android 吸引了无数的手机厂商涌入其中,为其生态带来了百花齐放的盛景,但和神秘且闭源的 iOS 系统相比,不少网友
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
为什么你学不过动态规划?告别动态规划,谈谈我的经验
动态规划难吗?说实话,我觉得很难,特别是对于初学者来说,我当时入门动态规划的时候,是看 0-1 背包问题,当时真的是一脸懵逼。后来,我遇到动态规划的题,看的懂答案,但就是自己不会做,不知道怎么下手。就像做递归的题,看的懂答案,但下不了手,关于递归的,我之前也写过一篇套路的文章,如果对递归不大懂的,强烈建议看一看:为什么你学不会递归,告别递归,谈谈我的经验 对于动态规划,春招秋招时好多题都会用到动态...
(经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
今年正式步入了大四,离毕业也只剩半年多的时间,回想一下大学四年,感觉自己走了不少弯路,今天就来分享一下自己大学的学习经历,也希望其他人能不要走我走错的路。 (一)初进校园 刚进入大学的时候自己完全就相信了高中老师的话:“进入大学你们就轻松了”。因此在大一的时候自己学习的激情早就被抛地一干二净,每天不是在寝室里玩游戏就是出门游玩,不过好在自己大学时买的第一台笔记本性能并不是很好,也没让我彻底沉...
使用 Angular 打造微前端架构的 ToB 企业级应用
这篇文章其实已经准备了11个月了,因为虽然我们年初就开始使用 Angular 的微前端架构,但是产品一直没有正式发布,无法通过生产环境实践验证可行性,11月16日我们的产品正式灰度发布,所以是时候分享一下我们在使用 Angular 微前端这条路上的心得(踩过的坑)了额,希望和 Angular 社区一起成长一起进步,如果你对微前端有一定的了解并且已经在项目中尝试了可以忽略前面的章节。 什么是微前...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
拿下微软、Google、Adobe,印度为何盛产科技圈 CEO?
作者 | 胡巍巍 出品 | CSDN(ID:CSDNnews) 世界500强中,30%的掌舵人,都是印度人。 是的,你没看错。这是近日《哈佛商业评论》的研究结果。 其中又以微软CEO萨提亚·纳德拉(Satya Nadella)、和谷歌CEO桑达尔·皮查伊(Sundar Pichai,以下简称劈柴)最为出名。 微软CEO萨提亚·纳德拉(Satya Nadella) 其他著名印度...
程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
一文带你入门Linux
文章目录1.1 Linux的概述:1.1.1 什么是Linux:1.1.1.1 学习Linux之前先了解Unix1.1.1.2 Linux的概述:1.1.1.3 Linux的历史:1.1.1.4 Linux系统的应用:1.1.1.5 Linux的版本1.1.1.6 Linux的主流版本1.2 Linux的安装:1.2.1 虚拟机安装:1.2.1.1 什么是虚拟机1.2.1.2 安装VmWare1....
普通三本毕业,我怎么一路艰辛进入阿里的
英雄不问出处? 自古以来就有这样一句话,真的英雄不问出处吗?这句话太挫了。普通三本院校的我,大四的时候居然都不知道什么是校招,所以出处太重要了。这也是没有机会参加阿里校招的原因,毕竟校招门槛比社招还是要低的,最重要的是校招进入阿里能让你的起点比别人更高。 有幸可以社招进入阿里,了解了校招的思路,赶紧介绍给学弟们,现在我们三本院校的小学弟今年居然有 3 个人通过了阿里的校招。下面我也把这份宝贵的经...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
强烈推荐10本程序员在家读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
关于2020年个人项目【臻美_疫情实时大数据报告】(项目开源)
本项目开源,供大家学习交流,数据来自官方通报。 项目网址: 点这可以查看项目 项目图例: 1、国内疫情(省) 2、国内疫情(市) 3、国外疫情 4、热点消息、辟谣消息 5、防疫知识 源码奉上: 本项目后台使用node.js app.js var originRequest = require('request'); var iconv = require('iconv-lite'...
[数据结构与算法] 排序算法
终于学习到了算法部分, 在学习算法时, 我们还是应该回顾一下数据结构与算法之间的关系 数据结构是研究数据的组织方式, 是算法的基础 算法是解决编程问题的方法论, 是程序的灵魂 程序= 数据结构+算法 排序算法 排序也称排序算法(Sort algorithm). 是指 将一组数据按照指定顺序进行排列的过程 主要分为内部排序和外部排序 内部排序: 指将需要处理的数据加载到内存中进行排序 外部排序...
听说想当黑客的都玩过这个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...
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药...
自学python网络爬虫,从小白快速成长,分别实现静态网页爬取,下载meiztu中图片;动态网页爬取,下载burberry官网所有当季新品图片。
文章目录 1.前言 2.知识储备 3.爬取静态网站 4.爬取动态网站 1.前言 近日疫情严重,手机已经玩吐了,闲着无聊逛衣服品牌官网发现,结果一时兴起,想学一学python,写一个爬虫下载官网所有最新上架的衣服图片和价格;说干就干,但身为一个只学过一些c和c++的python 0基础大二小白,csdn上的各种教程里涉及的各种发法、工具和库让我眼花缭乱;因此走了很多弯路,终于花三天时间完成了爬虫的设...
面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他
初识 MyBatis MyBatis 是第一个支持自定义 SQL、存储过程和高级映射的类持久框架。MyBatis 消除了大部分 JDBC 的样板代码、手动设置参数以及检索结果。MyBatis 能够支持简单的 XML 和注解配置规则。使 Map 接口和 POJO 类映射到数据库字段和记录。 MyBatis 的特点 那么 MyBatis 具有什么特点呢?或许我们可以从如下几个方面来描述 MyBati...
对Tomcat的简单概要小结
首先我们必须得知道Tomcat就是一个服务,一个本地服务,我们可以控制启动和停止,我们程序员通过这个服务主要是用来存放我们的java程序,当我们把Java程序放进Tomcat服务中,一旦Tomcat服务启动起来,其他电脑就可以进行网络连通,也就是说其他电脑也可以共同访问这个Java程序。 Tomcat的主要目录的概念 有上面的概念之后,我们再来知道一下tomcat根目录下都有哪些文件,以及这些文...
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问