当柳上原的风吹向天际的时候...

真正的快乐来源于创造

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks

#

网络上有很多网页父子窗口通信的文章,自己也曾写过,现在看来,问题应该简单化了,没有那么复杂。
只需要:
opener+函数+隐藏域   即可,这里的函数和隐藏域都是父窗口的。

比如说,子窗口要取父窗口的数据,可以在父窗口中做一个隐藏域,打开子窗口前把值存储好,再写一个函数来取得隐藏域中的值,子窗口中就能用opener+函数名来取得这个值了。
反过来,父窗口要取子窗口的数据,可以在父窗口中做一个函数,子窗口中数据就绪后直接opener+函数名调用这个函数即可,参数就是数据。

这样做,省去了很多麻烦。如果隐藏域不允许,那么再考虑别的方法不迟。
posted @ 2012-05-14 22:43 何杨 阅读(296) | 评论 (0)编辑 收藏

通常的网页编程原则是把形式,内容和表现分开,这样页面组件的事件处理就转移到了
window.onload或是Dom.onready中,写在一起。

有时,如果对页面组建进行删除或是更改id,会导致js出现错误,找不到组件,结果下面的正确js也无法执行了。
在进行页面调整阶段这个问题很常见。

当然,修改过来是正确的做法,另外我们还可以通过组件检测来做,这样的好处是页面调整后,js无需改变。
以下代码供参考:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 
<head>
  
<title> New Document </title>
  
<meta name="Generator" content="EditPlus">
  
<meta name="Author" content="">
  
<meta name="Keywords" content="">
  
<meta name="Description" content="">
 
</head>

 
<body>
  
<button id="btn1">BTN1</button>
  
<br/>
   
<button id="btn2">BTN2</button>
 
</body>
</html>

<script type="text/javascript">
<!--

if(document.getElementById("btn1")){
    document.getElementById(
"btn1").onclick=function(){
        alert(
1);
    };
}

if(document.getElementById("btn2")){
    document.getElementById(
"btn2").onclick=function(){
        alert(
2);
    };
}

//-->
</script>
posted @ 2012-05-14 14:17 何杨 阅读(235) | 评论 (0)编辑 收藏


<html>
    
<head>

        
<title>123</title>    
        
<style>
        
</style>        

    
</head>
    
<body>
        
<div>123</div>
        
<div>456</div>

        
<script>
            
            
function test(object){
              
var tag = object.innerHTML;
              alert(tag)
            }
            
var divs = document.getElementsByTagName('div');
            
for(var i = 0, len = divs.length; i < len; i++){
                divs[i].onclick 
= function(){
                    test(
this)
                }
            }
            
        
</script>
    
</body>
</html>
posted @ 2012-04-28 10:20 何杨 阅读(283) | 评论 (0)编辑 收藏

ApplicationContext context=ContextLoader.getCurrentWebApplicationContext();

当Spring启动起来后,取得上下文可以如此处理,上述代码适宜放在静态构造子中,然后将值传给一个静态变量。
posted @ 2012-04-20 17:31 何杨 阅读(380) | 评论 (0)编辑 收藏

在Web程序中,url重写后后会出现CSS失效的情况,即页面元素都在,但给它们加上的样式都无效了。

原因:
一般是加载CSS文件的路径在翻页后处于错误的位置,这时可以用FireFox打开网页,查看网页源码,再点击CSS下方的链接,看是否能链接到CSS文件,链接不到是报错的。

处置:
在html开始前加上如下代码:
<%  
    
String path = request.getContextPath();  
    
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
%>
<html>
    
<head>
        
<base href="<%=basePath%>">
        
<title>XXX</title>

    
</head>

接下来其它的CSS,JS,IMG写好相对地址就好了。
posted @ 2012-04-20 12:04 何杨 阅读(664) | 评论 (0)编辑 收藏

工程下载本工程适用于MyEclipse

WAR文件下载本War已经与WAS6.1测试过

一些重要的代码
appctx.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    
<bean id="userService" class="com.service.UserService">
    
</bean> 

</beans>

UserController.java
package com.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.domain.User;
import com.service.UserService;

