posts - 37,  comments - 9,  trackbacks - 0
BOM:Browser Object Model,浏览器对象模型。BOM是由一系列的对象组成的。其结构如下图所示。


可以看出,window对象是整个BOM的核心,因此,先讨论window对象。
(1)使用框架集的情况下
        使用框架集合的情况下,每个框架都由他自身的window对象表示,存放在frames集合中。可以通过数字或者名字对框架进行索引。看例子:
<html>
    
<head></head>
    
<frameset rows="100,*">
        
<frame src="frame.html" name="topFrame" />
        
<frameset cols="50%,50%">
            
<frame src="anothorFrame.html" name="leftFrame"/>
            
<frame src="yetAnothorFrame.html" name="rightFrame"/>
        
</frameset>
    
</frameset>
</html>
        我们可以通过window.frames[0]或者window.frames["topFrame"]引用顶层的框架。由于window对象是整个BOM的核心,因此再写上面的代码时,可以忽略window对象不写,直接写frames[0]或者frames["topFrame"]即可。
        在框架中使用window对象,代表的是该框架本身。因此,还引入了top对象。该对象指向的是对顶层的框架,也就是浏览器窗口。
        此外,还有一个parent对象。顾名思义,parent指向该框架的父框架。看例子。
<!--parent.html-->
<html>
    
<head></head>
    
<frameset rows="100,*">
        
<frame src="frame.html" name="topFrame" />
        
<frameset cols="50%,50%">
            
<frame src="anothorFrame.html" name="leftFrame"/>
            
<frame src="anotherframeset.html" name="rightFrame"/>
        
</frameset>
    
</frameset>
</html>
       其中,anotherframeset.html的代码如下:
<!--anotherframeset.html-->
<html>
 
<head>
  
<title></title>
 
</head>
 
<body>
    
<frameset cols="100,*">
        
<frame src="red.html" name="redFrame"/>
        
<frame src="blue.html" name="blueFrame"/>
    
</frameset>
 
</body>
</html>
        如果在red.html或者blue.html中,parent指向parent.html中的rightFrame。如果代码写在parent.html中的topFrame中,那么parent指向top对象,也就是浏览器窗口。还有一个指针self,它总是等于window。

参考书:
《JavaScript高级编程》Nicolas C. Zakas著, 曹力 张欣 等译。
posted @ 2011-10-18 12:22 wawlian 阅读(461) | 评论 (0)编辑 收藏
修改host,加入 

203.208.46.146 www.google.com 
203.208.46.147 www.google.com.hk 
203.208.46.132 clients1.google.com 
203.208.46.149 mail.google.com 
203.208.46.161 chatenabled.mail.google.com 
203.208.46.161 mail-attachment.googleusercontent.com
哈哈,找到解决办法,速度明细加快 
posted @ 2011-10-14 14:56 wawlian 阅读(672) | 评论 (0)编辑 收藏
以下内容均是来自《锋利的jQuery》,发到这里,纯属做个笔记,方便查阅。
直接看代码:

 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 2         "http://www.w3.org/TR/html4/loose.dtd">
 3 <html>
 4 <head>
 5     <title></title>
 6     <script type="text/javascript" src="jquery-1.3.1.js">
 7 
 8     </script>
 9 
10     <script type="text/javascript">
11         $().ready(
12             function() {
13 
14                 //表单对象属性过滤选择器
15                 //1改变表单内可用元素的值
16                 //$('#form1 input:enabled').val("这里变化了");
17 
18                 //2改变表单内不可用元素的值
19                 //$('#form1 input:disabled').val("这里变化了");
20 
21                 //3选取多选框中选中的个数
22                 //alert($('#form1 input:checked').length);
23 
24                 //4选取下拉框中选中的内容
25                 alert($('#form1 select :selected').length);
26             }
27         );
28     </script>
29 </head>
30 <body>
31     <form action="" id="form1">
32         可用元素:<input name="add" value="可用文本框"/><br/>
33         不可用元素:<input name="email" disabled="disabled" value="不可用文本框"/><br/>
34         可用元素:<input name="che" value="可用文本框"/><br/>
35         不可用元素:<input name="name" disabled="disabled" value="不可用文本框"/><br/>
36 
37         <br/>
38         多选框:<br/>
39         <input type="checkbox" name="newsletter" checked="checked" value="test1"/>test1
40         <input type="checkbox" name="newsletter" value="test2"/>test2
41         <input type="checkbox" name="newsletter" value="test3"/>test3
42         <input type="checkbox" name="newsletter" checked="checked" value="test4"/>test4
43         <input type="checkbox" name="newsletter" value="test5"/>test5
44 
45         <div></div>
46         <br/><br/>
47         下拉列表:<br/>
48         <select name="test" multiple="multiple" style="height:100px">
49             <option>浙江</option>
50             <option selected="selected">湖南</option>
51             <option>北京</option>
52             <option selected="selected">天津</option>
53             <option>广州</option>
54             <option>湖北</option>
55         </select>
56 
57         <br/><br/>
58         下拉列表2:<br/>
59         <select name="test2">
60             <option>浙江</option>
61             <option>湖南</option>
62             <option selected="selected">北京</option>
63             <option>天津</option>
64             <option>广州</option>
65             <option>湖北</option>
66         </select>
67 
68         <div></div>
69     </form>
70 </body>
71 </html>
posted @ 2011-06-17 16:51 wawlian 阅读(298) | 评论 (0)编辑 收藏
     摘要: 以下内容均是来自《锋利的jQuery》,发到这里,纯属做个笔记,方便查阅。直接看代码:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->  1 <!DOCTYPE HTML PUBLIC ...  阅读全文
posted @ 2011-06-17 16:11 wawlian 阅读(897) | 评论 (0)编辑 收藏
MyEclipse 9.0 安装了Flash Builder4.5,界面菜单都变成中文的了,完全不适应。
如果不习惯中文界面, 改回英文界面吧。只需要为 flash builder 加上启动参数
" -clean -nl en_US "
完成后记得将 -clean 去掉,以免每次启动 flash builder 都执行清理动作而浪费时间。
posted @ 2011-06-15 14:04 wawlian 阅读(514) | 评论 (0)编辑 收藏

下载正确的版本,然后修改refhost.xml文件


然后解压,在目录中找到refhost.xml(有两个,我的一个是在stage\prereq\db目录下,一个是在stage\prereq\db_prereqs\db目录下)进行添加修,添加如下代码:

<!--Microsoft Windows 7-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.1"/>
</OPERATING_SYSTEM>

注:如果安装的是客户端,将路径中的db改为client即可。

而后还要修改一个oraparam.ini文件,在install目录下

先在[Certified Versions]
#You can customise error message shown for failure, provide value for CERTIFIED_VERSION_FAILURE_MESSAGE
#Windows=5.0,5.1,5.2,6.0,6.1

注:即在#Windows=5.0,5.1,5.2后面添加 ,6.0,6.1

再添加下面代码:

#[Windows-6.1-required]
#Minimum display colours for OUI to run
MIN_DISPLAY_COLORS=256
#Minimum CPU speed required for OUI
#CPU=300
#[Windows-6.1-optional]


以管理员身份运行setup.exe

