数据专栏

智能大数据搬运工,你想要的我们都有

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

HDC调试需求开发(15万预算),能者速来!>>> 碰到个问题,搞了一天了,还是没解决,只好问下大家了。 我在这么个功能,动态创建定时任务,只要写业务类和数据库插入一条数据即可。基本功能已经完成,但代码发现一个问题,以前会在xml中写一个配置 :使用 MethodInvokingJobDetailFactoryBean 生成job,只需要配置属性 concurrent=flase 即可保证线程中的任务执行完毕,才会创建新的线程 。 但现在这种动态创建的方式,我就无法注入这个参数了,可能是我没找到,或者姿势错误。 个人尝试过的解决方案: 1 加入 @DisallowConcurrentExecution 注解,无效果,应该和我这种写法有关系 2 在运行的时候找到全部的任务,然后遍历任务ID,如果发现该任务已经在执行,则忽略执行。这种方式也不行,返回的都是正常状态 3 将任务id当做线程名字,遍历全部线程,发现线程存在则忽略。也有问题,首先用了线程池之后不能随便设置名字 4.。。。。。。其他方案 下面是核心代码,大家帮忙看下,怎么才能让 比如任务A, 我不确定他执行的快慢,可能是3秒,可能30秒,也可能40秒,这个任务是每20秒执行一次,如果任务A还没执行完,不会继续执行,等执行完后,才会继续。 任务类: 创建定时任务: 执行定时任务的类: @Component public class ScheduleJobService extends QuartzJobBean { @Resource private ScheduleJobLogDao scheduleJobLogDao; private static Logger log = LoggerFactory.getLogger(ScheduleJobService.class); /** * 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。 */ private ExecutorService service = Executors.newSingleThreadExecutor(); /** * 执行定时任务 * @param context */ @Override protected void executeInternal(JobExecutionContext context) { ScheduleJob scheduleJob = (ScheduleJob)context.getMergedJobDataMap().get(Constant.JOB_PARAM_KEY); //数据库保存执行记录 ScheduleJobLog scheduleJobLog = new ScheduleJobLog(); scheduleJobLog.setId(CommonTool.getUUId()); scheduleJobLog.setJobId(scheduleJob.getId()); scheduleJobLog.setBeanName(scheduleJob.getBeanName()); scheduleJobLog.setMethodName(scheduleJob.getMethodName()); scheduleJobLog.setParams(scheduleJob.getParams()); scheduleJobLog.setCreateTime(CommonTool.getTimestamp()); //任务开始时间 long startTime = System.currentTimeMillis(); try { log.info("任务准备执行,任务ID:" + scheduleJob.getId() + scheduleJob.getBeanName()); //调用线程 ScheduleRunnable task = new ScheduleRunnable(scheduleJob.getBeanName(), scheduleJob.getMethodName(), scheduleJob.getParams()); //设置线程名 task.setName(scheduleJob.getId()); //Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果。必要时可以通过get方法获取执行结果,该方法会阻塞直到任务返回结果。 Future future = service.submit(task); future.get(); //任务执行总时长 long times = System.currentTimeMillis() - startTime; scheduleJobLog.setTimes((int) times); scheduleJobLog.setStatus(Constant.TASK_SUCCESS); log.info("任务执行完毕,任务ID:" + scheduleJob.getId() + " 总共耗时:" + times + "毫秒"); } catch (Exception e){ log.error("任务执行失败,任务ID:" + scheduleJob.getId(), e); //任务执行总时长 long times = System.currentTimeMillis() - startTime; scheduleJobLog.setTimes((int)times); scheduleJobLog.setStatus(Constant.TASK_FAIL); scheduleJobLog.setError(e.toString()); } finally { scheduleJobLogDao.insert(scheduleJobLog); } } } 上面的 ScheduleRunnable public class ScheduleRunnable extends Thread{ /** * bean 名 */ private Object target; /** * 方法名 */ private Method method; /** * 参数 */ private String params; /** * 构造函数 * @param beanName bean的名字 * @param methodName 方法名 * @param params 参数 */ public ScheduleRunnable(String beanName, String methodName, String params) throws NoSuchMethodException { this.target = SpringContextTool.getBean(beanName); this.params = params; if (CheckTool.checkNull(params)){ this.method = target.getClass().getDeclaredMethod(methodName); } else { this.method = target.getClass().getDeclaredMethod(methodName, String.class); } } @Override public void run() { try { ReflectionUtils.makeAccessible(method); if (CheckTool.checkNull(params)){ method.invoke(target); } else { method.invoke(target, params); } } catch (Exception e) { throw new ServiceException("执行定时任务失败!" + e); } } }
来源:开源中国
发布时间:2019-10-10 23:04:00
HDC调试需求开发(15万预算),能者速来!>>> Exception in thread "Quartz Scheduler [fbidp_schedulerTarget]" org.springframework.scheduling.SchedulingException: Could not start Quartz Scheduler after delay; nested exception is org.quartz.SchedulerException: The Scheduler cannot be restarted after shutdown() has been called. at org.springframework.scheduling.quartz.SchedulerFactoryBean$1.run(SchedulerFactoryBean.java:671) Caused by: org.quartz.SchedulerException: The Scheduler cannot be restarted after shutdown() has been called. at org.quartz.core.QuartzScheduler.start(QuartzScheduler.java:557) at org.quartz.impl.StdScheduler.start(StdScheduler.java:142) at org.springframework.scheduling.quartz.SchedulerFactoryBean$1.run(SchedulerFactoryBean.java:668)
来源:开源中国
发布时间:2019-08-23 12:07:00
HDC调试需求开发(15万预算),能者速来!>>> 需求: 每周一到周五,上午9:30--12,下午13--16点,每隔10秒触发一次 quartz支持这样的需求吗? 我查阅了很多网上的资料,具体到小时分钟的,没有找到触发时间以秒计的
来源:开源中国
发布时间:2015-11-06 10:31:00
HDC调试需求开发(15万预算),能者速来!>>> 如题 @许雪里 xxl-job只能是一个类执行一个任务吗,可不可以一个类里执行多个任务?原来用quartz时的代码,一个类里放了很多任务,现在接入xxl-job时只能手动把那些任务拆出来吗?
来源:开源中国
发布时间:2019-06-26 17:24:00
HDC调试需求开发(15万预算),能者速来!>>> Support for specifying both a day-of-week AND a day-of-month parameter is not implemented. google翻译下,不支持指定参数 ; 这是网上对于这个地方的理解? 看不太懂2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样; 如果我就是想让它周日到周一都触发呢?
来源:开源中国
发布时间:2019-06-25 18:58:00
HDC调试需求开发(15万预算),能者速来!>>> 2019-05-31 10:19:04.278 INFO 2832 --- [ restartedMain] org.quartz.core.QuartzScheduler : Scheduler RASScheduler_$_20160101-0008041559269139417 shutting down. 2019-05-31 10:19:04.278 INFO 2832 --- [ restartedMain] org.quartz.core.QuartzScheduler : Scheduler RASScheduler_$_20160101-0008041559269139417 paused. 2019-05-31 10:19:04.278 INFO 2832 --- [ restartedMain] org.quartz.core.QuartzScheduler : Scheduler RASScheduler_$_20160101-0008041559269139417 shutdown complete. 2019-05-31 10:19:04.291 INFO 2832 --- [ restartedMain] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} closed 2019-05-31 10:19:05.185 INFO 2832 --- [ [RASScheduler]] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now, after delay of 1 seconds Exception in thread "Quartz Scheduler [RASScheduler]" org.springframework.scheduling.SchedulingException: Could not start Quartz Scheduler after delay; nested exception is org.quartz.SchedulerException: The Scheduler cannot be restarted after shutdown() has been called. at org.springframework.scheduling.quartz.SchedulerFactoryBean$1.run(SchedulerFactoryBean.java:727) Caused by: org.quartz.SchedulerException: The Scheduler cannot be restarted after shutdown() has been called. at org.quartz.core.QuartzScheduler.start(QuartzScheduler.java:529) at org.quartz.impl.StdScheduler.start(StdScheduler.java:142) at org.springframework.scheduling.quartz.SchedulerFactoryBean$1.run(SchedulerFactoryBean.java:724)
来源:开源中国
发布时间:2019-05-31 10:21:00
HDC调试需求开发(15万预算),能者速来!>>> Freed 0 triggers from 'acquired' / 'blocked' state. 2019-05-22 14:59:00.548 INFO 11624 --- [ [RASScheduler]] o.s.s.quartz.LocalDataSourceJobStore : Recovering 0 jobs that were in-progress at the time of the last shut-down. 2019-05-22 14:59:00.548 INFO 11624 --- [ [RASScheduler]] o.s.s.quartz.LocalDataSourceJobStore : Recovery complete. 2019-05-22 14:59:00.553 INFO 11624 --- [ [RASScheduler]] o.s.s.quartz.LocalDataSourceJobStore : Removed 0 'complete' triggers. 2019-05-22 14:59:00.555 INFO 11624 --- [ [RASScheduler]] o.s.s.quartz.LocalDataSourceJobStore : Removed 0 stale fired job entries.
来源:开源中国
发布时间:2019-05-22 15:02:00
HDC调试需求开发(15万预算),能者速来!>>> java定时调度quartz ,为啥要这么多表,其他表做啥的? QRTZ_FIRED_TRIGGERS ``QRTZ_PAUSED_TRIGGER_GRPS``
来源:开源中国
发布时间:2019-05-22 14:15:00
HDC调试需求开发(15万预算),能者速来!>>> ----job.getJobName()--null ----SpringUtils--beanName--null 2019-05-22 13:23:57.137 INFO 9660 --- [duler_Worker-12] c.r.p.monitor.job.util.ScheduleJob : 任务开始执行 - 名称:null 方法:null 2019-05-22 13:23:57.137 INFO 9660 --- [duler_Worker-12] c.r.p.monitor.job.util.ScheduleJob : 任务执行失败 - 名称:null 方法:null 2019-05-22 13:23:57.137 ERROR 9660 --- [duler_Worker-12] c.r.p.monitor.job.util.ScheduleJob : 任务执行异常 - : java.lang.IllegalArgumentException: 'name' must not be null at org.springframework.util.Assert.notNull(Assert.java:193) ~[spring-core-5.0.7.RELEASE.jar:5.0.7.RELEASE] at org.springframework.beans.factory.BeanFactoryUtils.transformedBeanName(BeanFactoryUtils.java:74) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.transformedBeanName(AbstractBeanFactory.java:1122) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:242) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] at com.ras.common.utils.spring.SpringUtils.getBean(SpringUtils.java:37) ~[classes/:na] at com.ras.project.monitor.job.util.ScheduleRunnable.(ScheduleRunnable.java:26) ~[classes/:na] at com.ras.project.monitor.job.util.ScheduleJob.executeInternal(ScheduleJob.java:83) ~[classes/:na] at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) [spring-context-support-5.0.7.RELEASE.jar:5.0.7.RELEASE] at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [quartz-2.3.0.jar:na] at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [quartz-2.3.0.jar:na]
来源:开源中国
发布时间:2019-05-22 13:26:00
HDC调试需求开发(15万预算),能者速来!>>> 2019-05-21 14:38:01.433 WARN 10480 --- [_ClusterManager] o.s.s.quartz.LocalDataSourceJobStore : This scheduler instance (20160101-0008041558420551959) is still active but was recovered by another instance in the cluster. This may cause inconsistent behavior.
来源:开源中国
发布时间:2019-05-21 14:39:00
HDC调试需求开发(15万预算),能者速来!>>> 2019-05-14 16:56:27.198 WARN 11328 --- [_ClusterManager] o.s.s.quartz.LocalDataSourceJobStore : This scheduler instance (20160101-0008041557823889728) is still active but was recovered by another instance in the cluster. This may cause inconsistent behavior. 2019-05-14 16:56:42.203 WARN 11328 --- [_ClusterManager] o.s.s.quartz.LocalDataSourceJobStore : This scheduler instance (20160101-0008041557823889728) is still active but was recovered by another instance in the cluster. This may cause inconsistent behavior.
来源:开源中国
发布时间:2019-05-14 16:59:00
HDC调试需求开发(15万预算),能者速来!>>> 使用Spring Boot 2.x 做了一个后台管理系统,集成了Quartz功能,但有些工程需要用到定时任务,有些工程不会用到定时任务,有没有办法做一个设置,能够在用不到定时任务的工程中停用quartz,这样最起码不用创建quartz数据库,减少一定的施工难度
来源:开源中国
发布时间:2018-11-05 14:20:00
HDC调试需求开发(15万预算),能者速来!>>> 使用quartz做定时任务,设置触发时间0/20 * *?,会在每分钟的00、20、40秒时执行任务。任务触发后执行了两次,比如第一次在00秒触发并执行了任务,更新了下次触发时间是20秒时。接着又执行了,更新了下次触发时间是40秒时触发。到了20秒时就不会在触发任务,等到40秒才会触发并在执行2次任务。设置分钟或小时触发时会正常触发,设置秒就不行。 使用的包是quartz-1.5.2.jar。这是什么原因造成的,求大神们帮忙看下 谢谢
来源:开源中国
发布时间:2019-02-18 18:03:00
HDC调试需求开发(15万预算),能者速来!>>> @红薯 你好,想跟你请教个问题: 我实现了一个调度引擎: 基本模型: 基于事件或Quartz定时生成一个job,每个job由若干个task组成,task之间存在串行或并行的依赖关系。 task的具体实现引擎不关心,调度引擎只负责按照拓扑逻辑发出HTTP信号调用任务,并由任务实现端通过HTTP通知引擎任务的完成状态。 已知的使用场景是ETL工具的调度和任何单例多任务协作的调度 用户只需要定义并实现具体的单任务接口(基于HTTP),并定义单任务所依赖的上游任务, 则引擎自动生成可视化的拓扑流程图(自动生成的拓扑流程图如下),并按照拓扑关系依次发出调度信号至任务接口,实现各类ETL批处理调度或任何单例的调度流程。和其它调度类中间件相比,我的这个比较重视任务拓扑关系可视化和任务执行阶段的直观可视化。不知您觉得此项目是否有价值,是否可以开源。目前该框架仅在我所在公司数据中心使用
来源:开源中国
发布时间:2019-01-08 22:16:00
HDC调试需求开发(15万预算),能者速来!>>> @Configuration public class CorsConfig extends WebMvcConfigurationSupport{ @Override protected void addCorsMappings(CorsRegistry registry) { registry .addMapping("/**")// 4对接口配置跨域设置 .allowedMethods("*")// 3允许任何方法(post、get等) .allowedHeaders("*")// 2允许任何头 .allowedOrigins("*")//1允许任何域名使用, .allowCredentials(true);// 默认不支持User Credentials } //swagger2 跨域配置 @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations("classpath:/static/"); registry.addResourceHandler("doc.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); super.addResourceHandlers(registry); } } 问题如下: 我已经配置好,CORS,配置代码如上,现在的问题是.前端 使用localhost:8087 登陆,保存在session中的信息不会丢失,一切正常,但是使用192.169.0.22:8087的时候,在ie9的环境里,session保存的用户信息就丢失了.经理说参考一下P3P的配置.但是百度了好久,没有关于springboot下的p3p配置,参考了一下帖子里的配置,并没有生效.所以想问一下原因.以及解决方案. 我目前想到的是把session 换成 redis session试试,结果在使用redis的时候.发现redis 的包.和我在用的quartz包起冲突了,实在莫得办法了.请教一下各位大佬. 报错信息 Description: An attempt was made to call the method org.quartz.Scheduler.getListenerManager()Lorg/quartz/ListenerManager; but it does not exist. Its class, org.quartz.Scheduler, is available from the following locations: jar:file:/C:/Users/Zmm/.m2/repository/org/quartz-scheduler/quartz/1.8.6/quartz-1.8.6.jar!/org/quartz/Scheduler.class It was loaded from the following location: file:/C:/Users/Zmm/.m2/repository/org/quartz-scheduler/quartz/1.8.6/quartz-1.8.6.jar Action: Correct the classpath of your application so that it contains a single, compatible version of org.quartz.Scheduler
来源:开源中国
发布时间:2019-01-12 15:50:00
HDC调试需求开发(15万预算),能者速来!>>> import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.CoreConnectionPNames; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.io.IOException; import java.security.cert.CertificateException; /*** *https post请求 *lvzhuolin@baidu.com */ public class HttpClientUtils { private static DefaultHttpClient client; private static void enableSSL(DefaultHttpClient httpclient){ try { SSLContext sslcontext = SSLContext.getInstance("TLS"); sslcontext.init(null, new TrustManager[] { truseAllManager }, null); SSLSocketFactory sf = new SSLSocketFactory(sslcontext); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); Scheme https = new Scheme("https", sf, 443); httpclient.getConnectionManager().getSchemeRegistry().register(https); } catch (Exception e) { e.printStackTrace(); } } private static TrustManager truseAllManager = new X509TrustManager(){ public void checkClientTrusted(java.security.cert.X509Certificate[] arg0, String arg1) throws CertificateException { } public void checkServerTrusted(java.security.cert.X509Certificate[] arg0, String arg1) throws CertificateException { // TODO Auto-generated method stub } public java.security.cert.X509Certificate[] getAcceptedIssuers() { // TODO Auto-generated method stub return null; } }; /** *//** * Send a XML-Formed string to HTTP Server by post method * * @param url * the request URL string * @param xmlData * XML-Formed string ,will not check whether this string is * XML-Formed or not * @return the HTTP response status code ,like 200 represents OK,404 not * found * @throws IOException * @throws ClientProtocolException */ public static String sendDataByPost(String url, String data) throws Exception { if (client == null) { // Create HttpClient Object client = new DefaultHttpClient(); enableSSL(client); } client.getParams().setParameter("http.protocol.content-charset", HTTP.UTF_8); client.getParams().setParameter(HTTP.CONTENT_ENCODING, HTTP.UTF_8); client.getParams().setParameter(HTTP.CHARSET_PARAM, HTTP.UTF_8); client.getParams().setParameter(HTTP.DEFAULT_PROTOCOL_CHARSET, HTTP.UTF_8); client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000); client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000); HttpPost post = new HttpPost(url); StringEntity entity = new StringEntity(data,"GBK"); entity.setContentType("application/x-www-form-urlencoded"); post.setEntity(entity); HttpResponse response = client.execute(post); HttpEntity entityRep = response.getEntity(); String strrep=""; if (entityRep != null) { strrep = EntityUtils.toString(response.getEntity(),"UTF-8"); // Do not need the rest post.abort(); } EntityUtils.consume(entityRep); // instream.close(); return strrep; } } 多线程调用sendDataByPost,出现异常: java.lang.IllegalStateException: Invalid use of BasicClientConnManager: connection still allocated. Make sure to release the connection before allocating another one. httpclient 版本是4.5 ,而且代码中包括DefaultHttpClient的很多类都过时了。请问有没有httpclient-4.5以上的解决方案,并且支持多线程调用呢?
来源:开源中国
发布时间:2020-04-08 10:15:00
HDC调试需求开发(15万预算),能者速来!>>> 分页抓取淘宝店铺全部宝贝,httpclient请求链接: https://h5api.m.taobao.com/h5/mtop.taobao.wsearch.appsearch/1.0/?jsv=2.5.1&appKey=12574478&t=1583396647434&sign=7c6abfcf8351e66c169b1c307d67a2fa&api=mtop.taobao.wsearch.appSearch&v=1.0&H5Request=true&AntiCreep=true&type=jsonp&timeout=3000&dataType=jsonp&callback=mtopjsonp1&data=%7B%22m%22%3A%22shopitemsearch%22%2C%22vm%22%3A%22nw%22%2C%22sversion%22%3A%224.6%22%2C%22shopId%22%3A%2235811053%22%2C%22sellerId%22%3A%2298027113%22%2C%22style%22%3A%22wf%22%2C%22page%22%3A%221%22%2C%22sort%22%3A%22_coefp%22%2C%22catmap%22%3A%22%22%2C%22wirelessShopCategoryList%22%3A%22%22%7D 其中sign算法没问题(网上百度一大堆),data参数中有page=1,page=1的时候没有问题数据可以正常返回,但是page改成大于1后,response返回信息RGV587_ERROR::SM,不知道有同仁遇到的吗请赐教。 不是请求频繁的问题应该,page=1的话死循环请求都返回正常数据,就是一改page就不行。
来源:开源中国
发布时间:2020-03-05 17:50:00
HDC调试需求开发(15万预算),能者速来!>>> http://www.sse.com.cn/assortment/stock/list/name/# 这里找不到 翻页的参数 后来看网络找了 地址,可是请求 却返回错误 http://query.sse.com.cn/commonQuery.do?jsonCallBack=jsonpCallback13471&isPagination=true&sqlId=COMMON_SSE_ZQPZ_GPLB_MCJS_SSAG_1&pageHelp.pageSize=50&pageHelp.pageNo=2&pageHelp.beginPage=1&pageHelp.endPage=5&_=1446453188557 详情页 也是 这样 http://www.sse.com.cn/assortment/stock/list/stockdetails/company/index.shtml?COMPANY_CODE=600005 --》 http://query.sse.com.cn/commonQuery.do?jsonCallBack=jsonp1446453525116&_=1446453525188&isPagination=false&sqlId=COMMON_SSE_ZQPZ_GP_GPLB_C&productid=600005 我找的地址不对吗? 怎么弄?
来源:开源中国
发布时间:2015-11-02 16:40:00
HDC调试需求开发(15万预算),能者速来!>>> 我的理解:HTTP最大连接是600,每个route的连接不能超过300 我的问题:如果300个并发请求A HOST,当第301个请求过来时,显然A HOST对应的route池子满了,这时HTTPClient是从600大池子里面借用还是将301请求放入queue中直到timeout? 源码贴图: 请大牛帮忙分析下
来源:开源中国
发布时间:2019-01-17 19:52:00
HDC调试需求开发(15万预算),能者速来!>>> 昨天接触到了httpclient和jsoup, 使用httpclient模拟登陆OA,想抓OA的数据下来,无实在意义,只是练手。 不过在过程中出了一点问题。 public static boolean login(){ HttpGet get = new HttpGet(uri+"/logincheck.php"); List params = new ArrayList(); //.... try { String str = EntityUtils.toString(new UrlEncodedFormEntity(params)); get.setURI(new URI(get.getURI()+"?"+str)); response = client.execute(get); //.... } catch (Exception e) { e.printStackTrace(); } if(response.getStatusLine().getStatusCode()==200){ System.out.println("登陆成功!"); return true; }else{ return false; } } 这个方法没有问题,不过在登陆之后,我直接访问一个OA里面的新闻页面,去抓数据的时候就会出错。 public static String getNewsContent(){ HttpGet get = new HttpGet(uri+"/general/notify/show"); try { response = client.execute(get); HttpEntity entity = response.getEntity(); String newsContent = EntityUtils.toString(entity); Document doc = Jsoup.parse(newsContent); Elements elements = doc.getElementsByClass("TableLine1"); for(Element element : elements){ System.out.println(element.val()); } } catch (Exception e) { e.printStackTrace(); } return ""; } 在第二次client.execute(get)的时候就会报错。 java.lang.IllegalStateException: Invalid use of BasicClientConnManager: connection still allocated. Make sure to release the connection before allocating another one.
来源:开源中国
发布时间:2013-10-11 17:16:00
HDC调试需求开发(15万预算),能者速来!>>> java httpclient模拟一个请求,以下是f12看到的请求相关参数和header
来源:开源中国
发布时间:2018-09-09 13:34:00
HDC调试需求开发(15万预算),能者速来!>>> RegController.java Controller Springmvc的方法: IMUsers.Main(nkname, password); 在RegController中调用IMUsers的Main执行就错误了 在IMUsers中创建一个Main方法,然后调用Main就没有错。 IMUsers.java public static final Logger LOGGER = LoggerFactory.getLogger(IMUsers.class); public static final JsonNodeFactory factory = new JsonNodeFactory(false); //35行 public static Credential credential = new ClientSecretCredential(Constants.APP_CLIENT_ID, Constants.APP_CLIENT_SECRET, Roles.USER_ROLE_APPADMIN); public static void Main(String username,String password){ ObjectNode datanode = JsonNodeFactory.instance.objectNode(); datanode.put("username",username); datanode.put("password", password); System.out.println(datanode); ObjectNode createNewIMUserSingleNode = IMUsers.createNewIMUserSingle(datanode); if (null != createNewIMUserSingleNode) { System.out.println("为空"); } } /** * 注册IM用户[单个] * * 给指定Constants.APPKEY创建一个新的用户 * * @param dataNode * @return */ public static ObjectNode createNewIMUserSingle(ObjectNode dataNode) { ObjectNode objectNode = factory.objectNode(); // check Constants.APPKEY format if (!HTTPClientUtils.match("^(?!-)[0-9a-zA-Z\\-]+#[0-9a-zA-Z]+", Constants.APPKEY)) { LOGGER.error("Bad format of Constants.APPKEY: " + Constants.APPKEY); System.out.println("错误"); objectNode.put("message", "Bad format of Constants.APPKEY"); return objectNode; } objectNode.removeAll(); // check properties that must be provided if (null != dataNode && !dataNode.has("username")) { LOGGER.error("Property that named username must be provided ."); objectNode.put("message", "Property that named username must be provided ."); return objectNode; } if (null != dataNode && !dataNode.has("password")) { LOGGER.error("Property that named password must be provided ."); objectNode.put("message", "Property that named password must be provided ."); return objectNode; } try { objectNode = HTTPClientUtils.sendHTTPRequest(EndPoints.USERS_URL, credential, dataNode, HTTPMethod.METHOD_POST); } catch (Exception e) { e.printStackTrace(); } return objectNode; } java.lang.ClassNotFoundException: org.apache.http.HttpEntity at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) at com.datanum.user.httpclient.api.IMUsers.(IMUsers.java:35) at com.datanum.user.web.RegController.RegQQ(RegController.java:172) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838) at javax.servlet.http.HttpServlet.service(HttpServlet.java:646) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2440) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2429) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:724)
来源:开源中国
发布时间:2015-10-31 12:15:00
HDC调试需求开发(15万预算),能者速来!>>> 配置好 Nginx 相关 SSL 后,写一个简单的 index.html 可以用 https 和 http 正常访问,但是在安装好 wordpress 后,https访问直接就下载相应的php,如index.php、wp-admin.php 等等,如图
来源:开源中国
发布时间:2017-12-04 17:08:00
HDC调试需求开发(15万预算),能者速来!>>> 公司突然需要搭建wiki系统,想通过插件,继续利用wordpress上传的功能,但是上传的位置非本地,而是设置好的存储服务器!请问大侠有何建议,或者这个需求是否有解决方案?
来源:开源中国
发布时间:2017-04-14 11:17:00
HDC调试需求开发(15万预算),能者速来!>>> 请问大家在做area图片热点的时候是怎么解决firefox一点击就出现虚线框的问题那? 用了outline:none,onfocus="this.blur()"hidefocus=”true”,还有::-moz-focus-inner全部没有效.
来源:开源中国
发布时间:2020-03-28 19:05:00
HDC调试需求开发(15万预算),能者速来!>>> 每个人开发者都是由初级一步一步走向高级工程师。当然,不是说工作了多少年就能称为一名合格的高级软件工程师。有可能和你一同学习的人一两年的时间就拉开了距离。究其原因,我个人看法,有以下几点: 好学:别人下班放学挤地铁都在学习,你在上网看视频玩游戏 天分:这个很难超越,有些人他天生就属于这个行业,对于技术一点就通,一悟就会 环境:好的开发团队能让人飞速进步 经验是不平等的 自学5年编程,有可能比不上一个全职工作一年的人。5年你可能掌握了大量的理论知识,但是如果没有实践很难学精。工作中会碰到各种奇怪的问题。还有没有和其他人合作,你的代码没有被其他开发者审核过,你就不会知道代码存在哪些缺陷,也就很难进步。 导师很重要 好的导师能让你快速成长进步,你可能对某个知识点思考了半天甚至一个星期都没有弄明白。如果有经验丰富的人指点就有一种柳暗花明又一村的感觉。 职称不是很重要 5人团队的首席技术官与50人团队或500人团队不同,所做的工作和技能也完全不同。“高级”职称并不代表就是高级工程师,所以不要在意职称,能力最重要。 测试很重要 记住一句话,你写的代码是不可靠的。必须测试,测试,再测试。 不要盲目追求新技术 新技术很好,但不要随意将新技术引进到项目当中。可以先了解学习新技术,然后再看它是否适合应用到项目中。 有缺陷是正常的 世界上没有任何一个完美项目。就算再完美的技术团队或者技术非常高超的人,也会有设计漏洞。如果你刚加入公司不要抱怨前同事写的代码烂,甚至有种冲动想把项目推倒重来。对于一个非常小的项目,如果你有足够的把握说服公司领导层或者和团队一起讨论重新设计是不错的选择。但是,一个巨大项目想重新开始是非常不明智的。第一,无限增加时间成本;第二,可能你重新设计刚开始会比之前合理些,但随着时间推移,你的设计也会有设计的非常糟糕的地方。公认很好的解决方法是,在开发新需求的时候三思,尽量把代码设计合理,一旦发现不合理的代码马上重构。 代码质量最重要 如果一个项目除了你还有其他开发同事。那么,就应该制定代码风格,一个项目不同代码风格一个显的不专业,造成代码混乱。另外,不同的风格不易理解,项目开发中一大笔时间是阅读之前的代码。同时也要互相代码审核,不要把它看做是一种压力,每个人都会犯错误,互相审核可以降低代码缺陷。 重构需三思 重构代码时最好先弄清楚相关代码会对哪些功能产生影响,一块代码区可能和多个功能相关联。你出于好意,改好了某个功能缺陷影响到其他功能就得不偿失了。个人建议修改代码需三思,如果是和你共事同事写的代码,最好是由他改写,或者问清楚再改动。 技术债 技术债的定义是指开发人员为了加速软件开发,在应该采用最佳方案时进行了妥协,改用了短期内能加速软件开发的方案,从而在未来给自己带来的额外开发负担。 看起来好像我们不应该背负任何技术债。其实不然,适当妥协有时是一种不错的选择。不要理解错我的意思,如果你明知道只要多加思考就能想到更好的技术方法,而你为了图方便选择背负技术债就是你的不对了。当今软件行业讲究快速迭代,时间就是金钱。如果没有找到一个合适的技术方案而放弃一个核心功能,可能会竞争对手赶超甚至淘汰。 资历意味着成为最好的程序员 除编程外,高级工程师必须具备许多其他技能 ,沟通和项目管理。 不是每个人都会在职业生涯中成为“高级” 。资历需要多年工作经验的累积。然而,多年的经验是资历的必要但不充分的条件。它必须是一种正确的体验,在这种体验中,你将正确的课程内化,并成功地将这些学习应用于未来。有时候,更大的课程可能需要一年或更长时间才能完全显现 - 这就是为什么多年的经验仍然很重要,即使你是一个非常好的程序员。 我们在某些方面仍处于初级阶段 。最后很重要,无论你有多少年工作经验,仍然有一些你不太了解的地方。承认你不知道的是填补这一空白并从更有经验的人。 新闻 Firefox将推出付费版 Mozilla将于今年秋季推出付费版Firefox。你愿意购买付费版本吗? 链接: Firefox将推出付费版 当我们在浏览器中输入www.google.com时,幕后会发生什么 几乎我们每天都在使用浏览器,你知道在浏览器输入网站地址,幕后会发生什么吗? 链接: 当我们在浏览器中输入www.google.com时,幕后会发生什么 前端 HTML分区元素 一篇非常长的文章,介绍HTML5中的分区元素nav,aside,article以及 section 链接: HTML分区元素 微前端 在本文描述了将前端整体分解为更小,更易于管理的部分的趋势,以及这种体系结构如何提高前端代码团队的效率和效率 链接: 微前端 Web组件教程入门 Web Components(也称为Custom Elements)已成为多个浏览器的标准API,不需要React,Angular或Vue等前端框架,就能使用HTML,CSS和JavaScript实现可重用的组件。 链接: Web组件教程入门 Web组件的问题 ) web组件也有许多缺点。例如,它们许多技术限制,并且容易滥用。在本文解释为什么会这样,并建议开发组件的另一种方法。 链接: Web组件的问题 JavaScript Date对象 详细讲解了JavaScript Date对象 链接: JavaScript Date对象 首字母放大设计 英文网站以及一些书籍都会把首字母放大表示读者已进入一个重要的新部分,或者新章节开始。本文介绍如何设计好放大首字母。 链接: 首字母放大设计 工具 Zeplin 将设计系统连接与开发关联。简单说设计师出图,开发者直接复制颜色,文本样式和组件。 链接: Zeplin Whimsical 全新的思维导图,这是一篇关于它的介绍文章 链接: Whimsical
来源:开源中国
发布时间:2019-06-25 10:13:00
HDC调试需求开发(15万预算),能者速来!>>> 如题。 为啥,从情感上,我倾向于Firefox呢?
来源:开源中国
发布时间:2019-06-19 15:51:00
HDC调试需求开发(15万预算),能者速来!>>> 在html head里面设置了 < meta name ="referrer" content ="no-referrer" > 发现对css里面引用的图片无效,还是会发送referrer,img的正常,只有chrome有这个问题,firefox是没问题的。 有解决办法吗?
来源:开源中国
发布时间:2019-05-21 20:09:00
HDC调试需求开发(15万预算),能者速来!>>> 谷歌浏览器好在哪里,比起火狐和IE?
来源:开源中国
发布时间:2019-03-16 05:34:00
HDC调试需求开发(15万预算),能者速来!>>> var h5player_mousedown = function(e) { var evt = window.event || e; mouse_button = evt.button; 如此处的代码所示: 在谷歌浏览器可以正确的显示button的值出来。 但是在火狐浏览器显示undefined 请问一下,怎么才能在火狐浏览器获得我想要的button的值呢?谢谢
来源:开源中国
发布时间:2019-02-13 11:29:00
HDC调试需求开发(15万预算),能者速来!>>> 为什么搞开发的,都用火狐浏览器,而不用谷歌浏览器?
来源:开源中国
发布时间:2018-11-27 22:45:00
HDC调试需求开发(15万预算),能者速来!>>> 而且在火狐就会,而谷歌可以正常显示
来源:开源中国
发布时间:2018-11-02 20:31:00
HDC调试需求开发(15万预算),能者速来!>>> 最近换回firefox浏览器使用,调试的时候发现没有办法安装firebug了,想问一下现在firefox浏览器是合成了还是现在不能安装firebug了??
来源:开源中国
发布时间:2018-11-06 18:28:00
HDC调试需求开发(15万预算),能者速来!>>> 分别用3个浏览器的websocket功能,给云端发送数据,狂点发送的结果如下,从图上可以看出,chrome很卡,firefox 过了一会就开始卡,并且右边的数据更新不及时,而Safari一直比较流畅。请问是什么原因的导致? 系统信息 Chrome 版本 69.0.3497.92(正式版本) (64 位): FireFox 正式版 62.0 (64 位) Safari 版本 12.0 (13606.2.11)
来源:开源中国
发布时间:2018-09-18 20:03:00
HDC调试需求开发(15万预算),能者速来!>>> 1. 分析firefox的源码是用这个代码库吗?https://hg.mozilla.org/releases/mozilla-release/ 2. 我查看commit历史是通过`hg log` 看的,得到的是changeset,那怎么知道这个changeset对应的是哪个firefox版本呢?
来源:开源中国
发布时间:2017-08-30 15:43:00
HDC调试需求开发(15万预算),能者速来!>>> 学生一枚,最近在开发一个项目,搞PHP的。 原生滚动条实在是太难看了,想要使用Css修改其样式,webkit已解决,moz没有效果。 阅读 卡饭论坛的该帖 之后,滚动条消失了,遂想请教前端大牛这一块的问题。 那么问题来了:怎么修改一个div的滚动条,使其兼容firefox,且请大牛指出每个属性的作用。 望大牛赐教。
来源:开源中国
发布时间:2017-08-19 17:49:00
HDC调试需求开发(15万预算),能者速来!>>> jQuery trigger只对IE有效但对ff和chrome无效 咋回事哈 我是在一个页面中使用ajax将另一个页面加载进来,然后在trigger加载进来的页面中的某个链接(按钮). IE有效,但是ff和chrome无效..
来源:开源中国
发布时间:2011-06-27 23:27:00
HDC调试需求开发(15万预算),能者速来!>>> 遇到的问题是登录了账号不能同步收藏
来源:开源中国
发布时间:2017-05-27 14:11:00
HDC调试需求开发(15万预算),能者速来!>>> 使用Chrome无法登陆Github,无论是否开启代理; 使用firefox可以登录。
来源:开源中国
发布时间:2014-04-23 16:43:00
HDC调试需求开发(15万预算),能者速来!>>> Jcrop裁剪图片,在火狐下载入图片,第一次是小黑点: 第二次载入同一张图片,就可以正常载入了: 在谷歌和IE下没有这个问题。 我观察了页面元素,错误的时候,页面的div和显示图片的img的宽是0,高是17px。 下面是我的JS代码: /** * * Created by wangxy on 2017/3/4. */ function readURLMy (input) { // 判断你图片的大小和类型 var file = input. value ; console . log (file) ; if (! /.(jpg|jpeg|png|JPG|JPEG|PNG)$/ . test (file)) { $ ( "#error_photo_type" ). html ( ' 您选择的图片不符合规则,请重新选择 ' ) ; $ ( "#error_photo_type" ). show () ; //$('form').hide(); $ ( '#uploadPhoto' ). hide () ; $ ( '#canclePhoto' ). hide () ; $ ( '.cur_img_right' ). hide () ; $ ( '.js_cur_img' ). show () ; jcrop_api . destroy () ; $mainImg. removeAttr ( "style" ) ; // 移除掉所有的样式,让 jcrop 重新生成 $mainImg. removeAttr ( 'src' ) ; return false ; } else { // if (((input.files[0].size).toFixed(2)) >= (3 * 1024 * 1024)) { // $("#error_photo_type").html(' 您选择的图片不符合规则,请重新选择 '); // $("#error_photo_type").show(); // $('form').hide(); // $('.cur_img_right').hide(); // $('.js_cur_img').show(); // return false; // } } var ua = navigator . userAgent ; if (ua. indexOf ( "MSIE 8.0" ) > 0 || ua. indexOf ( "MSIE 9.0" ) > 0 ) { $ ( "#error_photo_type" ). hide () ; $ ( 'form' ). show () ; $ ( '.cur_img_right' ). show () ; $ ( '.js_cur_img' ). hide () ; $ ( '#uploadPhoto' ). show () ; $ ( '#canclePhoto' ). show () ; var fileInputElm = jQuery ( '#fcupload' ) ; var reallocalpath = jQuery ( '#fcupload' )[ 0 ]. value ; console . log (reallocalpath) ; fileInputElm. get ( 0 ). select () ; var pic = $mainImg. get ( 0 ) ; pic. style . filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src= \" " + reallocalpath + " \" )" ; pic. src = reallocalpath ; $mainImg. css ( "width" , "400px" ) ; $mainImg. css ( "height" , "400px" ) ; $mainImg. show () ; $pimg. get ( 0 ). style . filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src= \" " + reallocalpath + " \" )" ; $pimg. get ( 0 ). src = reallocalpath ; $pimg2. get ( 0 ). style . filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src= \" " + reallocalpath + " \" )" ; $pimg2. get ( 0 ). src = reallocalpath ; $pimg3. get ( 0 ). style . filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src= \" " + reallocalpath + " \" )" ; $pimg3. get ( 0 ). src = reallocalpath ; $preview. css ( "top" , "-3" ) ; $preview. css ( "left" , "413" ) ; $preview2. css ( "top" , "-65" ) ; // $preview2.css("left","574px"); $preview3. css ( "top" , "-191px" ) ; // $preview3.css("left","584px"); // 显示三个预览图 //$preview.show(); //$preview2.show(); //$preview3.show(); if ( jcrop_api != undefined ) { jcrop_api . destroy () ; } jcrop_api = $ . Jcrop ( '#target' , { setSelect : [ 20 , 20 , 200 , 200 ] , onChange : updatePreview , onSelect : updatePreview , boxWidth : 322 , aspectRatio : xsize / ysize }) ; var bounds = jcrop_api . getBounds () ; boundx = bounds[ 0 ] ; boundy = bounds[ 1 ] ; $preview. appendTo ( jcrop_api . ui .holder) ; $preview2. appendTo ( jcrop_api . ui .holder) ; $preview3. appendTo ( jcrop_api . ui .holder) ; jcrop_api . release () ; jcrop_api . disable () ; } else { if (((input. files [ 0 ]. size ). toFixed ( 2 )) >= ( 3 * 1024 * 1024 )) { $ ( "#error_photo_type" ). html ( ' 您选择的图片不符合规则,请重新选择 ' ) ; $ ( "#error_photo_type" ). show () ; //$('form').hide(); $ ( '#uploadPhoto' ). hide () ; $ ( '#canclePhoto' ). hide () ; $ ( '.cur_img_right' ). hide () ; $ ( '.js_cur_img' ). show () ; jcrop_api . destroy () ; $mainImg. removeAttr ( "style" ) ; // 移除掉所有的样式,让 jcrop 重新生成 $mainImg. removeAttr ( 'src' ) ; return false ; } $ ( "#error_photo_type" ). hide () ; $ ( 'form' ). show () ; $ ( '.cur_img_right' ). show () ; $ ( '.js_cur_img' ). hide () ; $ ( '#uploadPhoto' ). show () ; $ ( '#canclePhoto' ). show () ; if (input. files && input. files [ 0 ]) { var reader = new FileReader () ; reader. readAsDataURL (input. files [ 0 ]) ; reader. onload = function (e) { $mainImg. removeAttr ( "style" ) ; // 移除掉所有的样式,让 jcrop 重新生成 $mainImg. removeAttr ( 'src' ) ; $mainImg. attr ( 'src' , e.target. result ) ; $pimg. removeAttr ( 'src' ) ; $pimg. attr ( 'src' , e.target. result ) ; $pimg2. removeAttr ( 'src' ) ; $pimg2. attr ( 'src' , e.target. result ) ; $pimg3. removeAttr ( 'src' ) ; $pimg3. attr ( 'src' , e.target. result ) ; // 显示三个预览图 $preview. show () ; $preview2. show () ; $preview3. show () ; jcrop_api = $ . Jcrop ( '#target' , { setSelect : [ 20 , 20 , 200 , 200 ] , onChange : updatePreview , onSelect : updatePreview , boxWidth : 322 , aspectRatio : xsize / ysize }) ; var bounds = jcrop_api . getBounds () ; boundx = bounds[ 0 ] ; boundy = bounds[ 1 ] ; $preview. appendTo ( jcrop_api . ui .holder) ; $preview2. appendTo ( jcrop_api . ui .holder) ; $preview3. appendTo ( jcrop_api . ui .holder) ; } ; if ( jcrop_api != undefined ) { jcrop_api . destroy () ; } } } function updatePreview (c) { $ ( "#x" ). val (c. x ) ; $ ( "#y" ). val (c. y ) ; $ ( "#w" ). val (c. w ) ; $ ( "#h" ). val (c. h ) ; if ( parseInt (c. w ) > 0 ) { var rx = xsize / c. w ; var ry = ysize / c. h ; $pimg. css ({ width : Math. round (rx * boundx ) + 'px' , height : Math. round (ry * boundy ) + 'px' , marginLeft : '-' + Math. round (rx * c. x ) + 'px' , marginTop : '-' + Math. round (ry * c. y ) + 'px' }) ; var rx = xsize2 / c. w ; var ry = ysize2 / c. h ; $pimg2. css ({ width : Math. round (rx * boundx ) + 'px' , height : Math. round (ry * boundy ) + 'px' , marginLeft : '-' + Math. round (rx * c. x ) + 'px' , marginTop : '-' + Math. round (ry * c. y ) + 'px' }) ; var rx = xsize3 / c. w ; var ry = ysize3 / c. h ; $pimg3. css ({ width : Math. round (rx * boundx ) + 'px' , height : Math. round (ry * boundy ) + 'px' , marginLeft : '-' + Math. round (rx * c. x ) + 'px' , marginTop : '-' + Math. round (ry * c. y ) + 'px' }) ; } } ; } 下面是HTML代码,用的VM模板 #set ( $ layout = "/templates/layout/layout.vm" ) #set ( $ CSS = [ "/css/base.css" , "/css/personalCenter.css" , "/css/changeHeadImg.css" , "/css/changePassword.css" , "/css/modifyMessage.css" , "/css/uploadUserPhoto2.css" , "/css/jquery.Jcrop.css" ]) #set ( $ JS = [ "/js/jquery.Jcrop.js" , "/js/out2.js" , "/js/uploadUserPhoto2.js" , "/js/alertDiv.js" ]) #set ( $ page_title = " 个人中心 - 修改头像 " ) ## ## ## ##
#parse ( "/templates/inc/menu.vm" )
奇怪的是谷歌IE都没有问题,只是火狐这样,很蛋疼!!!!!! 感谢大家!!!
来源:开源中国
发布时间:2017-03-20 17:54:00