风人园

弱水三千,只取一瓢,便能解渴;佛法无边,奉行一法,便能得益。
随笔 - 99, 文章 - 181, 评论 - 56, 引用 - 0
数据加载中……

Ext应用一 -- TreeView

在导入需要文件之后,以下代码就能生成一个tree了,非常的简单。
ajax去后台action拿组织架构的json字符串。搞定。还有页面上要定义一个div来显示这个tree。
<div id="tree" style="height:330px;width:300px;"></div>

<script type="text/javascript">
Ext.BLANK_IMAGE_URL 
= '<%=request.getContextPath()%>/ext/resources/images/default/s.gif';
 
Ext.onReady(
function(){
    
//alert("start");
    var tree = new Ext.tree.TreePanel( {
        el:'tree',        
        autoScroll:
true,
        loader: 
new Ext.tree.TreeLoader({dataUrl: '<%=request.getContextPath()%>/org.do?department_ID=10000112'})
    }
);

    
var root = new Ext.tree.AsyncTreeNode( {    
            text : 'IVO',
            draggable : 
false,
            id : '
10000000'
            
    }
);
    
    tree.setRootNode(root);

    tree.on('click', 
function(node)
        
//alert(node.id + ", " + node.text);
        if(node.leaf==true){
            addSelected(node.id, node.text);
        }

    }
); 
                
    tree.render();       
}
);
</script>

posted @ 2007-12-28 13:01 风人园 阅读(1330) | 评论 (0)编辑 收藏

struts2 -- Action Configuration (翻译)

Action Mappings
   Action映射可以指定一组result类型,一组异常处理,一个拦截器堆。但是只有name属性是必须的。其他的属性都可以通过package范围提供。
一个登录action
<action name="Logon" class="tutorial.Logon">
  
<result type="redirect-action">Menu</result>
  
<result name="input">/tutorial/Logon.jsp</result>
</action>
Action Names
       在web应用中,name属性是用以匹配浏览器请求路径的一部分(或其他HTTP客户端)。framework会丢掉主机名、应用名和扩展名,并匹配中间部分。所以,一个http://www.planetstruts.org/struts2-mailreader/Welcome.do 会map到 Welcome action。

在应用中,这个到action的链接一般是由struts tag来自动产生的。这个tag通过名字来指定action,并且这个framework会加上默认扩展名和其他一些必须 的东西。

<s:form action="Hello">
    
<s:textfield label="Please enter your name" name="name"/>
    
<s:submit/>
</s:form>
Wildcard Method
      多数情况,一组action mapping会有一个共享模式。比如,你所有的 edit actions都一个“edit”打头, 并调用这个action 类的edit方法。delete actions也是这个模式,但是调用的是delete方法。

这种情况,你就可以通过通配符的方式来定义一次action mapping,远胜于定义每一个action mapping.

<action name="*Crud" class="example.Crud" method="{1}">

这里,一个"editCrud"的action会调用Crud Action类实例的edit方法。同样,一个"deleteCrud"的action会调用delete方法。
另一种常用的方法就是后缀方法名,通过设置"!", "_", 或者其他一些特殊字符。

  • "action=Crud_input"
  • "action=Crud_delete"

To use a postfix wildcard, just move the asterisk and add an underscore.

<action name="Crud_*" class="example.Crud" method="{1}">

posted @ 2007-07-06 09:51 风人园 阅读(631) | 评论 (0)编辑 收藏

SqlMapClient.insert()返回主键