posted @ 2011-06-02 21:13 wawlian 阅读(644) | 评论 (1)编辑 收藏
 1 //升序插入排序
 2     public static int[] insertSort(int[] a) {
 3         for(int i = 1; i < a.length; i++) {
 4             int j = i-1;
 5             int tmp = a[i];
 6             while(j >= 0 && a[j] > tmp) {
 7                 a[j+1= a[j];
 8                 j = j -1;
 9             }
10             a[j+1= tmp;
11         
12         }
13         
14         return a;
15     }
16     
17     //降序插入排序
18     public static int[] insertSortDesc(int[] a) {
19         for(int j=1; j < a.length; j++) {
20             int i = j - 1;
21             int key = a[j];
22             while(i >= 0 && a[i] < key) {
23                 a[i+1= a[i];
24                 --i;
25             }
26             a[i+1= key;
27         }
28         return a;
29     }
posted @ 2011-05-25 14:02 wawlian 阅读(163) | 评论 (0)编辑 收藏

在flex4中,滚动条是属于group的,flex4中没有了直接的垂直和水平滚动条,取而代之的是用一个group里面包含了一个scroller,这个scroller有2个属性,垂直和水平滚动条。

如果TextArea要隐藏或者显示滚动条,用style
horizontalScrollPolicy和verticalScrollPolicy,而不是3的mx里面的属性。

而将滚动条移至底端,不能直接设置verticalScrollPosition,而用以下方法
<s:TextArea x="30" y="10" width="175" id="txt"/>
<fx:Script>
    txt.text = "xxxx...";
    txt.validateNow();
    txt.scroller.verticalScrollBar.value = txt.scroller.verticalScrollBar.maximum;
</fx:Script>


validateNow方法验证并更新此对象的属性和布局,如果需要的话重绘对象。
这个方法比较重要,因为在flex里面不会像flash设置了text立即就会显示文本的高度和宽度。非要重绘,或者,监听enterFrame或者其它事件,等控件外观更新完成后,才能真正获取到宽度,高度,verticalScrollBar.maximum,等文字相关属性。


posted @ 2011-04-24 17:16 wawlian 阅读(2606) | 评论 (0)编辑 收藏
http://piziwang.iteye.com/blog/479825 
posted @ 2011-04-23 23:35 wawlian 阅读(357) | 评论 (0)编辑 收藏

在开发过程中,我们经常会遇到读取配置文件的情况,对于配置文件的读取,根据环境等情况又各有不同,一般情况下,如果从非jar包中使用相对/路径,比较简单,就不在累述了,而在很多
情况下,我们需要把我们的class打包成jar文件,进行使用,这时就会发现,我们先前如果没有考虑到这些,可能就行不通了,那么,该如何解决呢?方法如下

有如下路径 :
Web-info--|-->classes--->conf-->config.properties
   |-->lib
此时加入我们需要读取config.properties,在不使用jar包时,使用如下方式读取,不失为一种方法:
File f = new File(this.getClass().getResource("/").getPath());
f = new File(f.getPath() + "/conf/config.properties");
注:f.getPath()即为当class所在的绝对路径。如:c:\javasrc\web-inf\classes
然后,对文件对象进行处理,就能把配置信息读取出来了,但是加入如上class被打包成jar文件,那么,在程序执行到这里时,就会无法找到配置文件,那么该如何处理呢?
处理方法如下:
String s_config="conf/config.properties";
 InputStream in = ClassLoader.getSystemResourceAsStream(s_config);
if( in == null ){
 System.out.println( " 打开 " + s_config + "失败!" );
}else
{
Properties properties = new Properties();
properties.load(in);
//
//接下来就可以通过properties.getProperty(String obj)方法对进行配置信息读取了
}

 

本文来自CSDN博客,转自:http://blog.csdn.net/wjmmml/archive/2004/09/27/118404.aspx

posted @ 2011-04-22 20:46 wawlian 阅读(276) | 评论 (0)编辑 收藏
http://lqw.iteye.com/blog/538238
posted @ 2011-04-20 16:04 wawlian 阅读(236) | 评论 (0)编辑 收藏

我自己在学习Flex的时候碰到了这个问题,上网找了一些觉得都很麻烦。因为我是使用RemoteObject和Java

结合,后台还集成了spring。在jsp中要获取客户端IP地址最简单的办法就是拿到request对象,但是我是获取的spring中的bean,通过spring好像不行,但是我在查看springfactroy代码的时候有个非常发现:

就是flex.messaging.FlexContext这个类有个静态方法:flex.messaging.FlexContext.getHttpRequest()

取到HttpRequest后面在拿getRemoteAddr就不用多说了:

   flex.messaging.FlexContext.getHttpRequest().getRemoteAddr()就这么简单.呵呵。

我的环境是Java+spring+blazeds+flex+RemoteObject实现。

posted @ 2011-04-20 15:57 wawlian 阅读(1049) | 评论 (0)编辑 收藏
http://wawlian.javaeye.com/blog/975029
posted @ 2011-03-25 11:25 wawlian 阅读(176) | 评论 (0)编辑 收藏

1.云计算基础

1.1云计算概述

1.1.1 解惑——什么是云计算 

      实质上,云计算是一种构造,它允许访问实际驻留在你的计算机以外的某个位置或者其他Internet连接的设备上的应用程序。通常,它是远程数据中心。

      云计算的优点是:另一家公司托管你的应用程序,这意味着他们处理服务器费用,管理软件更新,而你为服务支付相对较少的费用。

      云计算缺点:弱连接(网络故障、出于安全的考量);集成问题(如果应用程序在地理上是分散的,那么很难管理他们)

1.1.2 云组件

      从简单的拓扑方面来说,云计算解决方案由以下几部分组成:客户、数据中心、分布式服务器。

      1.客户:与普通局域网的客户一样

      2.数据中心:用于存放你预定的应用程序的服务器集合。

      3.分布式服务器:服务器不必全都安在一个位置。通常,服务器在地理上是分散的。但是对于你(云用户)来说,这些服务器工作时,就好像它们是彼此相邻的。

1.1.3 基础设施

      1.网格计算

 

      人们通常把网格计算和云计算弄混淆,实际上它们区别非常大。网格计算在同一时间针对单个问题把网络中的众多计算机资源应用于工作。

      网格计算需要使用某种软件,他可以划分程序段,然后把他们发送给数千台计算机。可以在组织的所有计算机上完成这个任务,或者以公共协作的形式完成它。

      由于以下原因,网格计算变得非常吸引人:

      (1)它是一种使用给定数量的计算机资源的经济的方式

      (2)它可以解决需要很高计算性能的问题

      (3)可以协作式共享很多计算机的资源,而无需一台计算机管理其他计算机。

 

      2.完全虚拟化

 

      完全虚拟化是使完全安装的一台机器在另一台机器上运行的技术。结果会得到一种系统,其中,在服务器上运行的所有软件都位于虚拟机内。

      这种方式不仅允许运行独特的应用程序,而且允许运行不同的操作系统。虚拟化与云计算相关,因为它是访问云上服务的方式之一。也就是说,远程数据中心可能以完全虚拟化的方式提供服务。

      为了实现完全虚拟化,必须借助特定的硬件组合。知道2005年,AMD-Virtualization(AMD-V)和Intel Virtualization Technology(IVT)扩展的引入才使得完全虚拟化成为可能。

      完全虚拟化优点:

      (1)在多个用户中共享计算机系统

      (2)把用户之间隔开以及把用户和控制程序之间隔开

      (3)仿真另一台计算机的硬件。

 

      3.半虚拟化

      半虚拟化通过高效的使用系统资源,允许同时在单个硬件设备上运行多个操作系统。

      在完全虚拟化中,将仿真整个系统,但是在半虚拟化中,管理模块与虚拟机中的系统协同工作。在半虚拟化系统中,可以同时运行许多不同的操作系统。

      半虚拟化在以下方面表现的最佳:

      (1)灾难恢复:发生灾难,可以将Guest系统移植别的硬件

      (2)迁移:方便迁移

      (3)容量管理:虚拟化环境中会更加容易添加更多处理能力或硬盘。

posted @ 2011-03-22 11:14 wawlian 阅读(332) | 评论 (0)编辑 收藏

XMLHttpRequest的readyState:

0:未初始化——创建

1:初始化——open

2:发送请求——send

3:开始接受结果

4:接收结果完毕

状态每改变一次,调用一次回调函数。方法调用5次,但是前两次的readyState==1

 

onreadystatechange = callback

绑定回调函数,不加()。

 

XMLHttpRequest的status:

200 OK

404 Not Found

500 Serevr Error

 1 var xmlHttpRequest;
 2     
 3     //创建XMLHttpRequest对象
 4     function createXmlHttpRequest() {
 5         var xmlHttp;
 6         if(window.ActiveXObject) {
 7             try {
 8                 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")
 9             } catch (e) {
10                 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
11             }
12         }else if(window.XMLHttpRequest) {
13             xmlHttp = new XMLHttpRequest()
14         }
15         
16         return xmlHttp;
17     }
18     
19 
20     function checkExist() {
21         xmlHttpRequest = createXmlHttpRequest();
22         xmlHttpRequest.onreadystatechange = callBack;
23         
24         var url = "http://localhost:8080/Ajax/CheckUser?uname="+document.getElementById("userName").value;
25         
26         xmlHttpRequest.open("GET", url, true);
27         xmlHttpRequest.send(null);
28     }
29     
30     function callBack() {
31         if(xmlHttpRequest.readyState==4 && xmlHttpRequest.status==200) {
32             var result = xmlHttpRequest.responseText;
33             //
34         }
35     }
posted @ 2011-03-14 15:36 wawlian 阅读(207) | 评论 (0)编辑 收藏

Ajax中请求被缓存的问题

在Ajax开发中,会遇到浏览器缓存内容的问题,比如,某个元素注册了鼠标事件(onmouseover),事件触发后会通过 xmlhttprequest到服务器获取内容,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容。

通常,这种请求都是xmlhttprequest发起的GET请求。根据 HTTP 规范,GET 用于信息获取,而且应该是幂等的。也就是说,当使用相同的URL重复GET请求会返回预期的相同结果时,GET方法才是适用的。当对一个请求有副作用的时候(例如,提交数据注册新用户时),应该使用POST请求而不是GET。所以浏览器会对GET请求做缓存处理。

解决办法:

一. GET请求URL后附加字串,让服务器认为不是相同的请求。

例 "http://www.example.com/index.php?class=aitcle&page=5&_t=" + new Date().getTime()

二. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("If-Modified-Since","0")

三. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache");

四. 服务端响应请求时加 header("Cache-Control: no-cache, must-revalidate"); (PHP)

五. 使用POST代替GET,浏览器不会对POST做缓存

 

 

转自 http://yanglei008.javaeye.com/blog/222401

posted @ 2011-03-14 15:34 wawlian 阅读(381) | 评论 (0)编辑 收藏
唯一约束

唯一约束与创建唯一索引基本上是一回事,因为在创建唯一约束的时候,系统会创建对应的一个唯一索引,通过唯一索引来实现约束。不过唯一约束更直观的表达了对应列的唯一性,使得对应索引的目的更加清晰,所以一般建议创建唯一约束而不是只创建唯一索引。

在PD中创建唯一约束的操作,以教室表来说,RoomID是主键,必然是唯一的,RoomName如果我们也要去必须是唯一的,那么具体操作如下:

在PD的模型设计面板中,双击“教室”表,打开属性窗口,切换到"”Keys”选项卡,可以看到里面有一行数据PK_ClassRoom,这是主键约束。添加一行数据,命名为UQ_RoomName,不能将右边的“P”列选上,然后单击工具栏的“属性”按钮,弹出UQ_RoomName的属性窗口,切换到列选项卡,单击增加列按钮,选择将RoomName列添加到其中,然后单击确定即可完成唯一约束的添加。



这样系统就会自动创建唯一约束。

CHECK约束

CHECK分为列约束和表约束,列约束是只对表中的某一个列进行的约束,可以在列的属性中进行设置,而表约束是对多个列进行的约束,需要在表的属性中进行设置(其实列约束也可以在表约束中设置)。

1.标准CHECK约束

对于一些常用的CHECK约束,可以直接通过设置界面来完成。以班级表为例,ClassName每个学校有自己的命名规则,假设这里规定ClassName必须以2开头,那么需要在ClassName列上定义CHECK约束,使得其满足命名规范。具体操作是在PD中双击Class表,打开Class的属性窗口,切换到列选项卡,选择ClassName列,单击工具栏的“属性”按钮,弹出ClassName的属性窗口,切换到StandardChecks选项卡如图:



在这个选项卡可以定义属性的标准检查约束,窗口中每项的参数的含义,如下:

参数 说明
Minimum 属性可接受的最小数
Maximum 属性可接受的最大数
Default 属性不赋值时,系统提供的默认值
Unit 单位,如公里、吨、元
Format 属性的数据显示格式
Lowercase 属性的赋值全部变为小写字母
Uppercase 属性的赋值全部变为大写字母
Cannot modify 该属性一旦赋值不能再修改
List Of Values 属性赋值列表,除列表中的值,不能有其他的值
Label 属性列表值的标签
2.直接编写SQL语句的CHECK约束

在前面弹出ClassName属性窗口中,单击左下角的“More”按钮,系统将弹出更多的选项卡,切换到“Additional Checks”选项卡,可以设置约束名和具体的约束内容,如图所示:



表级的CHECK约束与列级的CHECK约束设置类似,单击表属性窗口左下角的“More”按钮,切换到Check选项卡,设置CHECK约束的命名和SQL语句内容。



3.使用Rule创建约束

同样以班级名必须以2开头为例,通过Rule创建CHECK约束。首先需要创建一个Rule,双击Class表,打开表的属性窗口,切换到Rules选项卡,单击“Create a Object”按钮,系统将打开一个业务规则属性窗口,修改规则名,并将规则的类型修改为Constraint,如图所示:



然后切换到Expression选项卡,设置规则的内容为“ClassName LIKE '2%'”,单击确定按钮即可完成Rule的设置。切换到表属性的Check选项卡,默认约束内容中的“%RULES%”就是用来表示Rule中设置的内容,如果我们还有一些其他的CHECK约束内容,不希望在Rule中设置,而是在Check选项卡中设置,那么只需要删除%RULES%将CHECK约束内容添加进去,也可以保留%RULES%,然后在与%RULES%之间添加一个and即可。比如规定ClassID必须小于10000,那么我们可以将Check内容设置如下:



生成的脚本如下:

create table Class (
   ClassID              int                  not null,
   ClassName            varchar(20)          not null,
   constraint PK_CLASS primary key nonclustered (ClassID),
   constraint CKT_CLASS check (ClassID<10000),
   constraint ClassNameRule check (ClassName LIKE '2%')
)
go

可以看到,根据Rule生成的CHECK约束与在Check选项卡中设置的约束将分别创建一个约束,相互并不影响。

默认约束

默认约束是用户在没有输入值的情况下,系统给出默认的值。最常用的是CreateTime字段,设置默认值为getdate(),在用户创建一行数据时记录下创建时间。例如对于选课表,需要记录下选课的时间,则可以设置ApplyTime的默认值为getdate()函数。



设置默认值约束的操作如下:双击选课表,打开表属性窗口,选择ApplyTime字段,单击工具栏的属性按钮,打开列的属性窗口,切换到Standard Checks选项卡,在Default下拉列表框中选择getdate()即可。



至此我们所有的约束在PD中的设置都介绍完了,下一篇将介绍视图、存储过程等数据库对象。

from: http://www.cnblogs.com/studyzy/archive/2009/12/17/1626650.html
posted @ 2011-02-14 20:32 wawlian 阅读(1650) | 评论 (0)编辑 收藏
通过jQuery选择器获取到的永远是一个对象,几十页面上根本没有该元素。因此,如果要使用jQuery检查元素再给某个页面上是否存在的时候,不能使用以下代码:
1if ($("#tt")) {
2    //do sth.
3}
而应该通过获取到的元素的长度来判断,代码如下:
1if ($("#tt").lenght > 0{
2    //do sth
3}
或者通过转换成JavaScript对象的方式来进行处理:
1if ($("#tt")[0]) {
2    //do sth
3}
posted @ 2011-01-10 10:55 wawlian 阅读(7630) | 评论 (1)编辑 收藏
 

选择器

语法

描述

实例

标签选择器

E{

    CSS规则

}

以文档元素作为选择符

td{

font-size:14px

width:120px

}

ID选择器

#ID{

    CSS规则

}

以文档元素的唯一标识ID作为选择符

#note {

    font-size:14px

width:120px

}

类选择器

E.classname {

    CSS规则

}

以文档元素的class作为选择符

.dream {

    font-size:14px

}

群组选择器

E1,E2,E3 {

    CSS规则

}

多个选择符应用同样的样式

td,p,div.a {

    font-size:14px

}

后代选择器

E F {

    CSS规则

}

元素E的任意后代元素F

#links a {

    font-size:14px

}

通配选择器

* {

    CSS规则

}

以文档的所有元素作为选择符

*{

    font-size:14px

}

posted @ 2011-01-10 10:49 wawlian 阅读(145) | 评论 (0)编辑 收藏
见代码和注释
 1import java.text.SimpleDateFormat;
 2import java.util.Calendar;
 3import java.util.Date;
 4import java.util.GregorianCalendar;
 5public class DateTesting {
 6/**
 7@param args
 8*/

 9public static void main(String[] args) {
10   // TODO Auto-generated method stub
11  
12  
13   //1、如何根据给定的年月日构造日期对象
14   //需要构造2008-3-15
15   //用GregorianCalendar类描述日期时,由于月份是从0开始计数的,所以实际的月份值总是比计数值大1.
16   GregorianCalendar calendar=new GregorianCalendar(2008,2,15);
17   Date tempDate=calendar.getTime();
18   System.out.println(tempDate.toLocaleString());
19  
20   SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
21   System.out.println(sdf.format(tempDate));
22  
23  
24   //2、如何根据给定的日期对象分解年、月、日
25        //获取系统当前时间
26   Date currentDate=new Date();
27   System.out.println(currentDate.getTime());
28   GregorianCalendar ca=new GregorianCalendar();
29   ca.setTime(currentDate);
30   int year=ca.get(Calendar.YEAR);
31   int month=ca.get(Calendar.MONTH)+1;
32   int day=ca.get(Calendar.DAY_OF_MONTH);
33  
34   System.out.println("年份的值: "+year);
35   System.out.println("月份的值: "+month);
36   System.out.println("一个月中某天的值: "+day);
37  
38  
39   //3、给定两个日期: 2008-8-10   2008-8-16 日 ,需要计算这两个日期之间相差的天数
40   //在JAVA语言系统中,所有的时间都是以1970年1月1日,00时00分00秒000毫秒为时间的开始点计算的。
41  
42   GregorianCalendar firstCa=new GregorianCalendar(2008,7,10);
43   Date firstDate=firstCa.getTime();
44  
45  
46   GregorianCalendar secondCa=new GregorianCalendar(2008,7,16);
47   Date seconDate=secondCa.getTime();
48  
49   long distance=seconDate.getTime()-firstDate.getTime();
50   int result=(int)(distance/86400/1000);
51   System.out.println("间隔的天数: "+result);
52  
53  
54   //4、给定一个日期,例如:2008-4-21, 如何计算15天以后的时间日期???
55  
56   GregorianCalendar tpCalendar=new GregorianCalendar(2008,3,20);
57   Date tpDate=tpCalendar.getTime();
58  
59   long tp=tpDate.getTime();
60   tp=tp+8*86400*1000;
61   tpDate.setTime(tp);
62   System.out.println(sdf.format(tpDate));
63  
64}

65}

66
posted @ 2011-01-03 21:08 wawlian 阅读(165) | 评论 (0)编辑 收藏
CVSNT是服务器管理工具,再在客户端下个WINCVS就可以(关于wincvs使用,可以在网上找下,因为eclipse已经很好地集成了 cvs)就可以一起协同工作了。这二天我从下载CVSNT到用eclipse新建项目,共享项目,不同的客户端导入项目都在公司局域网内的不同机子上测试 通过。记录如下:

首先从http://www.cvsnt.org处下得你想要的cvsnt版本,我下的是2.5.03,安装完成后。从程序中打开cvsnt control panel(CVSNT 控制面板)。下面开始配置CVSNT,主要是创建资源并让它可以通过客户端的IDE (eclipse)来访问。

  开始配置cvsnt

  a 查看运行状态:
  在about面板有个cvsnt  和 cvsnt lock二个选项,这儿可以对其进行start,stop服务

  b 添加资源
  在repository config面板中可以添加删除资源,这儿主要设定了repository 的name and  root值。如我在这儿将name设置为\mycvs,root为e:\mycvs。创建后会在对应的目录下生成cvsroot文件夹及cvs相关配置文 件。 OK,确定。这个地方可以要重启服务才能生效

  c 兼容:
  在conpatibility option 面板上选择兼容的版本,注意一定要勾上respond as cvs 1.11.2 to version request,为了与eclipse中的cvs兼容(在eclipse中的cvs版本很可能与你cvsnt版本不同)。

好了,现在服务器上的资源路径已经设定好了。


通过IDE共享一个工程  


打开eclipse新建一个项目,然后在项目上右击/team/share project (小组/共享项目),在弹出的share  project whith cvs reposity对话框中选择一个cvs路径(第一次当然是新建了),在host中填入CVSNT的主机地址如:192.168.12.17,在 repository path中填入cvsnt中的name值如:/mycvs。user中写cvsnt所分配的用户名,password中写入密码(下面将会讲些cvs中如 何管理用户)。在connection type中一般选择pserver连接类型。然后就是记住密码什么的...  :-)。OK ,NEXT提示一路完成!

   
在客户端从cvs上导入共享工程:


在客户端的eclipse中打开cvs视图,根据CVSNT的路径及其给你所分配的用户相关信息新建一个CVS的资源路径。ok,开始引入共享工程了:

可以直接从cvs中check out出来,也可以从new/project/cvs/projects from cvs。选中你刚刚把建立cvsnt资源路径,你可以在use an existing module中看到所有的共享项目了。然后选择一个你想导入的项目check out出来到本机....

  全部完成^_^,本来想剪几个图上来的,有些麻烦,太不方便了。不过过程比较简单,很快就可以搞定。客户端将cvsnt上的工程检出是比较 简单的。主要是在cvsnt上的相关配置。我在网上找了些资料,完成了如添加不同的用户。介绍有个cvsnt的GUI工具可以直接图形化操作。看介绍很 easy ,下载URL:http://www.kdeopen.com(偶一直打不开,郁闷,希望各位运气比我好) 。我只好在控制台下添加删除用户了。

  cvsnt用户管理

  在用户管理中以下是cvs的一些命令参数
Usage: cvs passwd [-a] [-x] [-X] [-r real_user] [-R] [-D domain] [username]
         -a      Add user
         -x      Disable user
         -X      Delete user
         -r      Alias username to real system user
         -R      Remove alias to real system user
         -D      Use domain password

  服务器工作在CVSNT用户单一验证方式下的时候,文件passwd定义了CVSNT的用户信息,这里面保存着用户名,用户密码,以及别名 信息。默认状态下 没有该文件,但是我们可以在CVSNT还工作在混合验证方式下时,用系统管理员登录,通过添加用户命令来让CVSNT自动建立一个passwd文件。

 登录:login
  cvs -d :pserver:administrator@127.0.0.1:/mycvs login

 添加用户
  cvs -d :pserver:administrator@127.0.0.1:/mycvs passwd -a zyx

之后系统提示输入密码,输入后服务器会新建一个passwd文件。该文件的内容很简单,形式如下:

zyx:YT2p2NmdmUlEg:

  以第一行为例:zyx为用户名,YT2p2NmdmUlEg为CVS使用UNIX标准加密函数对密码进行加密后的结果。

  若想以混合验证的方式验证得对应一个window的系统用户名(zyinxin),这时就用参数-r来指定,如:
      cvs -d :pserver:administrator@127.0.0.1:/mycvs passwd -r zyinxin -a zyx 

这时生成文件内容如下:
zyx:YT2p2NmdmUlEg:zyinxin
zyinxin为该用户的别名(它是参考系统用户),

注意:这个文件是不能在客户端进行修改的,不能checkout出来。

  添加完成后你可以通过login来测试用户zyx是否创建成功

  删除用户:
  cvs -d :pserver:administrator@127.0.0.1:/mycvs passwd -x zyx




附:参考了网上一些资料,刚刚学习,愿一起进步。谢谢!

posted @ 2011-01-02 16:34 wawlian 阅读(662) | 评论 (0)编辑 收藏
MyEclipse6.0的快捷键中把我们习惯性使用的Alt+/进行代码自动补齐的快捷键改为了ctrl+空格,大家知道这是我们切换中英文输入法的 键,所以我们需要更改这个快捷键,方法如下:
1.
选择MyEclipse6.0菜单栏中的Window->preferences
2.
选择General->keys;
3.
在右侧中间的窗体中点击word completion后再点击remove binding,在下方的binding中随便输入一个快捷键;
4.
然后选择Content Assist点击Remove binding,在binding中输入Alt+/
5.
点击Ok就可以了。
如果还是不提示有可能是提示功能被关了. 如下做
1
、菜单window->Preferences->Java->Editor->Content Assist->Enable auto activation 选项要打上勾
2
window->Preferences->Java->Editor->Content Assist->Advanced   上面的选项卡Select the proposal kinds contained in the 'default' content assist list: 中把 Other Java Proposals 选项打上勾就可以了。

让Eclipse,MyEclipse拥有Microsoft Visual Studio那样的自动提示功能:

一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多选项是默认关闭的,要开发者自己去手动配置。如果开发者不清楚的话,就不知道Eclipse ,MyEclipse的代码提示功能一样能像Microsoft Visual Studio的代码提 示功能一样强大。好了,废话就说那么多了,让我们来配置一下

1.打开Eclipse或者MyEclipse,点击 "窗口">>"首选项">>"Java">>"编辑器">>"内容辅助"

2.在 "内容辅助" 面板里找到 "Java的自动激活触发器" ,在  "Java的自动激活触发器"  左边的输入框里输入 ".abc ",点击 "应用">>"确定"

3.点击 "文件">>"导出">> "常规" >> "首选项" 然后选择你要导出的文件路径

4.用记事本打开刚才导出的文件,找到 ".abc",然后把它替换成 " .abcdefghijklmnopqrstuvwxyz(, "  ,保存

5.将刚才修改的文件导入到Eclipse或者是MyEclipse中,点击 "文件">>"导入">>"常规">>"首选项",然后选择刚才修改的文件这样Eclipse, MyEclipse就可以像Microsoft Visual Studio那样的自动提示功能了!

posted @ 2010-12-29 20:28 wawlian 阅读(346) | 评论 (0)编辑 收藏
一、添加本地连接的"internet 连接共享"
 
网络连接 
--> 本地连接 --> 属性 --> “高级”选项卡 --> internet 连接共享 --> 勾选
家庭网络连接 
--> 选择“VMnet1”
 
此时,VMnet1的ip地址被设为:
192.168.0.1
 
二、设置VM linux的ip。
 
ip设为:从 
192.168.0.1 到 192.168.0.254 之间的某一值
submask设为:
255.255.255.0
gateway设为:
192.168.0.1
dns server设为:
192.168.0.1
posted @ 2010-12-24 14:28 wawlian 阅读(850) | 评论 (0)编辑 收藏

在安装arcgis desktop sdk for .net framework 时,出现了错误,提示:
installer information:
the arcgis desktop sdk for the microsoft .net framework setup requires arcgis desktop 9.3 with the .net support feature。

原因:

你安装了arcgis desktop,安装之前是否已经安装的net framework2.0?自定义安装还是典型安装的?最好自定义安装,看看net支持的部分是否选择上
安装arcgis desktop,但net支持的部分没装上(全部安装是没有选上的)

修复一下arcgis desktop,把.net的支持装上就OK

posted @ 2010-09-21 22:31 wawlian 阅读(558) | 评论 (0)编辑 收藏

在地址栏输入www.microsoft.com或者www.microsoft.com/china都无法访问的解决方法:

1、在“我的电脑”右击现则 “服务” 在打开的服务列表中选择 “ DNS Client” ,右击 属性 将“启动类型” 改为 “手动”或者“禁用”,点击“确认”。

2、在“DNS Client”上右击 选择“停止” ,会出现正在停止的画面。

停止完后,在试试www.microsoft.com或者www.microsoft.com/china 应该都能访问了。

posted @ 2010-09-16 12:57 wawlian 阅读(1241) | 评论 (4)编辑 收藏
struts2中result常见的几种转发类型:dispatcher(默认)即内部请求转发,redirect重定向,redirectAction,plainText。
下面分别介绍以下几种方式。

1.dispatcher方式:
   这种方式是struts2中默认的转发类型,即内部请求转发,类似于forward的方式。这里不专门介绍。

2.redirect方式:
   首先看一下以下的配置代码片段:
1 <action name="redirect">
2     <result type="redirect">/add.jsp</result>
3 </action>
   这时候,用户在浏览器中访问该action,例如,我们输入URL:http://localhost:8080/hello/redirect.action,当用户开始访问,我们会看到,浏览器的url地址变成:http://localhost:8080/hello/add.jsp。这说明,配置的确实是浏览器重定向的方式。

3.redirectAction方式:
   这种方式可以简单的理解成转向到另一个Action。这种配置往往在下面的情况下需要用到:例如,当管理员添加完一个用户后,系统自动跳转到用户列表的界面。那么我们进行如下配置:
1 <action name="redirectAction">
2     <result type="redirectAction">listAction</result>
3 </action>
    而其中的listAction是用来控制显示所有用户的action。并且,该action必须和redirectAction处在同一个package下面。那么如果不在同一个包下,则需进行如下配置:
1 <result type="redirectAction">
2     <param name="actionName">XXX</param>
3     <param name="namespace">YYY</param>
4 </result>
    其中XXX代表你要转向到的Action的名称,YYY代表该Action所在package对应的名称空间。

4.plainText方式
    这种方式一般来说使用的比较少,可能用到的情况:原样输出源代码。配置如下:
1 <action name="abc" >
2     <result type="plainText">
3         <param name="location">/index.jsp</param>
4         <param name="charSet">UTF-8</param>
5     </result>
6 </action>
   这时,index.jsp的源代码则会以文本方式显示在浏览器中。


posted @ 2010-09-04 14:21 wawlian 阅读(747) | 评论 (0)编辑 收藏
        使用的是Hibernate3.2.x版本。数据库采用的是MySQL5.1。实现保存用户的功能。由于主要是搭建开发环境以及写第一个测试的小应用,因此里面的代码只是简单的实现功能。
        1.下载Hibernate3.2。www.hibernate.org现在可能很难找到该版本,所以可以在百度搜索一下。下载后将压缩文件解压到本地硬盘,例如,我解压到F:\hibernate-3.2目录。
        2.安装MySQL数据库,创建一个叫hibernatefirst的数据库,然后use该数据库(关于MySQL安装以及MySQL如何创建数据库等这里就不详细说了。)
        3.在MyEclipse中新建一个Java项目(不用是Web项目,Java项目即可),取名为hibernate。在项目下新建一个Folder,取名为lib,将hibernate解压路径下的hibernate3.jar文件,以及hibernate解压路径下的lib目录下的所有jar文件一并拷贝到该lib目录下。此外,hibernate作为一个持久层框架,其底层使用的依然是JDBC,因此,需要将MySQL的JDBC驱动加入该lib目录下。这样hibernate需要的jar文件就齐了。但是这些jar文件并没有加入该项目的classpath中,因此是无法在项目中引用的。因此,选中项目下lib目录下的所有jar文件,右键—>buildpath—>Add to Buildpath。
        4.环境已经搭建好了,开始第一个简单的hibernate项目吧。在src目录下新建包:com.xiaobai.hibernate.domain,在其下创建类User,代码如下:
 1package com.xiaobai.hibernate.domain;
 2
 3import java.util.Date;
 4
 5public class User {
 6
 7    private int id;
 8    private String name;
 9    private Date birthday;
10    public int getId() {
11        return id;
12    }

13    public void setId(int id) {
14        this.id = id;
15    }

16    public String getName() {
17        return name;
18    }

19    public void setName(String name) {
20        this.name = name;
21    }

22    public Date getBirthday() {
23        return birthday;
24    }

25    public void setBirthday(Date birthday) {
26        this.birthday = birthday;
27    }

28}

29

        5.为User类编写映射文件User.hbm.xml。在com.xiaobai.hibetnate.domain包下创建该文件,作为新手肯定不知道该文件中到底应该写点什么,没关系,hibernate为我们提供的示例中有,copy过来再进行修改就好。到hibernate解压路径下的eg\org\hibernate\auction路径下,拷贝一个User.hbm.xml文件过来,将<hibernate-mapping>标签内的内容全部删除,将<hibernate-mapping>标签的package改成User类所在的包,也就是该映射文件所在的包。然后在<hibernate-mapping>标签对中添加如下内容:
1<class name="User">        
2        <id name="id">
3            <generator class="native"/>
4        </id>
5        <property name="name"/>
6        <property name="birthday"/>
7</class>
差点忘了说明,映射文件的命名是XXX.hbm.xml,其中的XXX是你所要映射的domain对象的名称,例如这里是User。
        6.编写hibernate配置文件hibernate.cfg.xml。到hibernate解压路径下的etc目录下拷贝一份到src目录下,注意不在包下,而是在src目录下。将以下代码覆盖copy过来的版本:
 1<!DOCTYPE hibernate-configuration PUBLIC
 2    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 3    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 4
 5<hibernate-configuration>
 6    <session-factory>
 7        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
 8        <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
 9        <property name="hibernate.connection.username">root</property>
10        <property name="hibernate.connection.password">******</property>
11        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
12        <property name="hibernate.hbm2ddl.auto">create</property>
13        
14        <property name="show_sql">true</property>
15        <mapping resource="com/xiaobai/hibernate/domain/User.hbm.xml"/>
16    </session-factory>
17</hibernate-configuration>
前面数过,hibernate底层也是通过JDBC实现的,因此也需要提供连接数据库的信息,所以前面四条属性就不难理解了。由于hibernate能支持很多关系型数据库,那么生成sql语句时,会根据数据库不同而作一定的调整,所以,需要配置数据库方言的信息,这就是第五条所配置的。默认情况下,我们只创建了数据库,数据库中并没有User对应的表,因此,保存User对象前需要先创建表,那么第六条配置的就是这个内容。另外,第七条配置让hibernate在打印生成的sql语句。最后,不要忘了将映射文件以资源的形式加入配置文件,这就是<mapping>标签中配置的内容。这么多的属性name是不用记住的,进入hibernate解压路径,etc目录下有一个hibernate.properties文件,里面包含了所有的属性的示例。在配置的时候照猫画虎拷贝需要的过来进行修改即可。
        7.配置搞定,下面编写一个测试类,代码如下:
 1package com.xiaobai.hibernate;
 2
 3import java.util.Date;
 4
 5import org.hibernate.Session;
 6import org.hibernate.SessionFactory;
 7import org.hibernate.Transaction;
 8import org.hibernate.cfg.Configuration;
 9
10import com.xiaobai.hibernate.domain.User;
11
12public class Base {
13    public static void main(String[] args) {
14        Configuration cfg = new Configuration().configure();
15        
16        SessionFactory factory = cfg.buildSessionFactory();
17        
18        Session session = factory.openSession();
19        
20        Transaction tx = session.beginTransaction();
21        
22        User user = new User();
23        user.setName("张三");
24        user.setBirthday(new Date());
25        
26        session.save(user);
27        tx.commit();
28        
29        session.close();
30        factory.close();
31        
32        
33    }

34}

35

这段代码仅仅是为了实现功能,实际上是很不完善的,后面的文章会讨论如何写完善的合理的代码。运行该类。进入数据库,发现数据库中多了一张user表,查看里面的数据,已经添加了一条name为“张三”的数据。OK,第一个hibernate小示例完成了。
posted @ 2010-08-28 18:56 wawlian 阅读(1284) | 评论 (0)编辑 收藏
配置一个Action:
1<package name="hello" namespace="/action" extends="struts-default">
2        <action name="helloworld">
3                <result>/WEB-INF/page/hello.jsp</result>
4        </action>
5</package>
Action的代码如下:
 1public class HelloWorldAction {
 2    private String msg;
 3    
 4    public String getMessage() {
 5        return msg;
 6    }

 7
 8    public String execute(){
 9        msg = "我的第一个struts2应用";
10        return "success";
11    }

12}
访问以下路径:http://localhost:8080/struts2/action/helloworld依然可以访问到jsp中的内容。这主要是因为Action中有很多默认配置:
1.如果没有为action配置class属性,那么其默认值为ActionSupport。
2.如果没有为action配置method属性,那么默认为execute
3.ActionSupport类中有一个execute()方法,它返回一个常量SUCCESS,而该常量的值为"success"。
4.如果没有为result设置name属性,默认为success。
知道以上内容,则不难理解为什么即使省略了很多属性的配置,依然能够访问到该Action了。
posted @ 2010-08-27 21:20 wawlian 阅读(182) | 评论 (0)编辑 收藏
新建一个struts2项目,命名为struts2。按照如下XML文件配置一个Action:
1<package name="hello" namespace="/action" extends="struts-default">
2    <action name="helloworld" class="com.xiaobai.struts.action.HelloWorldAction" method="execute">
3    <result name="success">/WEB-INF/page/hello.jsp</result>
4    </action>
5</package>
将应用部署,访问如下路径:http://localhost:8080/struts2/action/sdf/dsf/32/d/helloworld 依然可以访问到Action。
这主要是因为Struts2对Action名称的搜索是按照一定顺序进行的。以上面的情况为例:
1.struts2首先搜索命名空间为/action/sdf/dsf/32/d的包是否存在,存在的情况下,是否有helloworld这个Action;
2.搜索命名空间为/action/sdf/dsf/32的包是否存在,存在的情况下,是否有helloworld这个Action;
3.搜索命名空间为/action/sdf/dsf的包是否存在,存在的情况下,是否有helloworld这个Action;
4.搜索命名空间为/action/sdf的包是否存在,存在的情况下,是否有helloworld这个Action;
5.搜索命名空间为/action的包是否存在。在这种情况下能够搜索到,因此,可以访问到helloworld这个Action。
此外,如果按照这种搜索顺序搜索,发现所有的包均不存在,那么struts2则会到命名空间为""(默认命名空间)的包下面去找helloworld这个Action。
posted @ 2010-08-27 21:02 wawlian 阅读(546) | 评论 (2)编辑 收藏
http://hi.baidu.com/zhougw03/blog/item/df08da3dfe214bc19f3d6292.html
ASA SQL 用户指南
http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/zh/html/dbugzh9/dbugzh9.htm

模型检查中的Existence of reference问题
在tool-> check   model 
当中选中option   标签,然后选中table,接下来展开的东西你就明白了

不是存在重复的名,而是默认情况下你的每个表都要建立索引/关联什么的. 
你可以在powerdesigner当中调整警告级别,不让其检查这个就可以了
http://topic.csdn.net/u/20070703/15/d28fff5c-e726-4695-9bdb-901d2df5e97b.html
create table category (
   ID                   int                  identity(100,1),
   Name                 varchar(31)          null,
   constraint PK_CATEGORY primary key (ID)
)


修改外键命名规则

选择Database—>Edit Current DBMS
选择Scripts-》Objects-》Reference-》ConstName
可以发现右侧的Value为:

FK_%.U8:CHILD%_%.U9:REFR%_%.U8:PARENT%

可见,该命名方法是:'FK_'+8位子表名+9位Reference名+8位父表名,你可以根据这中模式自定义为:

FK_%.U7:CHILD%_RELATIONS_%.U7:PARENT%,

可以使FK名称变为FK_TABLE_2_RELATIONS_TABLE_1
掌握这种方法后就可以按照自己的想法修改了

生成建库脚本SQL文件中的表头注释很讨厌,可以在 Databse -> Generate Database (Ctrl+G)窗口中,选择Options卡片,去掉Usage的Title钩选项即可。

添加外键
Model -> References新建一条外键后,双击进入外键属性,在“Joins”卡片中可以选择子表的外键字段

如何实现Name和code不自动相等
如何实现在CDM中创建Entity时,Name和Code不自动对应

-------------------------------------

如何把NAME 列在 scrip里显示出来

 修改字段生成规则。要给每个字段都添加一个注释的话,同一窗口中展开 Script -> Object -> Column -> Add 的 Value修改为:

%20:COLUMN% [%COMPUTE%?AS (%COMPUTE%):%20:DATATYPE% [%IDENTITY%?%IDENTITY%:[%NULL%][%NOTNULL%]][ default %DEFAULT%]
     [[constraint %CONSTNAME%] check (%CONSTRAINT%)]]/*%COLNNAME%*/

其中的%COLNNAME%就是列的Name值(可以是中文)

---------------------------------------------------------------------------------

POWERdESIGEN  自增长列的设置

PDM里查看表的属性,Columns选项卡,选中整列,查看列属性,点左上方的properties图标(有手形图案的那个),此时打开一个设置窗口,General选项卡里面进行设置.   
在列属性的General标签页里有个Identity复选框,勾上就行了

--------------------------------------
1 如何在PowerDesigner下建索引
2 如何在PowerDesigner 下建自增列
3 如何在PowerDesigner 下检查设计模型

  1 如何在PowerDesigner下建索引
  1 双击表设计图,出来Table Properties,在Tab 页中选择 Indexes

  2 单击新建索引的属性,出现Indexex Properties

  3 增加一个索引包含的字段

  2 如何在PowerDesigner 下建自增列
 2 使用SqlServer 数据库中的下列语句来完成
建表语句中,在要做为自增列的字段中,加上如下
IDENTITY(1,1)
还有可以使用下面语句,重置自增种子
dbcc checkident(ConfigSys,reseed,0);
  3 如何在PowerDesigner 下检查设计模型
  1 在菜单栏中选择 Tools -? Check Model, 如下图

  2 选择要检查的每项设置

  3 确定后,将出来检查结果汇总信息





这段时间,使用PD做数据库模型,感觉很不错,将自已的经验总给一下.还有许多功能我没时间总结,以后有时间,继续补吧
1 如何在PowerDesigner下建索引
2 如何在PowerDesigner 下建自增列
3 如何在PowerDesigner 下检查设计模型

1 如何在PowerDesigner下建索引
1 双击表设计图,出来Table Properties,在Tab 页中选择 Indexes

2 单击新建索引的属性,出现Indexex Properties

3 增加一个索引包含的字段

2 如何在PowerDesigner 下建自增列
2 使用SqlServer 数据库中的下列语句来完成
建表语句中,在要做为自增列的字段中,加上如下
IDENTITY(1,1)
还有可以使用下面语句,重置自增种子
dbcc checkident(ConfigSys,reseed,0);
3 如何在PowerDesigner 下检查设计模型
1 在菜单栏中选择 Tools -? Check Model, 如下图

2 选择要检查的每项设置

3 确定后,将出来检查结果汇总信息


在 powerdesigner 中设置 自增 得索引不用那么麻烦,其实只要在 概念模型 中在 属性中把columns中要自增得字段得类型设置成为 serial 就可以了! 

1。使用PowerDesigner检查数据库设计错误~

PowerDesigner 还可用于快速检测新模型中的数据库设计错误。

检查新的模式:

从 [Tools] 菜单中选择 [Check Model]。

此时,就会出现 [Check Model Parameters] 对话框。可以使用缺省参数。

另外也可以直接在空白处单击右键,选择Check Model...即可,我一般喜欢这样用。

单击 [确定]。

此时,在 [Result List] 中就会显示 [Check Model] 的结果。

2。如何将Conceptual Data Model (CDM)转换成Physical Data Model(PDM)?

即将概念数据模型转换成物理数据模型。

二者的区别是,CDM是纯粹概念上的模型,PDM是和具体的数据库类型相关的,比如SQL Server 2000或者Oracle。生成SQL语句当然也就需要从PDM生成。

在菜单上选择Tools -> Generate Phisical Data Model

最后选择你的数据库类型,即可。

3。使用PowerDesigner生成SQL语句~

可以使用 PowerDesigner 生成一个 SQL 脚本,该脚本用于实施模型的所有组件。然后,使用 SQL 脚本生成一个数据库。

这时候要确保你用的是PDM。

生成 SQL 脚本以新建数据库:

从 [Database] 菜单中选择 [Generate Database]。

此时,就会出现 [Database Generation] 对话框

在 [Directory] 字段中键入 c:Temp,并在 [File Name] 字段中键入 NewDemo.sql。

确保选中了 [ Generation]。

单击 [Database] 选项卡,并确保选中了 [Create Database]。

浏览其它选项卡,以查看控制所生成脚本的许多其它属性的选项。

单击 [确定]。

创建脚本后,就会出现 [Result] 对话框。

4。为什么出现Warning : table Existence of index 表名 ?

说明该表没有建立索引。不过这是一个警告,不是错误,可以不用理会它。

5。如何建立联合主键?

联合主键就是一个表里面有多个主键,比如一份学生选课的表里面,学生ID和课程ID就同时是主键。

在设置Attributes,把2个字段的P那项都勾上,P表示Primary Key主键。

6。如何建立外键Foreign Key?

在PowerDesigner中,通过建立关系Relationship就可以自动建立外键,不需要手动添加。

而建立Relationship有2种办法:可以通过菜单选择Model -> Relationships...,也可以通过在右边的工具栏中拖拽Relationship控件。

7。如何生成数据字典?

通过菜单Report -> Report Wizard...可以生成

注意可以选择Template.因为我是通过PDM生成,所以选择了Standard Physical Template~

1、安装PD v11.0版

2、由生成建表脚本时,字段超过15字符就发生错误()
原因未知,解决办法是打开PDM后,会出现Database的菜单栏,进入Database - Edit Current DBMS -script-objects-column-maxlen,把value值调大(原为30),比如改成60。出现表或者其它对象的长度也有这种错误的话都可以选择对应的objects照此种方法更改!
或者使用下面的这种方法:
生成建表脚本时会弹出Database generation提示框:把options - check model的小勾给去掉,就是不进行检查(不推荐)!
或者可以修改C:\Program Files\Sybase\PowerDesigner Trial 11\Resource Files\DBMS\oracl9i2.xdb文件
修改好后,再cdm转为pdm时,选择“Copy the DBMS definition in model”把把这个资源文件拷贝到模型中。

3、生成的建表脚本中如何把对象的双引号去掉?
打开cdm的情况下,进入Tools-Model Options-Naming Convention,把Name和Code的标签的Charcter case选项设置成Uppercase或者Lowercase,只要不是Mixed Case就行!
或者选择Database->Edit current database->Script->Sql->Format,有一项CaseSensitivityUsingQuote,它的comment为“Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,改为“No”即可!
或者在打开pdm的情况下,进入Tools-Model Options-Naming Convention,把Name和Code的标签的Charcter case选项设置成Uppercase就可以!

4、建立一个表后,为何检测出现Existence of index的警告
A table should contain at least one column, one index, one key, and one reference.
可以不检查 Existence of index 这项,也就没有这个警告错误了!
意思是说没有给表建立索引,而一个表一般至少要有一个索引,这是一个警告,不用管也没有关系!

5、创建一个表在修改字段的时候,一修改name的内容,code也跟着变化,如何让code不随着name变化
Name和Code 的右侧都有一个按钮“=”,如果需要不同步的话,把这个按钮弹起来就可以了。
Tools->General Options->Dialog->Name to Code Mirroring (去掉)

6、由CDM生成PDM时,自动生成的外键的重命名
PDM Generation Options->Detail->FK index names默认是%REFR%_FK,改为FK_%REFRCODE%,其中%REFRCODE%指的就是CDM中Relationship的code!另外自动生成的父字段的规则是PDM Generation Options->Detail->FK column name template中设置的,默认是%.3:PARENT%_%COLUMN%,可以改为Par%COLUMN%表示是父字段!

7、如何防止一对一的关系生成两个引用(外键)
要定义关系的支配方向,占支配地位的实体(有D标志)变为父表。
在cdm中双击一对一关系->Detail->Dominant role选择支配关系

8、修改报表模板中一些术语的定义
即文件:C:\Program Files\Sybase\PowerDesigner Trial 11\Resource Files\Report Languages\Chinese.xrl
Tools-Resources-Report Languages-选择Chinese-单击Properties或双击目标
修改某些对象的名称:Object Attributes\Physical Data Model\Column\
        ForeignKey:外键
        Mandatory:为空
        Primary:主键
        Table:表
用查找替换,把“表格”替换成“表”
修改显示的内容为别的:Values Mapping\Lists\Standard,添加TRUE的转化列为是,FALSE的转化列为空
另外Report-Title Page里可以设置标题信息

1。pd中复制一列是,实际上是一个链接。源列的变动同时体现在复制列上

2。数据库设计通常步骤:CDM缺定主要结构--》生成PDM--》在PDM上修改,必要时生成CDM

3。若由pdm生成cdm再生成pdm,在pdm中修改过的外键名将被改回到默认值

4。必要时可以通过修改模板(Database-Edit Current DataBase)改变脚本的格式。例如:
Script-Objects-Column-Add的Value中开头增加一行“--%COLNNAME%”以便在脚本中显示列的中英文对照

5。去掉讨厌的name、code映射:Tools-General Options-clear the Name to Code mirroring check box

6。对于大小写不敏感的数据库(如Oracle),PowerDesign在创建脚本时自动给表名和字段名加上双引号,以“强字符串”形式来获取区分大小写,这样给语句的编写制造很多麻烦。去掉这个添足的功能:
Database -〉Edit Current DBMS -〉Script. -〉Sql -〉Format -〉CaseSensitivityUsingQuote
右边面板参数值 Value 选择No

7。由cdm生成pdm,可以控制是否将关系生成引用;由pdm生成脚本,可以控制是否将引用生成外键

8。对于oracle而言,为表设置选项(如tablespace GPSSYSTEM)可使其创建到正确的表空间;为主键设置选项(using index tablespace GPSINDEX)使索引创建到正确的表空间中

1。使用PowerDesigner检查数据库设计错误~

PowerDesigner 还可用于快速检测新模型中的数据库设计错误。

检查新的模式:

从 [Tools] 菜单中选择 [Check Model]。

此时,就会出现 [Check Model Parameters] 对话框。可以使用缺省参数。

另外也可以直接在空白处单击右键,选择Check Model...即可,我一般喜欢这样用。

单击 [确定]。

此时,在 [Result List] 中就会显示 [Check Model] 的结果。

2。如何将Conceptual Data Model (CDM)转换成Physical Data Model(PDM)?

即将概念数据模型转换成物理数据模型。

二者的区别是,CDM是纯粹概念上的模型,PDM是和具体的数据库类型相关的,比如SQL Server 2000或者Oracle。生成SQL语句当然也就需要从PDM生成。

在菜单上选择Tools -> Generate Phisical Data Model

最后选择你的数据库类型,即可。

3。使用PowerDesigner生成SQL语句~

可以使用 PowerDesigner 生成一个 SQL 脚本,该脚本用于实施模型的所有组件。然后,使用 SQL 脚本生成一个数据库。

这时候要确保你用的是PDM。

生成 SQL 脚本以新建数据库:

从 [Database] 菜单中选择 [Generate Database]。

此时,就会出现 [Database Generation] 对话框

在 [Directory] 字段中键入 c:Temp,并在 [File Name] 字段中键入 NewDemo.sql。

确保选中了 [ Generation]。

单击 [Database] 选项卡,并确保选中了 [Create Database]。

浏览其它选项卡,以查看控制所生成脚本的许多其它属性的选项。

单击 [确定]。

创建脚本后,就会出现 [Result] 对话框。

4。为什么出现Warning : table Existence of index 表名 ?

说明该表没有建立索引。不过这是一个警告,不是错误,可以不用理会它。

5。如何建立联合主键?

联合主键就是一个表里面有多个主键,比如一份学生选课的表里面,学生ID和课程ID就同时是主键。

在设置Attributes,把2个字段的P那项都勾上,P表示Primary Key主键。

6。如何建立外键Foreign Key?

在PowerDesigner中,通过建立关系Relationship就可以自动建立外键,不需要手动添加。

而建立Relationship有2种办法:可以通过菜单选择Model -> Relationships...,也可以通过在右边的工具栏中拖拽Relationship控件。

7。如何生成数据字典?

通过菜单Report -> Report Wizard...可以生成

注意可以选择Template.因为我是通过PDM生成,所以选择了Standard Physical Template~

1、安装PD v11.0版

2、由生成建表脚本时,字段超过15字符就发生错误()
原因未知,解决办法是打开PDM后,会出现Database的菜单栏,进入Database - Edit Current DBMS -script-objects-column-maxlen,把value值调大(原为30),比如改成60。出现表或者其它对象的长度也有这种错误的话都可以选择对应的objects照此种方法更改!
或者使用下面的这种方法:
生成建表脚本时会弹出Database generation提示框:把options - check model的小勾给去掉,就是不进行检查(不推荐)!
或者可以修改C:\Program Files\Sybase\PowerDesigner Trial 11\Resource Files\DBMS\oracl9i2.xdb文件
修改好后,再cdm转为pdm时,选择“Copy the DBMS definition in model”把把这个资源文件拷贝到模型中。

3、生成的建表脚本中如何把对象的双引号去掉?
打开cdm的情况下,进入Tools-Model Options-Naming Convention,把Name和Code的标签的Charcter case选项设置成Uppercase或者Lowercase,只要不是Mixed Case就行!
或者选择Database->Edit current database->Script->Sql->Format,有一项CaseSensitivityUsingQuote,它的comment为“Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,改为“No”即可!
或者在打开pdm的情况下,进入Tools-Model Options-Naming Convention,把Name和Code的标签的Charcter case选项设置成Uppercase就可以!

4、建立一个表后,为何检测出现Existence of index的警告
A table should contain at least one column, one index, one key, and one reference.
可以不检查 Existence of index 这项,也就没有这个警告错误了!
意思是说没有给表建立索引,而一个表一般至少要有一个索引,这是一个警告,不用管也没有关系!

5、创建一个表在修改字段的时候,一修改name的内容,code也跟着变化,如何让code不随着name变化
Name和Code 的右侧都有一个按钮“=”,如果需要不同步的话,把这个按钮弹起来就可以了。
Tools->General Options->Dialog->Name to Code Mirroring (去掉)

6、由CDM生成PDM时,自动生成的外键的重命名
PDM Generation Options->Detail->FK index names默认是%REFR%_FK,改为FK_%REFRCODE%,其中%REFRCODE%指的就是CDM中Relationship的code!另外自动生成的父字段的规则是PDM Generation Options->Detail->FK column name template中设置的,默认是%.3:PARENT%_%COLUMN%,可以改为Par%COLUMN%表示是父字段!

7、如何防止一对一的关系生成两个引用(外键)
要定义关系的支配方向,占支配地位的实体(有D标志)变为父表。
在cdm中双击一对一关系->Detail->Dominant role选择支配关系

8、修改报表模板中一些术语的定义
即文件:C:\Program Files\Sybase\PowerDesigner Trial 11\Resource Files\Report Languages\Chinese.xrl
Tools-Resources-Report Languages-选择Chinese-单击Properties或双击目标
修改某些对象的名称:Object Attributes\Physical Data Model\Column\
        ForeignKey:外键
        Mandatory:为空
        Primary:主键
        Table:表
用查找替换,把“表格”替换成“表”
修改显示的内容为别的:Values Mapping\Lists\Standard,添加TRUE的转化列为是,FALSE的转化列为空
另外Report-Title Page里可以设置标题信息

1。pd中复制一列是,实际上是一个链接。源列的变动同时体现在复制列上

2。数据库设计通常步骤:CDM缺定主要结构--》生成PDM--》在PDM上修改,必要时生成CDM

3。若由pdm生成cdm再生成pdm,在pdm中修改过的外键名将被改回到默认值

4。必要时可以通过修改模板(Database-Edit Current DataBase)改变脚本的格式。例如:
Script-Objects-Column-Add的Value中开头增加一行“--%COLNNAME%”以便在脚本中显示列的中英文对照

5。去掉讨厌的name、code映射:Tools-General Options-clear the Name to Code mirroring check box

6。对于大小写不敏感的数据库(如Oracle),PowerDesign在创建脚本时自动给表名和字段名加上双引号,以“强字符串”形式来获取区分大小写,这样给语句的编写制造很多麻烦。去掉这个添足的功能:
Database -〉Edit Current DBMS -〉Script. -〉Sql -〉Format -〉CaseSensitivityUsingQuote
右边面板参数值 Value 选择No

7。由cdm生成pdm,可以控制是否将关系生成引用;由pdm生成脚本,可以控制是否将引用生成外键

8。对于oracle而言,为表设置选项(如tablespace GPSSYSTEM)可使其创建到正确的表空间;为主键设置选项(using index tablespace GPSINDEX)使索引创建到正确的表空间中

posted @ 2010-08-27 10:45 wawlian 阅读(9119) | 评论 (1)编辑 收藏

1.新建一个web项目,取名为struts2.
2.加入struts2的相关jar文件,将struts.xml文件拷贝进src目录下。将修改过的web.xml文件拷贝至struts2/WebRoot/WEB-INF/下。
3.新建一个Action:HelloWorldAction。其代码如下:

 1package com.xiaobai.struts.action;
 2
 3public class HelloWorldAction {
 4    private String msg;
 5    
 6    public String getMessage() {
 7        return msg;
 8    }

 9
10    public String execute(){
11        msg = "我的第一个struts2应用";
12        return "success";
13    }

14}
4.修改strut.xml文件:在<struts></struts>标签对中加入以下配置:
1<package name="hello" namespace="/action" extends="struts-default">
2    <action name="helloworld" class="com.xiaobai.struts.action.HelloWorldAction" method="execute">
3    <result name="success">/WEB-INF/page/hello.jsp</result>
4    </action>
5</package>

5.部署该项目。并且启动Tomcat服务器,访问http://localhost:8080/struts2/action/helloworld
看到如下图所示的结果:


下面对写的代码及配置做一点解释:
1.<package>标签的namespace属性可以作为action访问路径的一部分。不设置该属性或将其设置为""(空字符串)则为默认命名空间。例如上面的package属性设置为"/action",action标签的name属性设置为"helloworld",所以访问该action的路径应为/action/helloworld,这也就是上面这个应用的访问地址是http://localhost:8080/struts2/action/helloworld的原因。
2.一般情况下,package都应当继承自struts-default包,即,将package的extends属性设置为"struts-default",这样才能获得struts2的许多功能。
3.action的method属性主要是定义将请求交给action中的哪个方法来处理。
4.result标签中的name属性值对应action中的处理方法(这里是execute方法)的返回值,用来定义在该返回值的情况下如何进行转向。
   上面的应用中的jsp文件放置在WEB-INF文件下,主要是为了不让用户直接访问到jsp页面,而是通过访问action,并通过action的控制来访问信息。
   (ps:用户直接访问jsp文件也无法获得msg的值)
posted @ 2010-08-26 21:16 wawlian 阅读(139) | 评论 (0)编辑 收藏
1.pageContext.getServletContext().getServletDispatcher("/....").forward(request,response);
  在该处,"/"指的是该站点的根路径,不是指整个Tomcat服务器的根路径;
2.response.setRedirect("/....")
  在该处,"/"指的是整个Tomcat服务器的根路径。
3.客户端跳转可以进行站点外跳转,但是服务器跳转则只能在站点内进行跳转。
4.request.getContextPath()可以获取当前站点的路径,例如/test1.jsp。
posted @ 2010-08-26 16:04 wawlian 阅读(304) | 评论 (0)编辑 收藏
1.链接 <a href="">...</a>
2.表单提交
3.meta标签 <meta http-equiv="refresh" content="3;url=www.sina.com">
4.javascript:history.back();    javascript:history.forward();
5.response.sendRedirect("a.jsp");
6.response.setHeader("refresh","3;url=3.jsp")
posted @ 2010-08-26 16:01 wawlian 阅读(225) | 评论 (0)编辑 收藏

struts2开发环境的搭建主要涉及以下三个步骤:
1.找到开发struts2应用需要的jar文件。
2.编写struts2的配置文件。
3.修改web.xml文件。
具体步骤如下:
1.到http://struts.apache.org/下载struts。下载完成之后将下载的zip文件解压。
2.在MyEclipse中创建一个web项目,给项目命名,例如,struts2.
3.进入struts解压目录下的lib目录中,找到以下jar文件(版本号可能不同):
  struts2-core-2.x.x.jar
  xwork-2.x.x.jar
  ognl-2.6.x.jar
  freemarker-2.3.x.jar
  commons-logging-1.1.x.jar
  commons-fileupload-1.2.x.jar
  将这些jar文件拷贝至新建的web项目的WEB-INF/lib目录下。这些jar文件时开发struts2应用需要的最少的jar文件集合。
4.在项目的src目录下新建或者从别处拷贝一个struts.xml。该文件是struts2的配置文件。该文件可以通过以下方式获得:
  在struts的解压目录下的apps目录下有一些struts2的示例应用。例如,struts2-blank-2.1.8.1.war。用WinRAR将其解压缩,在解压目录
  下的WEB-INF/classes目录下,找到struts.xml,将其复制到项目的src目录下,打开该文件,将<struts></struts>标签对中的其他内容
  删除。
5.修改web.xml文件。进入解压的struts示例应用,将WEB-INF目录下的web.xml文件拷贝替换项目中的web.xml文件即可。
  或者也可以在项目中的struts.xml文件中添加一个Filter的配置:

<filter>
        
<filter-name>struts2</filter-name>
        
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
    
<filter-name>struts2</filter-name>
    
<url-pattern>/*</url-pattern>
</filter-mapping>

这样,struts2的开发环境就搭建好了。
(以上内容根据传智播客的相关视频整理,主要是方便自己以后查看)

posted @ 2010-08-26 13:04 wawlian 阅读(164) | 评论 (0)编辑 收藏

 

 

vim、gvim在windows下中文乱码的终极解决方案

       在windows下vim的中文字体显示并不好,所以我们需要调整字体显示编码为utf-8,只有这样才能使用美观的中文。这时候可能出现很多中文乱码。如:文件显示乱码、菜单乱码、右键菜单乱码、conlse输出乱码、文件关联右键菜单乱码等等。网上很多解决办法,但我试了很多,都出现一些怪异的乱码,顾此失彼。有个简单的方法解决乱码问题:删除vim下的lang目录。但这样所有菜单只能显示英文了。于是只好自己想办法。经过长时间摸索,总结下边的代码可以彻底解决这些问题。

        

        

 

 1 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 2 " vim7.1在windows下的编码设置。By Huadong.Liu
 3 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 4 set encoding=utf-8
 5 set fileencodings=utf-8,chinese,latin-1
 6 if has("win32")
 7 set fileencoding=chinese
 8 else
 9 set fileencoding=utf-8
10 endif
11 "解决菜单乱码
12 source $VIMRUNTIME/delmenu.vim
13 source $VIMRUNTIME/menu.vim
14 "解决consle输出乱码
15 language messages zh_CN.utf-8

 


posted @ 2010-08-24 17:34 wawlian 阅读(473) | 评论 (0)编辑 收藏

<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