加载中…
加载中…
加载中…
加载中…
Jpa中实体相互之间关系:one to many
<1> 建立工程,导入jar包。
<2> 在源目录src下建立文件夹,取名META-INF,名称必须和这个一致,并放置persistence.xml文件,配置相关信息。如下:
<?xml version='1.0'?>
<persistence xmlns='http://java.sun.com/xml/ns/persistence'
1. Jpa技术:
JPA的总体思想和现有Hibernate、TopLink等ORM框架大体一致。总的来说,JPA包括以下3方面的技术:
<1> ORM映射元数据
JPA支持XML和JDK 5.0注释(也可译作注解)两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。
1. 下面给出整合开发时Struts 2、 Hibernate、Spring需要的JAR。
<1> struts2-core-2.x.x.jar :Struts 2框架的核心类库
xwork-2.x.x.jar :XWork类库,Struts 2在其上构建
ognl-2.6.x.jar :对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性
freemarker-2.3.x.jar :Struts 2的UI标签的模板使用FreeMarker编写
commons-fileupload-1.2.x.jar 文件上传组件,2.1.6版本后需要加入此文件
struts2-spring-plugin-2.x.x.jar :用于struts2集成Spring的插件
<2> hibernate核心安装包下的(下载路径:http://www.hibernate.org/,点击“Hibernate Core”右边的“Downloads”):
hibernate3.jar
lib\bytecode\cglib\hibernate-cglib-repack-2.1_3.jar
1. property标签
property标签用于输出指定值:
<s:set name='name' value=''kk'' />
<s:property value='#name'/>
default:可选属性,如果需要输出的属性值为null,则显示该属性指定的值
escape:可选属性,指定是否格式化HTML代码。
value:可选属性,指定需要输出的属性值,如果没有指定该属性,则默认输出ValueStack栈顶的值。
id:可选属性,指定该元素的标识
2. iterator标签
iterator标签用于对集合进行迭代,这里的集合包含List、Set和数组。
<s:set name='list' value='{'zhangming','xiaoi','liming'}' />
<s:iterator value='#list' id='name' status='st'>
1.
相对EL表达式,它提供了平时我们需要的一些功能,如:
<1> 支持对象方法调用,如xxx.sayHello();
<2>
支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 |
<3> 操作集合对象。
2. 标准的OGNL会设定一个根对象(root对象)。假设使用标准OGNL表达式来求值(不使用Struts 2的OGNL表达式),如果OGNL上下文(OgnlContext Map类型)有两个对象:foo对象,在OgnlContext中名称为foo;bar对象,在OgnlContext中名称为bar。同时foo对象被设置为根对
1. 准备资源文件,资源文件的命名格式如下:
baseName_language_country.properties
baseName_language.properties
baseName.properties
其中baseName是资源文件的基本名,我们可以自定义,但language和country必须是java支持的语言和国家。如:
中国大陆: baseName_zh_CN.properties
美国: baseName_en_US.properties
注意:对于中文的属性文件,我们编写好后,应该使用jdk提供的native2ascii命令把文件转换为unicode编码的文件。命令的使用方式如下:
native2ascii
2. 配置全局资
输入校验有两种实现方法: 手工编写代码实现和基于XML配置方式实现。
1. 手工编写代码实现。
通过重写validate()或validateXxx()方法实现,validate()方法会校验action中所有与execute方法签名相同的方法。 validateXxx()只会校验action中方法名为Xxx的方法。其中Xxx的第一个字母要大写。当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport ),如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息。
validate()使用例子:
@Override
public void validate() {
1. 文件上传
<1> 在WEB-INF/lib下加入commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar。这两个文件可以从http://commons.apache.org/下载。
<2> 把form表的enctype设置为:“multipart/form-data“,如下:
<form enctype='multipart/form-data' action='${pageContext.request.contextPath}/xxx.action' method='post'>
</form>
<3> 在Action类中添加以下属性:
public class HelloWorldAction{
1. 动态方法调用
如果Action中存在多个方法时,我们可以使用!+方法名调用指定方法。如下:
public class HelloWorldAction{