@Controller
@RequestMapping(
"/user")
public class UserController{
    @Autowired
    
private UserService userService;
    
    
    @RequestMapping(
"/register")
    
public ModelAndView createUser(User user){
        userService.register(user);
        
        ModelAndView mav
=new ModelAndView();
        
        mav.setViewName(
"registerOk");
        mav.addObject(user);
        
        
return mav;
    }
    
    @RequestMapping(
"/login")
    
public ModelAndView login(User user){
        userService.login(user);
        
        ModelAndView mav
=new ModelAndView();
        
        mav.setViewName(
"loginOk");
        mav.addObject(user);
        
        
return mav;
    }
}

User.java
package com.domain;


public class User{
    
private String userName;
    
    
private String userPswd;
    
    
public String getUserName() {
        
return userName;
    }
    
public void setUserName(String userName) {
        
this.userName = userName;
    }
    
public String getUserPswd() {
        
return userPswd;
    }
    
public void setUserPswd(String userPswd) {
        
this.userPswd = userPswd;
    }
}

UserService.java
package com.service;

import com.domain.User;


public class UserService{
    
public boolean login(User user){
        
return true;
    }
    
    
public boolean register(User user){
        
return true;
    }
}
spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context
="http://www.springframework.org/schema/context"
    xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd   
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"
>

    
<context:annotation-config />
    
    
<!-- 扫描 com.controller下标记了@Controller注解的类 -->
    
<context:component-scan base-package="com.controller" />
    
    
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
    
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

    
<!-- 视图名称解析器 p:prefix前缀是路径,p:suffix是扩展名-->
    
<bean
        
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
        p:prefix
="/" p:suffix=".jsp" />

    
<bean id="multipartResolver"
        class
="org.springframework.web.multipart.commons.CommonsMultipartResolver"
        p:defaultEncoding
="utf-8" />
</beans> 

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>
    
<display-name>SpringMVCSample01</display-name>

    
<welcome-file-list>
        
<welcome-file>index.jsp</welcome-file>
    
</welcome-file-list>

    
<context-param>
        
<param-name>contextConfigLocation</param-name>
        
<param-value>classpath:appctx.xml</param-value>
    
</context-param>
    
<listener>
        
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    
</listener>

    
<servlet>
        
<servlet-name>spring</servlet-name>
        
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        
<load-on-startup>1</load-on-startup>
    
</servlet>
    
<servlet-mapping>
        
<servlet-name>spring</servlet-name> 
        
<url-pattern>*.html</url-pattern>
    
</servlet-mapping>
</web-app>

login.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    
<head>
        
<title>登录页面</title>
    
</head>

    
<body>
        登录
<br/>
        
<form method="post" action="<c:url value="/user/login.html"/>">
            
<input type="text" name="userName"/><br/>
            
<input type="password" name="userPswd"/><br/>
            
<input type="submit" name="提交">
        
</form>
    
</body>
</html>
loginOk.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    
<head>
        
<title>登录成功页面</title>
    
</head>

    
<body>
        用户${user.userName}登录成功
    
</body>
</html>
posted @ 2012-04-17 16:51 何杨 阅读(2821) | 评论 (1)编辑 收藏

时不时有人说ImSample下载失效了,搞了个新地址,有要的自己去下载吧。
http://www.blogjava.net/Files/heyang/IMSample2012-4-11.rar
posted @ 2012-04-10 14:01 何杨 阅读(449) | 评论 (5)编辑 收藏

下载地址:
posted @ 2012-03-27 13:36 何杨 阅读(286) | 评论 (0)编辑 收藏

     摘要:                 IBM GDC DL Teambiz后台开发规范 (2012年3月9日修订版)                 撰写:何杨 2012年3月9日   &nb...  阅读全文
posted @ 2012-03-14 10:25 何杨 阅读(458) | 评论 (0)编辑 收藏

 

 

 

 

 

 

Teambiz中前台开发规范

 

 

 

 

 

 

 

作者:何杨

撰写日期:2012年3月9日

版本:1.00

更新日期:  

 

 

第一部分:规范目的

为了提高团队协作效率, 提高前台页面文件的可读性,可维护性和一致性,从而方便前后台人员维护管理, 输出高质量的文档, 特制订此文档.

