佳丽斯 加厚双人/单人秋冬被子暖冬 羊毛被芯羊毛柔丝被特价包邮 忧忧鱼冬外穿打底裤女秋冬厚长裤女裤加绒加厚高腰弹力铅笔裤靴裤 韩国代购2013新款 韩版秋冬休闲女时尚磨破口袋卫衣韩版学生装 潮

有时,退一步,能一口气进几步,只是这先退一步需要勇气和自信。

用心爱你,努力工作。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  70 随笔 :: 1 文章 :: 33 评论 :: 0 Trackbacks

#

<style>
#demo{overflow:hidden;width:120px;text-align:center;padding:10px;}
#
demo img{border:none;width:100px;height:100px;border:5px solid #f4f4f4}
#
enlarge_images{position:absolute;display:none;z-index:2;border:5px solid #f4f4f4}
</style>
<div id="demo" style="overflow:hidden;width:120px;text-align:center;padding:10px">
 
<img src="http://www.cnwebshow.com/uploadfile/web/uploadfile/200801/20080113054140200.jpg">
</div>
<div id="enlarge_images"></div>
<script>
var demo = document.getElementById("demo");
var gg = demo.getElementsByTagName("img");
var ei = document.getElementById("enlarge_images");
for(i=0; i<gg.length; i++){
 
var ts = gg[i];
 ts
.onmousemove = function(event){
  event 
= event || window.event;
  ei
.style.display = "block";
  ei
.innerHTML = '<img src="' + this.src + '" />';
  ei
.style.top  = document.body.scrollTop + event.clientY + 10 + "px";
  ei
.style.left = document.body.scrollLeft + event.clientX + 10 + "px";
 }
 ts
.onmouseout = function(){
  ei
.innerHTML = "";
  ei
.style.display = "none";
 }
 ts
.onclick = function(){
  window
.open( this.src );
 }
}
</script>

转自:http://www.phpweblog.net/fuyongjie/archive/2008/08/26/5649.html#5661
posted @ 2008-09-25 20:55 王生生 阅读(597) | 评论 (0)编辑 收藏

    用CSS 来布局很容易。如果你已经习惯用表格布局的话,起先会感觉比较困难。其实不难,只不过动机不同。
   
定位
    定位属性position用于定义一个元素是否absolute(绝对),relative(相对),static(静态),或者fixed(固定)。
    static值是元素的默认值,它会按照普通顺序生成,就如它们在HTML的出现一般。
    relative很像static,但可用top、right、bottom和left属性来偏移原始位置。
    absolute使元素从HTML普通流中分离出来,并把它送到一个完全属于自己的定位世界。在这个稍微疯狂的世界,这个绝对的元素可以放置到任何地方,只要设置了top、right、bottom和left的值。
    fixed的行为也很像absolute,但参考于浏览器窗口相对于页面而放置绝对的元素,所以,理论上,当页面滚动的时候,固定元素完全保持在浏览器视区中。为什么说理论上的?不为别的,在Mozilla和Opera中工作得很好,但IE不会。

浮动 float
    浮动将移动一个元素到同一线上的左边或者右边,而周围也会有内容浮动。
    浮动经常用在定位一个页面内的小型的元素.

posted @ 2008-09-24 15:27 王生生 阅读(174) | 评论 (0)编辑 收藏

    元标签对浏览器窗口中的内容不做任何事情,它们用在关于页面的像搜索引擎的归类目录信息中。
    元标签meta可以使用尽可能多次如你所需,包括内容属性content(必须的)、名称属性name和http-equiv属性。

    名称name属性可以是你喜欢的任何东西,通常使用的是作者author,关键词keywords和描述description。描述常被搜索引擎(比如Google,百度)用来在搜索结果中描述页面,而它本身也可能是元标签中最有用的应用。

    http-equiv属性取替名称name属性会产生HTTP数据头,它将会发送页面拥有的信息给服务器。随后内容属性content可以是content-type(类型)、expires(时效)、refresh(刷新,多长时间页面会自动刷新一次)以及set-cookie(设置cookie)。
<html>
   <head>
      <title>Title</title>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <meta name="description" content="This is my bloody exciting web page about air conditioners" /> ...
注意
    元标签之所以重要,是因为它们为搜索引擎所依赖和为页面建立概况。比如关键词keywords元数据就被广泛运用。如今,大部分的搜索引擎使用页面本身的内容,使大部分元数据对于阅读这个HTML的用户来说是没有什么作用的,除了转换信息以外。


posted @ 2008-09-24 14:48 王生生 阅读(144) | 评论 (0)编辑 收藏

    HTML只是赋予内容的手段,大部分HTML标签都有其意义(标签p创建段落,h1标签创建标题等等)的,然而span和div标签似乎没有任何内容上的意义,听起来就像一个泡沫做成的锤子一样无用。但实际上,与CSS结合起来后,它们被用得十分广泛。它们被用来组合一大块的HTML代码并赋予一定的信息,大部分用类属性class和标识属性id与元素联系起来。
    span和div的不同之处在于span是内联的,用在一小块的内联HTML中,而div(想想division是什么意思)元素是块级的(简单地说,它等同于其前后有断行),用于组合一大块的代码。
<div id="scissors">
   <p>This is <span class="paper">crazy</span></p>
</div>
    在实践中,div,特别是span不应该滥用,尽管有其他相左的意见。比如,你要强调单词“crazy”和加粗类“paper”,可能会用这样的代码:
<div id="scissors">
   <p>This is <strong class="paper">crazy</strong></p>
</div>
这是做法比再加一个span比较好。
你所需要记住的是,span和div 是“无意义”的标签。

posted @ 2008-09-24 14:44 王生生 阅读(138) | 评论 (0)编辑 收藏

你可以用大量的属性来改变文本的大小和形态,概括如下:
    1.字体族font-family
    这是字体本身的名称,如“Times News Roman”,“Arial”或者“Verdana”(又如“宋体”等中文字体名称--译者著)。
你指定的字体必须存在在用户的电脑上,所以在CSS使用字体会存在某种程度上的不确定性。有少量“安全”的字体(最常用的是Arial,Verdana和Times New Roman)。但你可以指定不止一种字体,只要用半角英文逗号,隔开就行。这样做的目的是如果用户的电脑上没有你指定的第一个字体,浏览器会逐遍寻找罗列的字体直到找到电脑上安装有的字体为止。这很有用因为不同的电脑有时侯有不同的安装字体。所以,例子font-family: arial, helvetica的目的就是用在PC(一般情况下有arial字体而没有helvetica字体)和Apple Mac上(一般有helvetica字体而没有arial字体)。
    注意:如果一个字体的名称超过一个单词,它应该用英文双引号括起来,如:font-family: "Times New Roman"。

    2.字体尺寸font-size
    定义字体的尺寸。必须小心──像标题一样的文本不应该是段落中的大字体而已,你应该使用标题标签(h1,h2 等)。甚至,在练习中,你可以使段落文本字体尺寸大于标题(不推荐使用,如果你明智的话)。

    3.字体加粗font-weight
    这用来声明文本粗细与否。实际应用中一般只有两种形式:font-weight: bold(粗体)和font-weight: normal(普通)。在理论上,它们的值有bolder(更粗),lighter(更细),100,200,300,400,500,600,700,800或者900,但许多浏览器会摇摇头,说:“我不认为这样”,所以使用bold和normal是比较安全的。

    4.字体样式font-style
    这定义文本正斜与否。可以这样使用 font-style: italic(倾斜)或者font-style: normal(正常)。

    5.文本装饰text-decoration
    这用来声明文本是否有划线。可以这样使用:
    text-decoration: overline──文本上面的划线。
    text-decoration: line-through──穿过文本的删除线。
    text-decoration: underline──这应该只使用在连接中,因为用户一般认为连接才有下划线。 这个属性通常用来装饰连接,而         text-decoration: none则是表示没有任何划线。

    6.文本转换text-transform
    这可以转换文本的大小写。
    text-transform: capitalize把每个单词的首字母转换成大写。 text-transform: uppercase把所有的字母都转换成大写。 text-transform: lowercase把所有的字母都转换成小写。 text-transform: none?你自己试一试啦。

    7.文本间距
    字母间隔letter-spacing和文本间隔 word-spacing属性分别用在字母间和单词间的距离。它们的值可以是长度或者默认的普通normal。
line-height属性为比如段落等元素设置行高,它并不改变字体的尺寸。它的值可以是长度,百分比或者默认的normal。

    8.文本水平对齐
    text-align属性将对元素里的文本向左、右、中间或者两端对齐,自然,它们的值分别left(左)、 right(右)、center(中间)或者 justify(两端)。

    9.文本缩进
    text-indent属性依据你设置的长度或者百分比值对文本段落的第一行进行缩进。在印刷中经常会用到这样的格式,然而在像网页这样的电子媒体中并不常用。


posted @ 2008-09-24 14:38 王生生 阅读(243) | 评论 (0)编辑 收藏

呵呵,这两天项目比较急,事情也比较多,所以没有及时更新。
上一回简单介绍了代理机制,通过创建LogBeforeAdvice来实现。通过实现MethodBeforeAdvice接口,会在目标对象的方法执行之前被呼叫。当然也可以通过实现AfterReturningAdvice,使得目标对象的方法在执行之后被调用。
同样创建LogAfterAdvice类,实现AfterReturningAdvice接口。
lib包下载:http://www.ziddu.com/download/3555992/SpringAndaop.rar.html

(1)LogAfterAdvice.java

package com.proxy;

import java.lang.reflect.*;
import java.util.logging.Logger;
import java.util.logging.Level;
import org.springframework.aop.AfterReturningAdvice;

public class LogAfterAdvice  implements AfterReturningAdvice{

 private Logger logger=Logger.getLogger(this.getClass().getName());
 public void afterReturning(Object object,Method method,Object[] args,Object target) throws Throwable
 {
  logger.log(Level.INFO,"LogAfterAdvice mehtod ends "+method);
 }

}
(2)advice-config.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="logBeforeAdvice" class="com.proxy.LogBeforeAdvice" />
    <bean id="logAfterAdvice" class="com.proxy.LogAfterAdvice" />
 <bean id="helloSpeaker" class="com.proxy.HelloSpeaker" />
 
 <bean id="helloProxy"
  class="org.springframework.aop.framework.ProxyFactoryBean"><!--建立代理对象-->
  <property name="proxyInterfaces"><!--代理接口-->
   <value>com.proxy.IHello</value>
  </property>
  <property name="target"><!--代理目标-->
   <ref bean="helloSpeaker"/>
  </property>
  <property name="interceptorNames"><!--代理实现类-->
   <list>
    <value>logBeforeAdvice</value>
    <value>logAfterAdvice</value>
   </list>
  </property>
 </bean>
 
</beans>

这样就实现了目标对象的方法在执行之后被调用。


同样,在方法执行前后调用目标对象的方法也可以不通过上面的这种方式(毕竟实现两个接口比较麻烦),可以直接通过实现MethodInterceptor接口,达到目的。
如LogInterceptor类便实现了这样的接口,如下
(3)LogInterceptor.java

package com.proxy;

import java.util.logging.Logger;
import java.util.logging.Level;
import org.aopalliance.intercept.*;

public class LogInterceptor  implements MethodInterceptor{

 private Logger logger=Logger.getLogger(this.getClass().getName());

 public Object invoke(MethodInvocation Invocation) throws Throwable {
  
  logger.log(Level.INFO,"LogInterceptor method starts..."+Invocation.getMethod());
  
  Object result=null;
  
  try
  {
   result=Invocation.proceed();
  }
  finally
  {
   logger.log(Level.INFO,"LogInterceptor method ends..."+Invocation.getMethod());
  }
  return result;
 }

}

(4)advice-config.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="logInterceptor" class="com.proxy.LogInterceptor" />
 <bean id="helloSpeaker" class="com.proxy.HelloSpeaker" />
 
 <bean id="helloProxy"
  class="org.springframework.aop.framework.ProxyFactoryBean"><!--建立代理对象-->
  <property name="proxyInterfaces"><!--代理接口-->
   <value>com.proxy.IHello</value>
  </property>
  <property name="target"><!--代理目标-->
   <ref bean="helloSpeaker"/>
  </property>
  <property name="interceptorNames"><!--代理实现类-->
   <list>
    <value>logInterceptor</value>
   </list>
  </property>
 </bean>
 
</beans>

通过实现MethodInterceptor接口,同样实现了这样的功能。



 

posted @ 2007-10-31 19:14 王生生 阅读(951) | 评论 (0)编辑 收藏

上一笔记,介绍了代理机制,这一节介绍Spring是如何实现代理。
通过一个例子来说明。
包下载地址:
http://www.ziddu.com/download/3555992/SpringAndaop.rar.html

(1)创建LogBeforeAdvice类(实现MethodBeforeAdvice接口,会在目标对象的方法执行之前被呼叫)

package com.proxy;

import java.lang.reflect.*;
import java.util.logging.Logger;
import java.util.logging.Level;
import org.springframework.aop.MethodBeforeAdvice;;

public class LogBeforeAdvice  implements MethodBeforeAdvice{

 private Logger logger=Logger.getLogger(this.getClass().getName());
 public void before(Method method,Object[] args,Object target) throws Throwable
 {
  logger.log(Level.INFO,"mehtod starts "+method);
 }
}


(2)创建配置文件advice-config.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="logBeforeAdvice" class="com.proxy.LogBeforeAdvice" />
 <bean id="helloSpeaker" class="com.proxy.HelloSpeaker" />
 
 <bean id="helloProxy"
  class="org.springframework.aop.framework.ProxyFactoryBean"><!--建立代理对象-->
  <property name="proxyInterfaces"><!--代理接口-->
   <value>com.proxy.IHello</value>
  </property>
  <property name="target"><!--代理目标-->
   <ref bean="helloSpeaker" />
  </property>
  <property name="interceptorNames"><!--代理实现类-->
   <list>
    <value>logBeforeAdvice</value>
   </list>
  </property>
 </bean>
 
</beans>
(3)测试类SpringAOPDemo

package com.proxy;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class SpringAOPDemo {
 public static void main(String[] args)
 {
  //读取配置文件
  ApplicationContext context=new FileSystemXmlApplicationContext("advice-config.xml");
  IHello helloProxy=(IHello)context.getBean("helloProxy");
  helloProxy.hello("ducklyl");
  
 }
}

运行测试类,结果如下:
Hello,ducklyl

posted @ 2007-10-28 17:47 王生生 阅读(966) | 评论 (1)编辑 收藏

接下来学习有关AOP,首先了解有关代理机制(Spring实现AOP的一种方式)。代理分为两种:静态代理与动态代理。
通过一个例子来了解静态代理。
 Lib包下载:
http://www.ziddu.com/download/3555992/SpringAndaop.rar.html
(1)一个简单的接口IHello

package com.proxy;
/**
 * 接口
 *
 * **/
public interface IHello {
 public void hello(String name);

}
(2)实现类HelloSpeaker

package com.proxy;

public class HelloSpeaker implements IHello{

 public void hello(String name) {
  System.out.println("Hello,"+name);
  
 }

}
(3)代理类HelloProxy

package com.proxy;
import java.util.logging.*;
/**
 * 静态代理类,代理真正的实现类HelloSpeaker来执行
 *
 * */
public class HelloProxy implements IHello{

 private Logger logger=Logger.getLogger(this.getClass().getName());
 
 private IHello helloObject;//接口声明

 //构造函数
 public HelloProxy(IHello helloObject)
 {
  this.helloObject=helloObject;
 }
 //接口实现方法
 public void hello(String name)
 {
  log("hello methods starts...");
  helloObject.hello(name);
  log("hello methods ends...");
 }
 private void log(String msg)
 {
  logger.log(Level.INFO,msg);
 }

}

(4)测试类ProxyDemo

package com.proxy;

public class ProxyDemo {
 public static void main(String[] args)
 {
  //静态代理模式
  HelloProxy proxy=new HelloProxy(new HelloSpeaker());
  proxy.hello("ducklyl");
 }

}
运行测试类,结果为:
Hello,ducklyl
2007-10-28 10:52:26 com.proxy.HelloProxy log
信息: hello methods starts...
2007-10-28 10:52:27 com.proxy.HelloProxy log
信息: hello methods ends...



接下来介绍动态代理
(1)创建动态代理类LogHandler

package com.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.logging.*;
/**
 *
 * 动态代理类
 * **/

public class LogHandler implements InvocationHandler {

 private Logger logger = Logger.getLogger(this.getClass().getName());

 private Object delegate;

 public LogHandler()
 {
 }
 
 public Object bind(Object delegate) {
  this.delegate = delegate;
  log("bind starts...");
  return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),
    delegate.getClass().getInterfaces(), this);
 }

 public Object invoke(Object proxy, Method method, Object[] args)
   throws Throwable {
  Object result = null;
  try {
   log("method starts..." + method);
   result = method.invoke(delegate, args);
   log("method ends..." + method);
  } catch (Exception e) {
   log(e.toString());
  }
  return null;
 }

 private void log(String msg) {
  logger.log(Level.INFO, msg);
 }

}
(2)创建测试类ProxyTest