<insert id="saveInfoReq" parameterClass="informationRequisition" >
     INSERT INTO IT_M_InformationRequisition(TrackingNumber, SAPCODE,PLANT_FK) 
     values (#trackingNumber#, #sapCode#,#plant_FK#)
  <selectKey resultClass="int" keyProperty="id" > 
      SELECT @@IDENTITY AS ID
  </selectKey>
 </insert>
在insert的sql声明中,需要嵌套selectKey,然后去运行相应产生主键的语句。在sql server中,是通过@@IDENTITY来产生主键的,这里相当于两个语句,第一个语句insert,完成之后再调用select,这样就能获得这个记录的主键了。

在其他的数据库中也会有相应其他的主键生产方式,按照他们方式就可以返回相应的主键了。

posted @ 2007-07-06 08:18 风人园 阅读(1602) | 评论 (1)编辑 收藏

struts2--Result Configuration

 

当Action类方法完成,会返回一个字符串,这个字符串值用来选择result元素。一个action可以映射到一组不同描述的结果。标准的result是在ActionSupport 这个基类中定义的。

String SUCCESS = "success";
String NONE    
= "none";
String ERROR   
= "error";
String INPUT   
= "input";
String LOGIN   
= "login";

当然,ap可以自定义其他的result标记来match特定的情况。

Result Elements
result有默认值设定,如果不指定属性,则使用success和dispatch来执行这个result

<action name="Hello">
  
<result>/hello/Result.jsp</result>
  
<result name="error">/hello/Error.jsp</result>
  
<result name="input">/hello/Input.jsp</result>
</action>


如上显示,默认情况下,如果返回值是success,则执行第一个result,其他的情况执行下面的匹配的result

Global Results

大部分时候,results都是嵌套在antion元素中。但是很多results会应用到不同的action。在一个安全的应用中,一个client试图访问一个没有认证的页面,那么很多action可能都需要去访问 logon result。
如果action需要共享result, 一组global result可以为每一个package定义。框架首先查询嵌套在action中的本地result,如果本地result没有符合的,则在global result中查询。

<global-results>
  
<result name="error">/Error.jsp</result>
  
<result name="invalid.token">/Error.jsp</result>
  
<result name="login" type="redirect-action">Logon!input</result>
</global-results>

 

Dynamic Results
A result may not be known until execution time. Consider the implementation of a state-machine-based execution flow; the next state might depend on any combination of form input elements, session attributes, user roles, moon phase, etc. In other words, determining the next action, input page, etc. may not be known at configuration time.

Result values may be retrieved from its corresponding Action implementation by using EL expressions that access the Action's properties, just like the Struts 2 tag libraries. So given the following Action fragment:
一个action有时候不可能在执行前就知道它的action,这种情况就需要通过动态result来实现。

 首先定义一个属性,来存放这个值,然后在流程定义中通过EL表达式来取得这个属性值。这样就可以通过程序动态指定需要转发的值。

private String nextAction;

   public String getNextAction() {
       
return nextAction;
   }

you might define a result like this:
<action name="fragment" class="FragmentAction">
        
<result name="next" type="redirect-action">${nextAction}</result>
</action>
If a FragmentAction method returns "next" the actual value of that result will be whatever is in FragmentAction's nextAction property. So nextAction may be computed based on whatever state information necessary then passed at runtime to "next"'s redirect-action.

总结,struts2对于result提供了很多很灵活的设置方法,用户可以使用相应的方法处理特定的逻辑。对于各种情况,总能找出相应的方法来出来。

posted @ 2007-06-27 11:29 风人园 阅读(2844) | 评论 (0)编辑 收藏

FleaPHP入门


1、项目建立
         复制FleaPHP到apache的www目录,我使用的是wamp,在wamp/www下。
         然后在flea/Example/下创建了FleaTest项目目录
         注意: 在引用flea.php这个文件时要注意目录结果,如果路径错误,会提示找不到此文件。
         
      run()方法是mvc程序的入口,默认会调用actionIndex()方法。
  请注意这里我们没有调用 run() 函数。因此我们需要调用 __FLEA_PREPARE() 函数来初始化 FleaPHP 运行环境。并且 __FLEA_PREPARE() 函数应该在用 register_app_inf() 或 set_app_inf() 修改应用程序设置后调用。

2、基础应用示例
      详细参考FleaPHP的官方开发指南
3、应用程序设置
      3.1、自定义配置文件
            在项目目录下,创建Config文件夹,在里面创建MY_APP_INF.php,把需要自定义的一些参数进行设定。程序应该是首先调用默认配置文件,然后再调用自定义配置文件。一般会设置dbDNS
<?php
require('FLEA/FLEA.php');
register_app_inf(
'Config/MY_APP_INF.php');
run();
?>
相对目录查询。

      3.2、单个配置项
         对于少量的设置,可以在入口文件中直接使用set_app_inf()函数制定,例如:
<?php
require('FLEA/FLEA.php');
set_app_inf(
'defaultController', 'UserCenter');
run();
?>

4、错误注意事项
   4.1、缓存设置: 默认配置文件中,缓存目录为null,在使用fleaphp的数据库操作时,会使用到缓存,所以要设置这个目录,默认配置文件为FLEA/Cconfig/DEBUG_MODE_CONFIG.php的'internalCacheDir' => 'Cache',一般用Cache作为目录名。
   4.2、传值部分:在fleaphp新版中,使用引用传值,减少内存使用量,所以在出现如下错误时Fatal error: Cannot pass parameter 1 by reference ???
      就是参数引用的问题,处理方式如下
      _tableClass->create(array('字段'=>'字段值',.....))
      必须改为
      $row = array('字段'=>'字段值',.....);
      _tableClass->create($row);
       因为 create() 等方法现在使用引用传递参数,这样可以提高性能,减少不必要的内存复制操作。

posted @ 2007-05-18 10:34 风人园 阅读(1296) | 评论 (0)编辑 收藏

在线ASC码查询

目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。
    因为1位二进制数可以表示(21=)2种状态:0、1;而2位二进制数可以表示(22)=4种状态:00、01、10、11;依次类推,7位二进制数可以表示(27=)128种状态,每种状态都唯一地编为一个7位的二进制码,对应一个字符(或控制码),这些码可以排列成一个十进制序号0~127。所以,7位ASCII码是用七位二进制数进行编码的,可以表示128个字符。
    第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;
    第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
    注意:在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。
    为了便于查询,以下列出ASCII码表:
    第128~255号为扩展字符(不常用)

ASCII码 键盘 ASCII 码 键盘 ASCII 码 键盘 ASCII 码 键盘
27 ESC 32 SPACE 33 ! 34 "
35 # 36 $ 37 % 38 &
39 ' 40 ( 41 ) 42 *
43 + 44 ' 45 - 46 .
47 / 48 0 49 1 50 2
51 3 52 4 53 5 54 6
55 7 56 8 57 9 58 :
59 ; 60 < 61 = 62 >
63 ? 64 @ 65 A 66 B
67 C 68 D 69 E 70 F
71 G 72 H 73 I 74 J
75 K 76 L 77 M 78 N
79 O 80 P 81 Q 82 R
83 S 84 T 85 U 86 V
87 W 88 X 89 Y 90 Z
91 [ 92 \ 93 ] 94 ^
95 _ 96 ` 97 a 98 b
99 c 100 d 101 e 102 f
103 g 104 h 105 i 106 j
107 k 108 l 109 m 110 n
111 o 112 p 113 q 114 r
115 s 116 t 117 u 118 v
119 w 120 x 121 y 122 z
123 { 124 | 125 } 126 ~

posted @ 2007-05-14 10:27 风人园| 编辑 收藏

应用rails进行敏捷web开发--学习笔记二

Depot应用的开发
1、此应用使用增量开发模式,进行的敏捷开发。
ROR可以很好的体现敏捷的特性,具有高效直观的效果,开发的结果可以即可显示,而且不用重新启动服务器。在java中开发的我,已经被不同重启tomcat折磨的不行了。感觉ROR这点很爽。
在完成了第一个hello程序之后更让人心情愉快,这样的开发,简直让人太舒服了,什么配置文件也不用,写完就可以看到结果。比起java web 来,有太多太多好处。不过大家关注的地方不一样,各有优缺点吧。在网站部分,ROR可能继续成长,企业级开发,还是java的天下。

2、user case、pageflow、Data

3、

posted @ 2007-05-13 11:08 风人园 阅读(310) | 评论 (0)编辑 收藏

应用rails进行敏捷web开发--学习笔记一

开发环境
radrails 0.71, radrails就是一个基于eclipse的IDE工具,不过没有提供代码助手功能,这个让我javaer有点不习惯,可能都是被IDE给宠坏了,不喜欢记那么多的名字吧。

下面来做我们的第一个hello world程序。

1、创建项目

输入项目名称

最后点击Finish
radrails会自动运行 rails Hello命令,创建所有需要的目录及文件。
目录机构如图


在servers窗口中会自动创建相应的server,用来启动服务(ruby script/server)

2、创建controller
在Generators窗口中,下拉框选择controller,后一个输入要创建的controller的名字,然后点击go,过几秒钟,系统就会创建controller所需要的文件,最后会在console窗口显示创建的文件,这个时候就说明controller已经创建完成。你可以在app/controller中发现多了一个say_controller.rb的文件

如果要删除都个已经创建好的controller,在第二个下拉框中选择要删除的名字,然后选择Destroy,点击go即可。



3、增加Action
say_controller.rb的默认代码:

class SayController < ApplicationController
end
简单来说action 就是controller中的方法。
添加一个hello的方法
def hello
end
启动服务器,可以测试了。不过因为没有建view页面,所以会出错,出现的错误类似
Missing template ./script/../config/..//app/view/hello.rhtml

4、view页面
在app/views/say/目录下增减hello.rhtml文件,然后输入
<html>

<body>
    <h1>
        Hello from rails!
    </h1>
</body>
</html>
测试页面代码,在刷新,即可出现你想要的页面。
只是到现在为止,所有的都是静态的数据。下面将对action,及view进行重写,添加动态数据。

4、action修改
看如何从action中传数据到view。

  def hello
    @time = Time.now
  end

页面
<p> It is now <%= @time %></p>
在action中定义了一个 @time, 在页面中就可以引用这个实例变量进行显示。

问题:这个没有对这个实例变量进行任何的访问控制,按照ruby的语法,实例变量在对象外面是不能访问的。

posted @ 2007-05-13 09:38 风人园 阅读(566) | 评论 (0)编辑 收藏

Ruby 基础语法

Ruby的注释

Ruby的注释是指从#开始到该行结束。

Ruby的表达式

Ruby的表达式包括下列内容(主要的)。

字符串
字符串是指被单引号(')或双引号(")括起来的部分。在用双引号括起来的字符串中,可以使用反斜杠(\)来指定转义字符,这同C语言是一样的。同时,以#{}括起来的表达式的结果也被置入其中。
数值
整数,浮点数。
数组/散列表
用[]括起来的一串表达式是数组,而以{}括起来的一串表达式是散列表。
散列表是一种可以把任意类型的对象都当成索引的数组。散列表有时也叫做哈希表或辞典。
变量/常数
Ruby中有常数和3种变量。变量和常数的区别在于第一个字符有所不同。
局部变量
变量名以小写英文字母开始。使用时,需要以赋值的方式进行初始化。
全局变量
以$开始。未初始化的值为nil。
实例变量
以@开始。未初始化的值为nil。
类变量
以@@开始。未初始化的值为nil。
类常数
以大写英文字母开始。未初始化的值为nil。
赋值
变量赋值方法如下。
变量=表达式
调用方法(函数)
执行对象固有操作(方法)的方法如下
表达式.方法名
表达式.方法名(表达式..)
在不引起混淆的情况下,可以省略参数的括号。
调用某方法执行主体self的方法时,可以省略最开始的表达式。
方法名
方法名(表达式..)
区分无参数的方法调用和局部变量的方法是看看有没有赋值过程。
操作符表达式
普通的算式可以用(基本上与C语言一样的)操作符来表示。但内部是把操作符当作方法调用(以操作符作为方法名)来处理的。

Ruby的语句

Ruby使用分号(;)或换行来分隔表达式,表达式串起来构成语句。语句的值取决于最后执行的表达式的值。

Ruby的流程控制结构

Ruby中可以使用下列流程控制结构。

  • if表达式 then代码块 [elsif表达式 then代码块]..[else代码块]end
  • case表达式when表达式..;代码块...[else代码块]end
  • while表达式;代码块end
  • for变量..in表达式;代码块end

if和while的意思与通常的语言基本相同。可以使用分号或换行来代替if代码块中的then。请注意Ruby使用elsif代替C语言中的else if。

case是把若干个比较归为一体的控制结构。

for可以使用循环把数组等的元素分别赋值给变量。

循环内可以使用下列语句。

break
中断循环(相当于C语言的break)。
next
开始下一次循环(相当于C语言的continue)。
redo
重新执行块的第一行。

常用的语句

介绍几个Ruby程序中常用的语句。这些语句是对象类的方法,可以在任何类中使用,就如同使用函数一样。

exit([status])
结束程序的运行。若为status指定了一个整数的话,该整数就成为结束status。默认的status值为0。
gets
从命令行参数指定的文件(群)中读取一行,然后把该行的内容作为字符串返回。若没有制定命令行参数的话,则从标准输入中读取。读取的字符串可以被赋值给变量$_。遇到文件结束返回nil(伪)。
while gets
...
end
上面就是典型的用法。
open(文件名[,mode])
打开文件。mode是字符串,就和C的fopen一样。省略时以读取模式打开。
print
输出函数。按顺序将参数输出到标准输出上。省略参数时则输出变量$_的值。

posted @ 2007-05-12 09:00 风人园| 编辑 收藏

ROR 入门

  安装和运行ruby

  Ruby支持多个操作系统平台,目前支持windows、linux和OS X,可以从ruby的官方网站下载ruby的安装程序和源代码:http://www.ruby-lang.org/en/downloads/。

  在windows下为了方便安装,建议下载ruby的安装版本。在安装完后,在ruby的安装目录中的bin目录中有两个可执行文件:ruby.exe和rubyw.exe。第一个将启动一个控制台运行ruby程序,而第二个不启动控制台运行ruby程序。让我们先编写一个简单的ruby程序吧!

  建一个文本文件:first_ruby.rb

  输入一条ruby语句:

puts Time.now.strftime("%Y-%m-%d %H:%M:%S")

  执行ruby first_ruby.rb

  如果输出类似"2006-10-07 19:20:20"的字符串,则说明ruby已经安装成功。

  注:ruby有一个eclipse插件非常不错,如果对其感性趣,可以使用eclipse的help->Software Updates->Find and Install功能通过http://updatesite.rubypeople.org/release进行安装。

  安装和运行rails

  Rails在windows下安装是非常容易的,只需要执行如下命令:

gem install rails --include-dependencies即可。

  注:gem命令在ruby安装目前的bin目录中,运行时要设置path路径。还有在执行这条命令时本机一定要连接internet。因为这条命令是通过internet来下载rails并安装的。

  在安装完rails后。执行下列命令

rails first_rails
cd first_rails
ruby script/server

  如果出现如图1的提示,则说明这些命令执行成功。

进入RubyonRails世界
图1 ruby script/server的提示信息

  然后在IE中输入http://localhost:3000。如果出现如图2的欢迎界面,则说明rails安装成功。


进入RubyonRails世界
图2 rails的欢迎界面

  Rails支持很多数据库,它默认支持的数据库是MySQL。由于使用MySQL数据库不需要安装驱动。因此,本文将使用MySQL数据库来讨论rails如何对数据库进行操作。

posted @ 2007-05-12 08:17 风人园 阅读(1137) | 评论 (1)编辑 收藏

仅列出标题
共10页: First 上一页 2 3 4 5 6 7 8 9 10 下一页