自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1)
  • 资源 (11)
  • 收藏
  • 关注

原创 win7下搭建Nginx简单图片服务器

Nginx搭建图片服务器 Nginx下载地址:http://nginx.org/en/download.html  本例下载的是window版本nginx-1.11.8 以下是我本机操作说明: 一、安装 1.下载完后,解压到E盘, E:\nginx-1.11.8  2.使用命令行工具进入nginx目录,启动nginx 查看nginx

2017-01-20 17:37:27 2773

spring2.5.3、2.5.4源码

http://www.javaeye.com/wiki/Spring-source

2010-04-12

spring2.5.6源码

rar包内含有spring2.5.6源码,解压即可使用 源代码分析,是一件既痛苦又快乐的事情,看别人写的代码是通过的,但当你能够看明白的时候,相信快乐也会随之而来,为了减少痛苦,更快的带来快乐,在这里希望通过这篇文章对觉得困难的朋友有一个帮助。 本文以spring框架的XmlBeanFactory为入手点进行分析,希望能够以尽量简洁明了的方式给予有需要的朋友一定的帮助。 首先来打开该类的代码,我们将看到如下代码: Java代码 public class XmlBeanFactory extends DefaultListableBeanFactory { private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this); public XmlBeanFactory(Resource resource) throws BeansException { this(resource, null); } public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws BeansException { super(parentBeanFactory); this.reader.loadBeanDefinitions(resource); } } public class XmlBeanFactory extends DefaultListableBeanFactory { private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this); public XmlBeanFactory(Resource resource) throws BeansException { this(resource, null); } public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws BeansException { super(parentBeanFactory); this.reader.loadBeanDefinitions(resource); } } 这个类的代码很简单,一个成员对象加两个构造函数,从这里我们可以看出,最重要的地方在于最后一个构造函数: Java代码 super(parentBeanFactory); this.reader.loadBeanDefinitions(resource); super(parentBeanFactory); this.reader.loadBeanDefinitions(resource); 第一句就是将父亲工厂交给父类的构造函数,实际上最后也就是把父工厂保存到类的parentBeanFactory成员对象中,这个对象是在AbstractBeanFactory抽象类中定义的,而这个父工厂也会一直传递到该抽象类进行保存。第二句就是整个类中最重要的地方了,顾名思义,它的目的是通过XmlBeanDefinitionReader这个XML的Reader从资源resource中(也就是你的配置文件)读取bean的定义。接下来我们打开XmlBeanDefinitionReader的loadBeanDefinitions方法,我们可看到在这个方法里代码就一行,调用了一个同名不同参的方法,而参数是EncodedResource的一个实例,这个类实际上是Resource的一个包装类,用来保存资源的Encode的,那接下来我们再看被调用的loadBeanDefinitions方法,这个方法里最主要的部分就是: Java代码 InputSource inputSource = new InputSource(inputStream); if (encodedResource.getEncoding() != null) { inputSource.setEncoding(encodedResource.getEncoding()); } return doLoadBeanDefinitions(inputSource, encodedResource.getResource()); InputSource inputSource = new InputSource(inputStream); if (encodedResource.getEncoding() != null) { inputSource.setEncoding(encodedResource.getEncoding()); } return doLoadBeanDefinitions(inputSource, encodedResource.getResource()); 这里的目的是将资源包装成一个InputSource,连同Resource作为参数传递到doLoadBeanDefinitions方法 Java代码 DocumentBuilderFactory factory = createDocumentBuilderFactory(); if (logger.isDebugEnabled()) { logger.debug("Using JAXP implementation [" + factory + "]"); } DocumentBuilder builder = createDocumentBuilder(factory); Document doc = builder.parse(inputSource); return registerBeanDefinitions(doc, resource); DocumentBuilderFactory factory = createDocumentBuilderFactory(); if (logger.isDebugEnabled()) { logger.debug("Using JAXP implementation [" + factory + "]"); } DocumentBuilder builder = createDocumentBuilder(factory); Document doc = builder.parse(inputSource); return registerBeanDefinitions(doc, resource); 这个方法的目的一目了然,就是为了将资源解释成为Document对象,然后调用registerBeanDefinitions方法,这里不做详细解释,不了解的话请去看看关于JAXP的介绍。接下来我们打开registerBeanDefinitions方法: Java代码 public int registerBeanDefinitions(Document doc, Resource resource) throws BeansException { XmlBeanDefinitionParser parser = (XmlBeanDefinitionParser) BeanUtils.instantiateClass(this.parserClass); return parser.registerBeanDefinitions(this, doc, resource); } public int registerBeanDefinitions(Document doc, Resource resource) throws BeansException { XmlBeanDefinitionParser parser = (XmlBeanDefinitionParser) BeanUtils.instantiateClass(this.parserClass); return parser.registerBeanDefinitions(this, doc, resource); } 这里创建了一个XmlBeanDefinitionParser接口的实现,这个接口的具体类是DefaultXmlBeanDefinitionParser,这个接口很简单,只有registerBeanDefinitions一个方法,这个方法的作用也很明了,就是用来注册Bean的定义的,所以说类和方法的名字一定要起得有意义,这样可以让人一看就大概了解其作用,减少了很多阅读代码的痛苦。废话不多说,我们打开DefaultXmlBeanDefinitionParser的registerBeanDefinitions方法,这个类就是解释XML配置文件的核心类了,打开registerBeanDefinitions方法后我们看到如下代码: Java代码 public int registerBeanDefinitions(BeanDefinitionReader reader, Document doc, Resource resource) throws BeanDefinitionStoreException { this.beanDefinitionReader = reader; this.resource = resource; logger.debug("Loading bean definitions"); Element root = doc.getDocumentElement(); //初始化根元素 initDefaults(root); if (logger.isDebugEnabled()) { logger.debug("Default lazy init '" + getDefaultLazyInit() + "'"); logger.debug("Default autowire '" + getDefaultAutowire() + "'"); logger.debug("Default dependency check '" + getDefaultDependencyCheck() + "'"); } preProcessXml(root);//一个空方法用于扩展 int beanDefinitionCount = parseBeanDefinitions(root);//解释配置的主要方法 if (logger.isDebugEnabled()) { logger.debug("Found " + beanDefinitionCount + " elements in " + resource); } postProcessXml(root); //一个空方法用于扩展 return beanDefinitionCount; } public int registerBeanDefinitions(BeanDefinitionReader reader, Document doc, Resource resource) throws BeanDefinitionStoreException { this.beanDefinitionReader = reader; this.resource = resource; logger.debug("Loading bean definitions"); Element root = doc.getDocumentElement(); //初始化根元素 initDefaults(root); if (logger.isDebugEnabled()) { logger.debug("Default lazy init '" + getDefaultLazyInit() + "'"); logger.debug("Default autowire '" + getDefaultAutowire() + "'"); logger.debug("Default dependency check '" + getDefaultDependencyCheck() + "'"); } preProcessXml(root);//一个空方法用于扩展 int beanDefinitionCount = parseBeanDefinitions(root);//解释配置的主要方法 if (logger.isDebugEnabled()) { logger.debug("Found " + beanDefinitionCount + " elements in " + resource); } postProcessXml(root); //一个空方法用于扩展 return beanDefinitionCount; } 在这个方法当中,主要用于解释定义的有两个方法,一个是initDefaults,一个是parseBeanDefinitions,第一个方法是用来解释根元素的属性的,例如lazy-init, autowire等,而parseBeanDefinitions就是用来解释具体的bean定义了,方法代码如下: Java代码 protected int parseBeanDefinitions(Element root) throws BeanDefinitionStoreException { NodeList nl = root.getChildNodes(); int beanDefinitionCount = 0; for (int i = 0; i < nl.getLength(); i++) { Node node = nl.item(i); if (node instanceof Element) { Element ele = (Element) node; if (IMPORT_ELEMENT.equals(node.getNodeName())) { importBeanDefinitionResource(ele); } else if (ALIAS_ELEMENT.equals(node.getNodeName())) { String name = ele.getAttribute(NAME_ATTRIBUTE); String alias = ele.getAttribute(ALIAS_ATTRIBUTE); this.beanDefinitionReader.getBeanFactory().registerAlias(name, alias); } else if (BEAN_ELEMENT.equals(node.getNodeName())) { beanDefinitionCount++; BeanDefinitionHolder bdHolder = parseBeanDefinitionElement(ele, false); BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, this.beanDefinitionReader.getBeanFactory()); } } } return beanDefinitionCount; } protected int parseBeanDefinitions(Element root) throws BeanDefinitionStoreException { NodeList nl = root.getChildNodes(); int beanDefinitionCount = 0; for (int i = 0; i < nl.getLength(); i++) { Node node = nl.item(i); if (node instanceof Element) { Element ele = (Element) node; if (IMPORT_ELEMENT.equals(node.getNodeName())) { importBeanDefinitionResource(ele); } else if (ALIAS_ELEMENT.equals(node.getNodeName())) { String name = ele.getAttribute(NAME_ATTRIBUTE); String alias = ele.getAttribute(ALIAS_ATTRIBUTE); this.beanDefinitionReader.getBeanFactory().registerAlias(name, alias); } else if (BEAN_ELEMENT.equals(node.getNodeName())) { beanDefinitionCount++; BeanDefinitionHolder bdHolder = parseBeanDefinitionElement(ele, false); BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, this.beanDefinitionReader.getBeanFactory()); } } } return beanDefinitionCount; } 其他标签具体如何被解释这里就不多说,相信大家也能看得懂,这里主要讲一下解释bean的的处理,我们注意以下代码: Java代码 else if (BEAN_ELEMENT.equals(node.getNodeName())) { beanDefinitionCount++; BeanDefinitionHolder bdHolder = parseBeanDefinitionElement(ele, false); BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, this.beanDefinitionReader.getBeanFactory()); } else if (BEAN_ELEMENT.equals(node.getNodeName())) { beanDefinitionCount++; BeanDefinitionHolder bdHolder = parseBeanDefinitionElement(ele, false); BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, this.beanDefinitionReader.getBeanFactory()); } 这里是当碰到一个bean标签的时候所进行的处理,也既是对bean的定义进行解释,可以看到parseBeanDefinitionElement方法的第一个参数就是bean则个元素,第二个参数表示该bean是否为内置的bean,从这里进行解释的bean都不可能是内置的,所以这里直接以false为参数,打开parseBeanDefinitionElement方法,就可以看到这个方法里就是对bean的内部的解释,也很简单,也不多讲了,呵呵(下班时间已经到了,所以就写这么多了,基本的流程也就这样,没什么特别难的地方。),对了,最后还有一点就是解释完后,bean的定义将会被保存到beanFactory中,这个beanFactory的实现就是XmlBeanFactory了,该beanFactory是在new的时候被传递到reader中的,就是该类中以下这行代码: Java代码 private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this); private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this); 好了,就这么多了,本文只作为参考,只讲解了如何加载bean定义这块,只作为一个参考,希望对其他朋友能有所帮助吧,因为时间匆忙,有错漏的地方请指正。

2010-04-12

43534543534

45435345 rdrs fs df sd fsf

2010-01-22

hibernatefsfsfsfsfsfsdf

fsdfsdfsf sdf sf sd f sdf

2010-01-22

dwr43534534543543

fsfsfsfsdfsf sfsdfsdfsdf sdfsdfsfsf

2010-01-22

DWR中文教程(文档)

本文档从一个简单的例子开始讲述DWR在项目中的应用,以及各个配置文件中的高级用法

2010-01-17

birt帮助文档中文版

目录 第一章、学习基础知识 教程 1:构建简单的列表报告 任务 1:创建新项目 任务 2:创建新报告 任务 3:构建数据源 任务 4:构建数据集 任务 5:对报告进行布局 任务 6:对数据进行排序 任务 7:格式化报告 编辑列标题 格式化列标题 在同一行上显示名字和姓氏 增大行之间的间隔 任务 8:创建报告标题 接下来的步骤 第二章、连接至数据源 如何创建 BIRT 数据源 如何修改现有 BIRT 数据源 如何删除 BIRT 报告设计器数据源 如何对数据库或其他 JDBC 数据源指定连接信息 如何添加 JDBC 驱动程序 如何删除 JAR 文件中的所有 JDBC 驱动程序 第三章、检索数据 如何创建数据集 如何更改数据集的数据源 如何对 JDBC 数据集编写 SQL 查询 如何对 JDBC 数据集指定存储过程 如何查看和更改输出列 如何更改“预览结果”中出现的行数 如何将计算字段添加至数据集 如何连接数据集 如何定义动态查询 如何设置高速缓存首选项 第四章、绑定数据 如何创建列绑定 第五章、对报告进行布局 如何添加行或列 如何删除行或列 如何将数据集绑定至表 如何插入链接的图像 如何插入嵌入式图像 如何插入存储在数据源中的图像 第六章、显示文本 如何使用动态文本元素 第七章、格式化报告内容 如何创建样式 如何导入样式 如何应用样式 如何修改样式 如何删除样式 如何创建格式化规则 如何修改格式化规则 如何删除格式化规则 如何通过拖动边界来调整列或行的大小 如何指定行高 如何指定列宽 如何合并表或网格单元格 如何有条件地隐藏元素 第八章、对数据进行排序和分组 教程 2:对报告数据进行分组 任务 1:打开报告设计 任务 2:将报告另存为新文件 任务 3:将贷记限额字段添加至数据集 任务 4:将贷记限额数据添加至报告 任务 5:按贷记限额对客户数据进行分组 任务 6:在组头中显示贷记限额范围 任务 7:显示聚集信息 任务 8:格式化报告 除去详细信息行中的贷记限额数据 在每组的第一行中显示组标题 用一行分隔每组 任务 9:在 BIRT 报告查看器中预览报告 任务 10:在目录中显示贷记限额范围 第九章、聚集数据 如何在表达式构建器中构造聚集表达式 第十章、编写表达式 第十一章、过滤数据 如何过滤行以便从 JDBC 数据源检索数据 如何在数据集级别进行过滤 如何在报告元素级别进行过滤 如何在组级别进行过滤 第十二章、使用户能够对数据进行过滤 使用户能够在查询运行时进行过滤 如何创建简单报告参数 如何在 SQL 查询中插入参数标记 如何创建数据集参数 如何在运行报告时动态更新过滤条件 第十三章、构建包含子报告的报告 教程 3:构建带有并排子报告的报告 任务 1:创建新报告 任务 2:构建数据源 任务 3:为客户报告构建数据集 任务 4:为订单子报告构建数据集 任务 5:为支付子报告构建数据集 任务 6:创建客户主报告 任务 7:创建订单子报告 任务 8:将订单子报告链接至客户主报告 任务 9:创建支付子报告 任务 10:将支付子报告链接至客户主报告 任务 11:仅显示具有订单或支付的客户 任务 12:并排显示子报告 任务 13:格式化报告 突出显示客户名 编辑列标题 更改日期格式 更改数字格式 增大元素之间的垂直间距 增大订单表与支付表之间的水平间距 在表周围添加边框 增大表边框与内容之间的间距 第十四章、在报告中使用图表 教程 4:创建图表 任务 1:设置报告设计文件 任务 2:在报告中添加图表 任务 3:为图表提供数据 任务 4:查看图表 任务 5:更新图表标题 任务 6:优化图表外观 第十五章、在图表中显示数据 如何选择图表数据集 如何对类别系列数据进行分组 如何设置轴的数据类型和格式 如何更改图表预览首选项 第十六章、对图表进行布局和格式化 如何设置图表背景色 如何定义定制颜色 如何为具有深度的图表或三维图表设置墙体色或地板色 如何设置图表区嵌入 如何为图形设置背景色 如何为图形区加上轮廓 如何为轴中的图形区加上阴影 如何调整图表图形的放置和填充 如何格式化轴名 如何在仪表图或饼图中添加或格式化值系列标题 如何修改轴线 如何修改轴刻度线 如何添加或修改网格线 第十七章、设计多页报告 如何在页眉和页脚中显示文本 如何指定页眉或页脚大小 如何避免首页出现页眉内容 第十八章、添加交互式查看功能 如何创建书签 如何链接两个报告部分 如何链接两个报告 如何创建目录条目 如何导出报告数据 第十九章、构建共享的报告开发框架 如何将元素添加到库中 如何设置报告设计的主题 如何从报告设计中删除主题 如何创建模板报告项 如何设置模板文件夹 如何发布模板 如何使用模板报告项 第二十章、将文本本地化 如何对报告指定资源文件 如何对标签或文本元素指定现有资源键 如何以不同语言环境预览报告 第二十一章、在报告设计中进行脚本编制 BIRT 脚本编制概述 在 Java 与 JavaScript 之间进行选择 同时使用 Java 和 JavaScript 编写事件处理程序 第二十二章、使用 JavaScript 编写事件处理程序 如何使用 BIRT 报告设计器来输入 JavaScript 事件处理程序 确定方法执行顺序 提供 ReportDesign.initialize 代码 如何提供 ReportDesign.initialize 方法的代码 为想要跟踪的方法提供代码 提供 ReportDesign.afterFactory 代码 教程 5:使用 JavaScript 编写事件处理程序 任务 1:打开报告设计 任务 2:在 Table.onCreate( ) 方法中创建并初始化计数器 任务 3:在 Row.onCreate( ) 方法中有条件地使计数器递增 任务 4:使用 ReportDesign.afterFactory( ) 方法来显示结果 第二十三章、使用 Java 编写事件处理程序 如何创建事件处理程序类并将其添加到 Java 项目中 如何使 Java 类与报告元素相关联 第二十四章、脚本编制参考 类 DateTimeSpan DateTimeSpan.addDate DateTimeSpan.addTime DateTimeSpan.days DateTimeSpan.hours DateTimeSpan.minutes DateTimeSpan.months DateTimeSpan.seconds DateTimeSpan.subDate DateTimeSpan.subTime DateTimeSpan.years Finance 类 Finance.ddb Finance.fv Finance.ipmt Finance.irr Finance.mirr Finance.nper Finance.npv Finance.percent Finance.pmt Finance.ppmt Finance.pv Finance.rate Finance.sln Finance.syd Total 类 关于分组和过滤 关于过滤器参数 关于组参数 Total.ave Total.count Total.countDistinct Total.first Total.isBottomN Total.isBottomNPercent Total.isTopN Total.isTopNPercent Total.last Total.max Total.median Total.min Total.mode Total.movingAve Total.percentile Total.percentRank Total.percentSum Total.quartile Total.rank Total.runningCount Total.stdDev Total.sum Total.variance Total.weightedAve

2010-01-13

eclipse报表插件BIRT中文教程及示例

这个指南将引导你设计一个简单的报表,令你对BIRT报表系统有个感性的认识 附带,报表例子

2009-12-31

jquery 1.2中文帮助文档

$pageInfo.currentPage = 0; setPageCount($("#<%=this.ddlClass.ClientID %>").val()); updateUI(); }); //上一页按钮点击 $("#btnPre").click(function() { if ($pageInfo.currentPage > 0) { $pageInfo.currentPage--; updateUI(); } }); //下一页按钮点击 $("#btnNext").click(function() { if ($pageInfo.currentPage < $pageInfo.pageCount - 1) { $pageInfo.currentPage++; updateUI(); } }); }); //设置总页数 function setPageCount(classId) { $.ajax({async:false,url:"http://localhost/WebServiceUI/StuService.asmx/GetCount", type:"POST",data:"classId="+classId,success:function(doc) { $pageInfo.recordCount = parseInt($(doc).find("int").text()); $pageInfo.pageCount = Math.floor(parseInt($pageInfo.recordCount + $pageInfo.pageSize - 1) / parseInt($pageInfo.pageSize)); }}); } //更新界面 function updateUI() { var classId = $("#<%=this.ddlClass.ClientID %>").val(); $.post("http://localhost/WebServiceUI/StuService.asmx/GetByPage", { "startIndex": $pageInfo.currentPage * $pageInfo.pageSize, "count": $pageInfo.pageSize, "order": "StuID", "classId": classId }, function(doc) { $("#tblStu tr:first-child").nextAll().remove(); $(doc).find("StuInfo").each(function() { var row = "<tr><td>" + $(this).find("ID").text() + "</td><td>" + $(this).find("Name").text() + "</td><td>" + ($(this).find("Gender").text() == "1" ? "男" : "女") + "</td><td>" + $(this).find("ClassName").text() + "</td></tr>"; $("#tblStu").append(row); }); }); setPageInfo(); } //显示界面上的分页信息 function setPageInfo() { $("#spRecordCount").text($pageInfo.recordCount); $("#spPageCount").text($pageInfo.pageCount); $("#spCurrentPage").text($pageInfo.currentPage + 1); } </script>

2009-12-28

oracle ppt

oracle培训ppt 从基础到提到

2009-12-28

ajax ppt 培训机构课件

ajax ppt 培训机构课件 Ajax的简介 核心概念---非同步 XMLHttpRequest介绍 第一个Ajax程序 发送请求参数 发送与接收XML

2009-12-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除