本规范文档一经讨论确认, 前端开发人员必须按本文档规范进行前台页面开发. 如在执行过程中,文档确有不合时宜的地方,可及时提出, 经会议讨论后决定可以更改此文档后再执行。

第二部分:基本准则

符合web标准, 语义化html, 结构表现行为分离, 兼容性优良. 页面性能方面, 代码要求简洁明了有序, 尽可能的减小服务器负载, 保证最快的解析速度.

程序员应该书写项目组所有人都可以看的懂的代码. 简洁易懂是一种美德. 在你们编写程序时必须时刻为用户着想, 为服务器着想.

第三部分:前台分离制度

我们认为,前台页面混乱的根源之一在于一个页面担负了太多的任务。因此,必须把页面的结构,样式,行为三部分解构开来,这三部分的命名如下:

类型

名称

担负任务

说明

JSP

*.jsp

网页的结构

以下简称JSP

CSS

style.css

网页样式

以下简称CSS

JS

javascript.jsp

网页行为

以下简称JS

 

第四部分:JSP文件书写规范

1. 文档类型声明及编码: 统一为html5声明类型<!DOCTYPE html>; 编码统一为<meta charset="utf-8" />, 书写时利用IDE实现层次分明的缩进;

2. 非特殊情况下样式文件必须外链至<head>...</head>之间;非特殊情况下JavaScript文件必须外链至页面底部; 

3. 引入样式文件或JavaScript文件时, 须略去默认类型声明, 写法如下:

<link rel="stylesheet" href="..." />

<style>...</style>

 

<script src="..."></script>

4. 所有编码均遵循xhtml标准, 标签 & 属性 & 属性命名 必须由小写字母及下划线数字组成, 且所有标签必须闭合, 包括br (<br />), hr(<hr />)等; 属性值必须用双引号包括;

5. 充分利用无兼容性问题的html自身标签, 比如span, em, strong, optgroup, label,等等; 需要为html元素添加自定义属性的时候, 首先要考虑下有没有默认的已有的合适标签去设置, 如果没有, 可以使用须以"data-"为前缀来添加自定义属性,避免使用"data:"等其他命名方式;

6.结构化JSP,示例如下

<div id=”mainMenu”>

<ul>

<li><a href=”#”>首页</a></li>

<li><a href=”#”>介绍</a></li>

<li><a href=”#”>服务</a></li>

</ul>

</div>

很多编译器提供了格式化的工具对代码整形,希望多加利用.如果机器整形效果不如手动整形,请进行手动整形.

6. 尽可能减少冗余的div嵌套, 如<div class="box"><div class="welcome">欢迎访问XXX, 您的用户名是<div class="name">用户名</div></div></div>完全可以用以下代码替代: <div class="box"><p>欢迎访问XXX, 您的用户名是<span>用户名</span></p></div>;

9. 书写链接地址时, 必须避免重定向,例如:href="http://www.baidu.com/", 即须在URL地址后面加上“/”;

10. 在页面中尽量避免使用style属性,即style="…"; 如果需要初始化某元素的style属性,请在CSS中设置或是在JS函数window.onload中设置。

11. 能以背景形式呈现的图片, 尽量写入css样式中;

12. 给区块代码及重要功能(比如表格展现)加上注释, 方便后台添加功能;

第四部分:CSS文件书写规范

1. 文件编码统一为utf-8;

2.结构化CSS,如下

html,body {

            height:100%;

            margin:0px;

            font-size:12px;

}

body{

            margin-top: 5px;

            margin-bottom: 5px;

            margin-left: 5px;

            margin-right: 5px;

            text-align: center;

            font-size: 12px;       

            font-family:"宋体","Tahoma";

            background:#ffffff;             

            overflow-y:hidden;

}

img{

            border:0px;  

}

#header{

            margin:0px;

            padding:0px;

            border:0px solid #00ff00; 

            width:100%;

            height:75px;

            overflow:hidden;

}

2. 协作开发及分工: 架构师会根据各个模块, 同时根据页面相似程序, 事先写好大体框架文件, 分配给前端人员实现内部结构&表现&行为; 共用css文件style.css由架构师书写, 协作开发过程中, 每个页面请务必都要引入,此文件不可随意修改;