package com.proxy;

public class ProxyTest {
 public static void main(String[] args)
 {
  LogHandler logHandler=new LogHandler();
  //logHandler代理HelloSpeaker实例,调用hello
  IHello helloProxy=(IHello)logHandler.bind(new HelloSpeaker());
  helloProxy.hello("ducklyl");
 }

}

运行测试类,结果为:
Hello,ducklyl
2007-10-28 11:24:59 com.proxy.LogHandler log
信息: bind starts...
2007-10-28 11:24:59 com.proxy.LogHandler log
信息: method starts...public abstract void com.proxy.IHello.hello(java.lang.String)
2007-10-28 11:24:59 com.proxy.LogHandler log
信息: method ends...public abstract void com.proxy.IHello.hello(java.lang.String)


posted @ 2007-10-28 11:00 王生生 阅读(956) | 评论 (0)编辑 收藏

这次介绍有关资源相关的接口:org.springframework.context.MessageResource.而类org.springframework.context.ApplicationContext实现了该接口.,您可以通过getMessage()的方法来取得资源文件,从而实现国际化消息。
通过一个例子来说明。
导入Spring所需的包:commons-logging.jar,spring.jar 。(日志包和Spring包)
包下载地址:
http://www.ziddu.com/download/3555993/Spring.rar.html

