欢迎来到Heck's Blog,专业承接拿站、企业建站、仿站、网上商城架构、门户网站搭建、空间域名注册、软件定制等项目。关注网络安全,因为专注,所以专业,懂得放弃,才能收获。有事请发邮件至i@heckjj.com,请记住本站网址:http://www.heckjj.com,多谢。
11月1
Spring MVC 3.2.11 + Spring 3.2.11 + Mybatis3.23
1、Spring MVC 和 Spring 整合的时候,SpringMVC的spring-servlet.xml文件中 配置扫描包,不要包含 service的注解,Spring的applicationContext.xml文件中 配置扫描包时,不要包含controller的注解,如下所示:
SpringMVC的spring-servlet.xmll配置:
<context:component-scan base-package="tk.hecks">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>
Spring MVC启动时的配置文件,包含组件扫描、url映射以及设置freemarker参数,让spring不扫描带有@Service注解的类。
为什么要这样设置?因为spring-servlet.xmll与applicationContext.xml不是同时加载,如果不进行这样的设置,那么,spring就会将所有带@Service注解的类都扫描到容器中,等到加载applicationContext.xml的时候,会因为容器已经存在Service类,使得cglib将不对Service进行代理,直接导致的结果就是在applicationContext 中的事务配置不起作用,发生异常时,无法对数据进行回滚。以上就是原因所在。
同样的在Spring的xml配置如下:
<context:component-scan base-package="tk.hecks">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
扫描包路径,不扫描带有@Controller注解的类。因为这些类已经随容器启动时,在spring-servlet.xml中扫描过一遍了。
1、Spring MVC 和 Spring 整合的时候,SpringMVC的spring-servlet.xml文件中 配置扫描包,不要包含 service的注解,Spring的applicationContext.xml文件中 配置扫描包时,不要包含controller的注解,如下所示:
SpringMVC的spring-servlet.xmll配置:
<context:component-scan base-package="tk.hecks">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>
Spring MVC启动时的配置文件,包含组件扫描、url映射以及设置freemarker参数,让spring不扫描带有@Service注解的类。
为什么要这样设置?因为spring-servlet.xmll与applicationContext.xml不是同时加载,如果不进行这样的设置,那么,spring就会将所有带@Service注解的类都扫描到容器中,等到加载applicationContext.xml的时候,会因为容器已经存在Service类,使得cglib将不对Service进行代理,直接导致的结果就是在applicationContext 中的事务配置不起作用,发生异常时,无法对数据进行回滚。以上就是原因所在。
同样的在Spring的xml配置如下:
<context:component-scan base-package="tk.hecks">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
扫描包路径,不扫描带有@Controller注解的类。因为这些类已经随容器启动时,在spring-servlet.xml中扫描过一遍了。
3月30
最近又用到XML,发现也有必要聊聊XML的几种方式。
1、如果只是简单生成或者解析,自己写一个帮助类就行,下面这个是我前段时间用递归写的,优势方便可以扩展
import java.util.ArrayList;
import java.util.List;
/**
*
*
*
* TODO manage node and value.and format the node to xml file
*
*/
public class XMLSimpleNode implements SimpleNode {
private String nodeName;
private String value;
List<SimpleNode> childs;
private String header;
public XMLSimpleNode(String nodeName) {
this.nodeName = nodeName;
childs = new ArrayList<SimpleNode>(2);
}
public String getNodeName() {
return nodeName;
}
1、如果只是简单生成或者解析,自己写一个帮助类就行,下面这个是我前段时间用递归写的,优势方便可以扩展
import java.util.ArrayList;
import java.util.List;
/**
*
*
*
* TODO manage node and value.and format the node to xml file
*
*/
public class XMLSimpleNode implements SimpleNode {
private String nodeName;
private String value;
List<SimpleNode> childs;
private String header;
public XMLSimpleNode(String nodeName) {
this.nodeName = nodeName;
childs = new ArrayList<SimpleNode>(2);
}
public String getNodeName() {
return nodeName;
}
11月6
前几天在书上看的,实验了一下,结果还不错,收藏下来:
package com;
import java.util.*;
import net.sf.json.JSONObject;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class ExtHelper {
public static String getXmlFormList(long recordTotal,List beanList){
Total total = new Total(); //保存记录总数
total.setResults(recordTotal); //设置记录总数到 total对象
List results = new ArrayList(); //创建临时的 List 对象 results
results.add(total); // 添加对象
results.addAll(beanList); // 追加对象
XStream sm = new XStream(new DomDriver()); //创建Xstream对象
for(int i=0;i<results.size();i++){
Class c = results.get(i).getClass();
String b = c.getName();
String[] temp = b.split("\\.");
sm.alias(temp[temp.length-1],c);
}
String xml = "<?xml version='1.0' encoding='UTF-8'?>"+sm.toXML(results);
return xml;
}
package com;
import java.util.*;
import net.sf.json.JSONObject;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class ExtHelper {
public static String getXmlFormList(long recordTotal,List beanList){
Total total = new Total(); //保存记录总数
total.setResults(recordTotal); //设置记录总数到 total对象
List results = new ArrayList(); //创建临时的 List 对象 results
results.add(total); // 添加对象
results.addAll(beanList); // 追加对象
XStream sm = new XStream(new DomDriver()); //创建Xstream对象
for(int i=0;i<results.size();i++){
Class c = results.get(i).getClass();
String b = c.getName();
String[] temp = b.split("\\.");
sm.alias(temp[temp.length-1],c);
}
String xml = "<?xml version='1.0' encoding='UTF-8'?>"+sm.toXML(results);
return xml;
}
10月24
我们在java中用SAX方式解析XML,XML文件如下:
<?xml version="1.0" encoding="gb2312"?>
<person>
<name>姜军</name>
<college>信息学院</college>
<telephone>6258113</telephone>
<notes>男,1985年生,将军 ,95年调入广州军区</notes>
</person>
<?xml version="1.0" encoding="gb2312"?>
<person>
<name>姜军</name>
<college>信息学院</college>
<telephone>6258113</telephone>
<notes>男,1985年生,将军 ,95年调入广州军区</notes>
</person>
9月21
分组 XML 技术
很多年前,当 XML 成为最热门的技术之一时,很难想象得到 XML 会在十年内变得如此重要,而且您可以找到大量与 XML 相关的有趣技术。实际上,可以通过多种途径了解 XML 技术。
传统的 XML 分组
可以将与 XML 相关的技术划分为一些基本的分组或主要区域:
1. 文档创作:此分组面向将主要的时间用于创作 XML 的人。无论他们是创建原始 XML 数据,还是用 XML 格式表示现有数据,这里主要关注的都是纯 XML,很少关注可能使用这些文档的编程任务。这就是 XML 的核心思想所在,这个分组还包括特定的 XML 词汇表(比如 MathML)或一些科学 XML 词汇表。
2. 处理 XML:这些技术(比如 XSL)允许对 XML 进行转换、修改或由一种格式迁移到另一种格式。这些技术主要关注的仍然是 XML 文档及其内部数据,但有时候也使用编程语言来完成这些转换。
3. 读取/编写 XML(以及持久化数据):这些技术与编程联系更加紧密,包括从低级的 API(比如 SAX 和 DOM)到数据处理技术(比如 JAXB 和 Castor)。这些技术将 XML 看作一种数据存储机制,而且在许多情形下看作一种达到目的的手段。
到目前为止,这些分组是主要的技术类别,每个分组中都在不断出现最新的技术和规范。
将 XML 转变为一类数据居民
XML 的一个主要问题就是缺乏良好的搜索支持,尽管这个问题仅限于上面的三个分组。如果想要对 XML 格式的数据进行搜索,则这会是一个问题。实际上,通常的解决方案是将上面的一些分组结合起来。文档创作者可能使用命令行工具(比如 grep,这是一种笨拙的搜索方式。编程人员可能读入 XML(另一个分组),然后使用他们的编程语言(比如 Java 或 C#)对非 XML 格式的数据进行搜索。这种方法是可行的,但暴露了 XML 的一些局限性。
幸运的是,XPath(和 XQuery,本文稍后将会谈到)的引入和流行带来了一个新分组:
4. 搜索 XML:XPath 和 XQuery 就属于这个分组。这些规范/技术允许以 XML 的方式对 XML 文档进行搜索。换句话说,可以使用 XML 语义进行搜索,并且不但能够搜索 XML 文档中的数据,还能够搜索这些文档的结构。
借助 XPath 和 XQuery,不再需要将数据由 XML 转换为一种编程语言,然后使用这种语言的工具来搜索数据。使用这种方法不仅会受到编程语言的约束,通常还会丢失大多数 XML 语义和结构(比如元素之间的父子关系等等)。使用 XPath 和 XQuery,无需编程语言 就可以对 XML 进行搜索。
很多年前,当 XML 成为最热门的技术之一时,很难想象得到 XML 会在十年内变得如此重要,而且您可以找到大量与 XML 相关的有趣技术。实际上,可以通过多种途径了解 XML 技术。
传统的 XML 分组
可以将与 XML 相关的技术划分为一些基本的分组或主要区域:
1. 文档创作:此分组面向将主要的时间用于创作 XML 的人。无论他们是创建原始 XML 数据,还是用 XML 格式表示现有数据,这里主要关注的都是纯 XML,很少关注可能使用这些文档的编程任务。这就是 XML 的核心思想所在,这个分组还包括特定的 XML 词汇表(比如 MathML)或一些科学 XML 词汇表。
2. 处理 XML:这些技术(比如 XSL)允许对 XML 进行转换、修改或由一种格式迁移到另一种格式。这些技术主要关注的仍然是 XML 文档及其内部数据,但有时候也使用编程语言来完成这些转换。
3. 读取/编写 XML(以及持久化数据):这些技术与编程联系更加紧密,包括从低级的 API(比如 SAX 和 DOM)到数据处理技术(比如 JAXB 和 Castor)。这些技术将 XML 看作一种数据存储机制,而且在许多情形下看作一种达到目的的手段。
到目前为止,这些分组是主要的技术类别,每个分组中都在不断出现最新的技术和规范。
将 XML 转变为一类数据居民
XML 的一个主要问题就是缺乏良好的搜索支持,尽管这个问题仅限于上面的三个分组。如果想要对 XML 格式的数据进行搜索,则这会是一个问题。实际上,通常的解决方案是将上面的一些分组结合起来。文档创作者可能使用命令行工具(比如 grep,这是一种笨拙的搜索方式。编程人员可能读入 XML(另一个分组),然后使用他们的编程语言(比如 Java 或 C#)对非 XML 格式的数据进行搜索。这种方法是可行的,但暴露了 XML 的一些局限性。
幸运的是,XPath(和 XQuery,本文稍后将会谈到)的引入和流行带来了一个新分组:
4. 搜索 XML:XPath 和 XQuery 就属于这个分组。这些规范/技术允许以 XML 的方式对 XML 文档进行搜索。换句话说,可以使用 XML 语义进行搜索,并且不但能够搜索 XML 文档中的数据,还能够搜索这些文档的结构。
借助 XPath 和 XQuery,不再需要将数据由 XML 转换为一种编程语言,然后使用这种语言的工具来搜索数据。使用这种方法不仅会受到编程语言的约束,通常还会丢失大多数 XML 语义和结构(比如元素之间的父子关系等等)。使用 XPath 和 XQuery,无需编程语言 就可以对 XML 进行搜索。