3. class与id的使用: id是唯一的并是父级的, class是可以重复的并是子级的, 所以id仅使用在大的模块上, class可用在重复使用率高及子级中;

4. class与id命名:命名要语义化,简明化,尽量使用简易的单词组合; 避免使用中文拼音,以下是约定俗成的一些命名例子,请多加利用:

名称

Id

名称

Id

页 眉

header

内 容

content

容 器

container

页 脚

footer

版 权

copyright

导 航

menu

主导航

mainMenu

子导航

subMenu

标 志

logo

标 语

banner

标 题

title

侧边栏

sidebar

搜 索

search

按 钮

btn

登 录

login

链 接

link

常用类的命名应尽量以常见英文单词为准,做到通俗易懂,并在适当的地方加以注释。对于二级类/ID命名,则采用组合书写的模式,后一个单词的首字母应大写:诸如“搜索框”则应命名为“searchInput”、“搜索图标”命名这“searchIcon”、“搜索按钮”命名为“searchBtn”。

5. css属性书写顺序, 建议遵循 布局定位属性-->自身属性-->文本属性-->其他属性. 此条可根据自身习惯书写, 但尽量保证同类属性写在一起. 属性列举: 布局定位属性主要包括: margin & padding & float(包括clear) & position(相应的 top,right,bottom,left) & display & visibility & overflow等; 自身属性主要包括: width & height & background & border; 文本属性主要包括: font & color & text-align & text-decoration & text-indent等;其他属性包括: list-style(列表样式) & vertical-vlign & cursor & z-index(层叠顺序)  & zoom等. 我所列出的这些属性只是最常用到的, 并不代表全部;

6. 书写代码前, 考虑并提高样式重复使用率;

7. 充分利用html自身属性及样式继承原理减少代码量, 比如:

<ul class="list"><li>这儿是标题列表<span>2010-09-15</span></ul>

定义

ul.list li{position:relative} ul.list li span{position:absolute; right:0}

即可实现日期居右显示.

8. 必须为大区块样式添加注释, 小区块适量注释;

9. 代码缩进与格式: 建议单行书写;

第五部分:JS文件书写规范

1. 文件编码统一为utf-8, 书写过程过, 每行代码结束必须有分号; 原则上所有功能均根据XXX项目需求原生开发, 以避免网上down直接宕下来的代码造成的代码污染;

2. 库引入: 原则上仅引入prototype库, 若需引入第三方库, 须与团队其他人员讨论决定;

3. 变量命名: 驼峰式命名. 原生JavaScript变量要求是纯英文字母, 首字母须小写, 如counter;另, 要求变量集中声明, 避免全局变量.

4. 类命名: 首字母大写, 驼峰式命名. 如 Counter;

5. 函数命名: 首字母小写驼峰式命名. 如add(count);

6. 命名语义化, 尽可能利用英文单词或其缩写;

7. 后期优化中, JavaScript非注释类中文字符须转换成unicode编码使用, 以避免编码错误时乱码显示;

8. 代码结构明了, 加适量注释. 提高函数重用率;

第六部分:注释规范

1. html注释: 注释格式 <!--这儿是注释-->, '--'只能在注释的始末位置,不可置入注释文字区域;

2. css注释: 注释格式 /*这儿是注释*/;

3. JavaScript注释, 单行注释使用'//这儿是单行注释' ,多行注释使用 /* 这儿有多行注释 */;示例:

/*****************************************************

* 将数组arr转化成为tableDatas

* 此举是为了更方便解析数据

* 何杨,2012年2月7日14:03:43

*****************************************************/

function getTableDatasFromArr(arr){

            var tableDatas=new Array();         

            // 遍历这个数组

            for(var i=0;i<arr.length;i++){

                        var node=arr[i];

                        var arr2=new Array();

                        for(var j=0;j<node.childNodes.length;j++){

                                    var child=node.childNodes.item(j);                                            

                                    arr2.push(child.childNodes[0].nodeValue);

                        }

                        // 向表格中添加行

                        tableDatas.push(arr2);

            }          

            return tableDatas;

}

posted @ 2012-03-14 10:24 何杨 阅读(220) | 评论 (0)编辑 收藏

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