(1)创建resource-config.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="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
 <property name="basename">
    <value>duck</value> <!-- 资源文件名前缀 -->
 </property>
</bean>

</beans>
(2)创建资源文件duck_en_US.properties,duck_zh_CN.properties两个文件
duck_en_US.properties内容为:
ducklyl=User {0} login at {1}

duck_zh_CN.properties内容(经过JDK工具native2ascii)编码转换为:
ducklyl=\u7528\u6237 {0} \u4e8e {1} \u767b\u9646

(3)创建测试类

package com.resource;

import java.util.*;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;


public class SpringTest {
 public static void main(String[] args)
 {
 //读取配置文件
 ApplicationContext context=new FileSystemXmlApplicationContext("src/com/resource/resource-config.xml");
 
 //传入两个参数,替换资源文件{0},{1}
 String[] para=new String[]{"王生生",Calendar.getInstance().getTime().toString()};
 
 System.out.println(context.getMessage("ducklyl", para,Locale.US));
 System.out.println(context.getMessage("ducklyl", para,Locale.CHINA));
 
}
}

如果以上配置正确,运行结果为:

User 王生生 login at Thu Oct 25 19:15:59 CST 2007
用户 王生生 于 Thu Oct 25 19:15:59 CST 2007 登陆

posted @ 2007-10-25 19:28 王生生 阅读(974) | 评论 (1)编辑 收藏

