2008年12月30日星期二

开始学习struts2

开始学习struts2今天第一次感觉到经济危机在我身边了,部门现在没有在做的项目了
经济危机中,赶紧为自己充充电,好到时候柳暗花明又一村,哈哈
学struts2
据说struts2基于webwork,基本上跟struts1没啥关系,如果有webwork的经验上手会很迅速
我没接触过webwork,就知道有这么个东西
今儿开始第一个struts
见过好多blog写有struts2的入门步骤,俺也写一个,为自己造个轮子,加深印象。
首先下载struts2的jar包,到http://struts.apache.org/,右上角有个struts2的链接,今天下到的是
struts2的2.0.14,昨天在javaeye上看到发布Struts2.1.3 发布了,只是主页还没看到,不止一次听大拿们说过不要追求新版本,哈哈
下载后的目录:app--struts的例子
              docs-doc文档
              lib-struts的jar包或依赖包
              src-源码
HelloWorld:

1、index.jsp
耳目一新的是,不需要用到struts html标签,这只是猜测,或许例子过于简单?今天工作中还感觉struts1的html标签真是不好用,想加个class、maxlength、size都不好使,让我很是郁闷。希望在继续学习中真的能耳目一新。
struts的action惯例后缀名改成了.action,不再像struts1的.do了,说是延续到webwork的惯例。
下面的页面代码submit的时候将提交到login.action
index.jsp
<body>
<form action="login.action" method="post">
      username:<input type="text" name="username"/>
      password:<input type="password" name="password"/>
      <input type="submit" value="submit"/>
</form>
</body>
2、Action类
struts2的Action可是大进步,不用再继承任何类,实现了松耦合,它好像将struts1的ActionForm融合了进来,据说 struts2不再用ActionForm,页面上对应的字段写在了Action中,struts2框架会自动调用get/set方法,在我印象里 struts1中的Action对象不是线程安全的,会在不同线程间重用,所以谨慎在里面定义字段,在这看来struts2的Action不是这样的,只 是猜测
package com.mystart.action;

public class LoginAction {

    private String username;
    private String password;
  
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
  
    public String execute() throws Exception{
        return "success";
    }
}

3、jsp、java类都定义了,现在要它们联系起来-struts配置文件
新的struts配置文件有个package包的概念,还没闹明白这个package的详细用法,有待继续深入
<action>标签有变化,type变成了class,path变成了name,struts1中name属性是制定ActionForm的,现在ActionForm没有了
forward变成了result,result的默认name=success

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">


<struts>
    <package name="struts" extends="struts-default">
        <action name="login" class="com.mystart.action.LoginAction">
            <result name="success">/result.jsp</result>
        </action>
    </package>

</struts>

