「java注册jaxb」Java注册表清理
本篇文章给大家谈谈java注册jaxb,以及Java注册表清理对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、JAVA中怎么把XML文件中的数据通过JAXB技术保存到List集合里面去,为什么我的老报错找不到根节点?
- 2、继承类怎么用jaxb解析获取父类的属性
- 3、java中利用jaxb转换xml的格式?
- 4、关于jaxb用jaxb如何实现java对象和xml的转换
- 5、如何在Java中 提供 RESTful Web 服务
- 6、如何在java中使用JAXB返回Map格式返回参数不报错
JAVA中怎么把XML文件中的数据通过JAXB技术保存到List集合里面去,为什么我的老报错找不到根节点?
先看看你给出的路径对不对。File路径。接着看看你xml文件符不符合jaxb规范。你通过注解的方式配置的xml,那你还得看看xmlElement下的每一个uri和你java po类的uri对应不。也就是看字段的名字对应不,问题的关键 是处在这里,uri不对应。该为一致或是@XMLElement(name="uri")
继承类怎么用jaxb解析获取父类的属性
JAXB中的继承问题
问题
JAXB是我用过的java处理XML的方法中做方便的一个,在jaxb中如何使用类的集成关系有一个小小的需要注意的地方。看下面的两端XML。
XML
示例1:
a
b/b
c/c
a
XML示例2:
a
b/b
d/d
a
这两段XML的唯一差别就在c元素与d元素。为了生成这两个XML,有几种方案。
方案一
不利用类的继承来重用代码,写两套Java代码, 如:
@XmlRootElement(name = a)
public class A
{
B b;
C c:
}
@XmlRootElement(name = a)
public class A2
{
B b;
D d:
}
public class B {}
public class D {}
这一方案不是我们想要的,虽然可以解决问题,但是不能重用两个XML中共有的结构。
方案二
利用一个父类表示两个XML之间的共同的结构,用两个子类扩展这个父类,分别添加 C 和 D
元素。
代码如下:
@XmlRootElement(name = "a")
public class A {
B
b;
}
public class B {}
public class C {}
public class D
{}
public class E extends A {
C c;
}
public class F
extends A {
D d;
}
这一方案看似很直观,但是实践中却发现 E 和 F 却都只能生成 父类的
部分,如下的XML:
a
b/b
a
即使把 @XmlRootElement(name = “a”) 移到 E 和 F类上也行不通。
方案三
用一个类代表共同的结构,用一个父类代表C和D元素,在用两个类代表具体化的C和D类,如:
@XmlRootEelemnt(name =
"a")
public class A {
B b;
@XmlElements({
@XmlElement(name =
"c", type=C.class),
@XmlElement(name = "d", type=D.class)
})
E
e;
}
public class B {}
public class E {}
public class C extends
E {}
public class D extends E {}
这样做才最终达到目的。关键点就是@XmlElements的使用。
java中利用jaxb转换xml的格式?
package com.jaxb.core;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Customer {
String name;
int age;
int id;
public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
@XmlElement
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
@XmlAttribute
public void setId(int id) {
this.id = id;
}
}
关于jaxb用jaxb如何实现java对象和xml的转换
既然你不想定义result这个类,那你service中的属性都可以不用定义了,直接使用XmlJavaTypeAdapter这样大的注解去marshal、unmarshal对象xml就行了。一般使用jaxb,如果属性为某个类库中定义的类,而需要转换为xml时,通过XmlJavaTypeAdapter来进行特殊处理。如插件开发中,元素属性为:org.eclipse.draw2d.geometry.Rectangle(矩形)时,通过XmlJavaTypeAdapter转换,如下所示: import javax.xml.bind.annotation.adapters.XmlAdapter; import org.eclipse.draw2d.geometry.Rectangle; public class LayoutXmlAdapter extends XmlAdapterString, Rectangle{@Overridepublic String marshal(Rectangle v) throws Exception{if(v == null) return ""; return v.x + "," + v.y + "," + v.width + "," + v.height;}@Overridepublic Rectangle unmarshal(String v) throws Exception{if(v != null v.trim().length() 0){String[] ps = v.split(","); if(ps.length ==4){int x = Integer.parseInt(ps[0]); int y = Integer.parseInt(ps[1]); int width = Integer.parseInt(ps[2]); int height = Integer.parseInt(ps[3]); return new Rectangle(x, y, width, height);}}return new Rectangle(0, 0, 0, 0);}}如果你非要不定义result类,直接转换为: 那你可以使用XmlJavaTypeAdapter注解。
如何在Java中 提供 RESTful Web 服务
通过REST风格体系架构,请求和响应都是基于资源表示的传输来构建的。资源是通过全局ID来标识的,这些ID一般使用的是一个统一资源标识符(URI)。客户端应用使用HTTP方法(如,GET、POST、PUT或DELETE)来操作一个或多个资源。通常,GET是用于获取或列出一个或多个资源,POST用于创建,PUT用于更新或替换,而DELETE则用于删除资源。
例如,GET http //host/context/employees/12345将获取ID为12345的员工的表示。这个响应表示可以是包含详细的员工信息的XML或ATOM,或者是具有更好UI的JSP/HTML页面。您看到哪种表示方式取决于服务器端实现和您的客户端请求的MIME类型。
RESTful Web Service是一个使用HTTP和REST原理实现的Web Service。通常,一个RESTful Web Service将定义基本资源URI、它所支持的表示/响应MIME,以及它所支持的操作。
本文将介绍如何使用Spring创建Java实现的服务器端RESTful Web Services。这个例子将使用浏览器、curl和Firefox插件RESTClient作为发出请求的客户端。
本文假定您是熟悉REST基本知识的。
Spring 3的REST支持
在Spring框架支持REST之前,人们会使用其他几种实现技术来创建Java RESTful Web Services,如Restlet、RestEasy和Jersey。Jersey是其中最值得注意的,它是JAX-RS(JSR 311)的参考实现。
Spring是一个得到广泛应用的Java EE框架,它在版本3以后就增加了RESTful Web Services开发的支持。虽然,对REST的支持并不是JAX-RS的一种实现,但是它具有比标准定义更多的特性。REST支持被无缝整合到Spring的MVC层,它可以很容易应用到使用Spring构建的应用中。
Spring REST支持的主要特性包括:
注释,如@RequestMapping 和 @PathVariable,支持资源标识和URL映射
ContentNegotiatingViewResolver支持为不同的MIME/内容类型使用不同的表示方式
使用相似的编程模型无缝地整合到原始的 MVC 层
创建一个示例RESTful Web Service
本节中的例子将演示Spring 3环境的创建过程,并创建一个可以部署到Tomcat中的“Hello World”应用。然后我们再完成一个更复杂的应用来了解Spring 3 REST支持的重要概念,如多种MIME类型表示支持和JAXB支持。另外,本文还使用一些代码片断来帮助理解这些概念。
Hello World:使用Spring 3 REST支持
要创建这个例子所使用的开发环境,您需要:
IDE:Eclipse IDE for JEE (v3.4+)
Java SE5 以上
Web 容器:Apache Tomcat 6.0(Jetty或其他容器也可)
Spring 3框架(v3.0.3是本文编写时的最新版本)
其他程序库:JAXB 2、JSTL、commons-logging
在 Eclipse 中创建一个Web应用,然后设置Tomcat 6作为它的运行环境。然后,您需要设置web.xml文件来激活Spring
WebApplicationContext。这个例子将Spring bean配置分成两个文件:rest-servlet.xml 包含与MVC/REST有关的配置,rest-context.xml包含服务级别的配置(如数据源 beans)。清单 1 显示了web.xml中的Spring配置的部分。
清单 1. 在web.xml中激活Spring WebApplicationContext
以下是引用片段:
contextConfigLocation
/WEB-INF/rest-context.xml
!-- This listener will load other application context file in addition to
rest-servlet.xml --
org.springframework.web.context.ContextLoaderListener
rest
org.springframework.web.servlet.DispatcherServlet
1
rest
/service/*
在rest-servlet.xml文件中创建Spring MVC的相关配置(Controller、View、View Resolver)。清单 2 显示了其中最重要的部分。
清单 2. 在rest-servlet.xml文件中创建Spring MVC配置
以下是引用片段:
bean class="org.springframework.web.servlet.mvc.annotation
.DefaultAnnotationHandlerMapping" /
bean class="org.springframework.web.servlet.mvc.annotation
.AnnotationMethodHandlerAdapter" /
bean id="jaxbMarshaller"
class="org.springframework.oxm.jaxb.Jaxb2Marshaller"
dw.spring3.rest.bean.Employee
dw.spring3.rest.bean.EmployeeList
bean id="employees" class=
"org.springframework.web.servlet.view.xml.MarshallingView"
bean id="viewResolver" class=
"org.springframework.web.servlet.view.BeanNameViewResolver" /
上面的代码中:
Component-scan启用对带有Spring注释的类进行自动扫描,在实践中,它将检查控制器类中所定义的@Controller注释。
DefaultAnnotationHanlderMappings和AnnotationMethodHandlerAdapter使用@ReqeustMapping注释的类或函数的beans由Spring处理这个注释将在下一节进行详细介绍。
Jaxb2Mashaller定义使用JAXB 2进行对象XML映射(OXM)的编组器(marshaller)和解组器(unmarshaller )
MashallingView定义一个使用Jaxb2Mashaller的XML表示view
BeanNameViewResolver使用用户指定的bean名称定义一个视图解析器
本例将使用名为“employees”的MarshallingView。
这样就完成了Spring的相关配置。下一步是编写一个控制器来处理用户请求。清单3显示的是控制器类。
如何在java中使用JAXB返回Map格式返回参数不报错
在Java中,定义方法返回Map跟返回其他类型一样,只需要指定方法的返回类型为Map即可。
具体实现如下:
public MapString,Object doSomething(){...}
Map是Java中的一个键值对接口,开发中经常会用到。Map接口提供三种collection
视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection
视图上返回其元素的顺序。Map接口的实现子类有很多,其中较为常用的有HashMap, Hashtable,TreeMap,ConcurrentHashMap等。
关于java注册jaxb和Java注册表清理的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-25,除非注明,否则均为
原创文章,转载请注明出处。