Spring提供了一个BeanFactoryPostProcessor接口的实现类:CustomEditorConfigurer。这个类可以实现java.beans.PropertyEditor接口的类,并将字符串值转换为指定类型的对象。
通过一个简单的例子来说明。
导入Spring所需的包:commons-logging.jar,spring.jar 。(日志包和Spring包)
包下载地址:
http://www.ziddu.com/download/3555993/Spring.rar.html
或者http://www.blogjava.net/Files/ducklyl/Spring.rar

(1)创建User 类

package com.editor;

public class User {
 private String name;
 private int number;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getNumber() {
  return number;
 }
 public void setNumber(int number) {
  this.number = number;
 }

}

(2)创建HelloBean 类

package com.editor;

public class HelloBean {
 private String helloWord;
 private User user;
 public String getHelloWord() {
  return helloWord;
 }
 public void setHelloWord(String helloWord) {
  this.helloWord = helloWord;
 }
 public User getUser() {
  return user;
 }
 public void setUser(User user) {
  this.user = user;
 }


}
(3)创建UserEditor 类

package com.editor;
import java.beans.PropertyEditorSupport;

public class UserEditor extends PropertyEditorSupport{
 public void setAsText(String text)
 {
  String[] strs=text.split(",");
  int number=Integer.parseInt(strs[1]);
  
  User user=new User();
  user.setName(strs[0]);
  user.setNumber(number);
  
  setValue(user);
 }

}