4、最后启动struts2,配置web.xml
struts1的web.xml配置是放在<servlet>中,也就是是一个servlet
struts2变成了一个过滤器Filter
struts1中<url-pattern>被配置成拦截.do的链接
struts2变成了拦截所有链接 /*

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  
<filter>
      <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

以上是驴了个struts的视频教程,今儿看了第一节课,看完后做了一下总结,里面有一些自己的理解,有不对的地方请兄弟们指正,别光光说我是猪,猪也要进步啊,嘿嘿,每一步都有疑问,明天带着问题接着看下一节,睡觉去。

2008年12月29日星期一

自定义Annotation

自定义Annotation
早就知道jdk5加了新特性Annotation,但是没研究过,前几天公司培训,有一部分是介绍jdk5新特性的,一个是注解一个泛型
今儿复习一下注解
    //用@Deprecated声明该方法不建议使用
    @Deprecated public void doSomething1(){
        Map map = new HashMap();
        map.put("some", "thing");
        System.out.println(map);
    }
   
    //用@SuppressWarnings声明不再进行类型检查
    @SuppressWarnings(value={"unchecked"})
    public void doSomething2(){
        Map map = new HashMap();
        map.put("some", "thing");
    }


写一个自定义注解先
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
//要在运行时使用这个注解,必须声明成RUNTIME
Annotation分为三种级别:RUNTIME、CLASS、SOURCE
@Retention(RetentionPolicy.RUNTIME)
public @interface SomeAnnotation{
    String value();
    String name();
}

下面来使用这个自定义注解:
import java.lang.reflect.Method;
public class AnnotationTest {
   
    @SomeAnnotation(value="value1",name="name1")
    public void doSomething3(){
       
    }
   
    public static void main(String[] args){
   
        Class<AnnotationTest> c = AnnotationTest.class;
        try {
            //利用反射得到方法doSomething3
            Method method = c.getMethod("doSomething3");
            //查找doSomething3方法是否有SomeAnnotation的Annotation
            if(method.isAnnotationPresent(SomeAnnotation.class)){
                System.out.println("找到SomeAnnotation");
                //得到SomeAnnotation
                SomeAnnotation annotation = method.getAnnotation(SomeAnnotation.class);
                System.out.println("annotation.value="+annotation.value());
                System.out.println("annotation.name="+annotation.name());
            }else{
                System.out.println("没有找到omeAnnotation");
            }
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
    }
}

输出结果:
找到SomeAnnotation
annotation.value=value1
annotation.name=name1

2008年12月21日星期日

[转载]Windows2008优化设置

机器:x31 ,cpu1.7,内存1g,安装分区14g

安装系统

下载2008rc0的iso文件,

可以刻盘全新安装或者用虚拟光驱加载iso文件安装

注意,pe下面我没有成功,成功过的低胸说说方法

安装之前最好有个key,key目前是可以免费申请的

有key的话,安装的时候可以选上安装完毕激活系统

没有key的话,装好之后再去微软申请也可以

系统激活之后,就可以使用到08年4月了

安装可以选择标准版、企业版、数据中心版等版本

安装版本要和申请的key对应,否则会提示错误的

系统安装的速度还是比较快的,基本上无需手动干预

2008安装好之后,会提示设定密码,密码是必须的

设好密码就可以登录系统了

安装硬件驱动

系统安装完毕就是驱动的安装

大部分支持vista系统的驱动都可以安装在2008上面

+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+

系统默认有一些烦人的提示,主要有这几个

取消登录时按“ctrl+alt+del”登录系统

如果不想每次开机的时候都按一次 ctrl+alt+del

打开开始菜单的管理工具的本地安全策略

依次进入:本地策略、安全选项

找到:交互式登录 无需按ctrl+alt+del

然后双击,设置为“已启用”

这样每次开机的时候,就可以直接输入密码登录系统了

加快登录的时间

关闭“关机事件跟踪”

如果不想每次关机的时候都出现“关机事件跟踪”的对话框

在开始菜单的运行输入“gpedit.msc”打开组策略编辑器

依次进入:计算机配置、管理模板、系统

在最下面找到“显示 关闭事件跟踪程序”

双击进入属性,设为“禁用”就可以了

调整默认IE ESC(IE增强安全设置)

2008的ie7默认情况下开启了安全设置

不修改的情况下,每次打开新的网站ie都会问是否安全站点

作为服务器使用的话,可以提高服务器的安全性

但是如果作为桌面使用的话,就会很烦人

打开“服务器管理器”,在“安全信息”下面点击“配置 IE ESC”

设置“管理员”和“用户”都是“禁用”即可解决

+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+

作为桌面系统使用的时候,我们需要对2008进行一些调整:

调整系统性能

进入控制面板的系统和维护,打开“高级系统设置”

选择性能下面的“设置”

在“视觉效果”标签下面选择“调整为最佳性能”

在“高级”标签下面的“处理器计划”选择“程序”

在“高级”标签下面的“虚拟内存”选择“让系统自动管理”

在“数据执行保护”标签下面,选择“仅为基本 windows 服务和程序启用 DEP”

安装“桌面体验”

打开“服务器管理器”,点击“添加功能”

勾选“桌面体验”和“高质量 windows 音频视频体验”

按照提示安装“桌面体验”(需要重启电脑)

在“服务”中将“Themes”服务设为自动并开启

在“控制面板、外观和个性化”里面就可以使用vista主题了

完成以上步骤后,windows媒体播放器 也会自动添加到开始的程序组

安装vistacodecs

可以将wmp 11打造成几乎万能的播放器。

最新vistacodecs(VistaCodecs_v448_BETA1 for x86)

下载地址:http://download.pchome.net/multimedia/media/download_37143.html

开启图片预览

ws2008默认没有开启图片预览功能,可以依照下图开启图片预览功能

进入控制面板的文件夹选项

在查看标签下面找到“始终显示图标,从不显示缩略图”

取消前面的“打钩”即可

使用 ClearType 字体

如果觉得2008下面的字体显示有毛边,可以启用 ClearType 字体

让字体显示更漂亮,打开控制面板,进入“外观设置”

点击对话框右下角的“效果”,然后勾选使用 ClearType

+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+

优化系统服务

2008作为一个服务器系统提供了大量的服务,作为桌面使用的低胸无需那么多服务

低胸们可以根据自己的实际需要对个别服务进行禁用或手动

以下给出部分可以停止的服务供大家参考

Diagnostic Policy Service 禁用

Diagnostic Service Host 手动

Diagnostic System Host 手动

IKE and AuthIP IPsec Keying Modules 手动

KtmRm for Distributed Transaction Coordinator手动

Office Source Engine 手动

Offline Files 禁用

Portable Device Enumerator Service 禁用

Problem Reports and Solutions Control Panel Support 手动

Remote Registry 禁用

Secondary Logon 手动

Server 禁用

System Event Notification Service 手动

Tablet PC Input Service 禁用

Windows Error Reporting Service 禁用

Windows Remote Management (WS-Management) 手动

没有打印机、扫描仪、数码相机的朋友可以禁用下面两个服务

Print Spooler

Windows Image Acquisition (WIA)