(4)在类路径下创建property-config.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="EditorConfigBean"
  class="org.springframework.beans.factory.config.CustomEditorConfigurer">
  <property name="customEditors"><!--CustomEditorConfigurer类会加载"customEditors"属性设定的map-->
   <map>
    <entry key="com.editor.User">
     <bean id="userEditor" class="com.editor.UserEditor" />
    </entry>
   </map>
  </property>
 </bean>

 <bean id="helloBean" class="com.editor.HelloBean">
  <property name="helloWord">
   <value>Hello!</value>
  </property>
  <property name="user">
   <value>ducklyl,123456</value>
  </property>
 </bean>

</beans>
(5)创建测试类

package com.editor;

import org.springframework.context.*;
import org.springframework.context.support.*;


public class SpirngTest {
 public static void main(String[] args)
 {
  //读取配置文件
  ApplicationContext context=new FileSystemXmlApplicationContext("property-config.xml");
  //获取id="helloBean"对象
  HelloBean hello=(HelloBean)context.getBean("helloBean");
  //调用helloBean对象getHelloWord()方法
  System.out.println(hello.getHelloWord());
  System.out.println("Name:"+hello.getUser().getName());
  System.out.println("Number:"+hello.getUser().getNumber());
 }

}
如果以上正确设置,运行结果为:
Hello!
Name:ducklyl
Number:123456

posted @ 2007-10-24 19:32 王生生 阅读(1276) | 评论 (1)编辑 收藏

仅列出标题
共7页: 上一页 1 2 3 4 5 6 7 下一页 
森露2013新款豹纹打底衫 高领 女 长袖 修身长袖t恤女 加绒加厚冬 2013春秋新款女装 潮修身大码长袖小西装外套女 韩版中长款小西装 忧忧鱼2013秋冬新款直筒裤女显瘦长裤加绒黑色休闲裤修身西裤女裤