从制造到创造
软件工程师成长之路
posts - 292,  comments - 96,  trackbacks - 0

在windows操作系统上使用IE作为浏览器时。常常会发生这样的问题:在浏览使用UTF-8编码的网页时,浏览器无法自动侦测(即没有设定“自动选择”编码格式时)该页面所用的编码。即使网页已经声明过编码格式:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

由此造成某些含有中文UTF-8编码的页面产生空白输出。

如果使用的是Mozilla、Mozilla 浏览器、Sarafi的浏览器这不会造成这个问题。这是由于IE解析网页编码时以HTML内的标签优先,而后才是HTTP header内的讯息;而mozilla系列的浏览器则刚刚相反。

由于UTF-8为3个字节表示一个汉字,而普通的GB2312或BIG5是两个。页面输出时,由于上述原因,使浏览器解析、输出<title></title>的内容时,如果在</title>前有奇数个全角字符时,IE把UTF-8当作两个字节解析时出现半个汉字的情况,这时该半个汉字会和</title>的<结合成一个乱码字,导致IE无法读完<title>部分,使整个页面为空百输出。而这个时候如果察看源文件的话,会发现实际上整个叶面全部已经输出了。

因此最简单的解决办法是在网页文件的<head></head>标签中一定要把字符定义

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

放在<title></title>之前。

posted @ 2008-06-18 09:30 CoderDream 阅读(394) | 评论 (0)编辑 收藏
1、如何使用Log4j?
2、http://supportweb.cs.bham.ac.uk/documentation/tutorials/docsystem/build/tutorials/log4j/log4j.html
3、Log4j
http://my.so-net.net.tw/idealist/Java/Log4j.html
posted @ 2008-06-13 17:56 CoderDream 阅读(390) | 评论 (0)编辑 收藏
     摘要: 14.1 什么是JavaScript 14.1.1 JavaScript概念 JavaScript是一种基于对象和事件驱动并具有安全性能的脚本语言。 14.1.2 JavaScript特点 是一种脚本编写语言; 基于对象的语言; 简单性; 安全性; 动态性; 跨平台性 14.2 编写第一个JavaScript脚本 文件范例:1401.html <!-- --...  阅读全文
posted @ 2008-06-04 09:29 CoderDream 阅读(408) | 评论 (0)编辑 收藏
我们在开发的过程中,调试的时候经常要进入某些包,如果没有将这些包与对应的源文件文件夹或zip包对应,就会提示“Source not found”,但是现在很多jar文件都会有相应的源文件,如Struts、Spring等等。而且JavaEE的很多源文件可以通过Tomcat的源文件找到,我们把它打成zip包,注意要和jar文件夹对应,然后设置一下,以后新建Web Project的时候,就可以很方便的查看servlet文件夹下面的源代码了。

这是javaee.jar的设置画面,其他Struts等等设置类似。
posted @ 2008-05-29 14:57 CoderDream 阅读(3137) | 评论 (0)编辑 收藏
出现这个问题后使用“清理”功能,如果还不行,就直接到上一级目录,再执行“清理”,然后再“更新”。

有时候如果看到某个包里面的文件夹没有SVN的标志,直接用“Ctrl+Delete”手工删除,然后“清理”,最后“更新”或“提交”。


网络摘抄1:
错误信息
Malformed file   
svn: E:\svn\repository\conf\svnserve.conf:12: Option expected   
原因:

配置文件12行开头有空格

   

错误信息
Attempted to lock an already-locked dir   
svn: Working copy 'E:\integration\com.svn.practise' locked  

原因:

需要用svn cleanup上次关闭时的锁定


网络摘抄2:
在eclipse里提交和更新文件是抱错。

Attempted to lock an already-locked dir
svn: Working copy 'F:\workspace\WebFrame\WebRoot\attach\prodrelation' locked

执行“清除”操作后,问题解决了。

很多操作,例如中断提交,都会进入这种工作拷贝的锁定状态。

网络摘抄3:
因为这两天频出这个现象,现在基本不怕这个问题了
我是这样解决的:
1 三令五申项目的组员必须先同步,合并,再提交
2 操作后经常地在父目录使用clean up命令
3 解决了locked问题后,还出现不能更新的现象时,就删除目录下的所有文件,包括.svn,再重新check out服务器同目录一次
4 总之,操作要规范,要强调组员每天开工时,先在ECLIPSE里同步,下班时,要提交(提交前,先在文件夹的右菜单中,选择小组>清除),保证每个人的机子里在开工前都是最新版本

老实讲,因为版本冲突,提交冲突,更新失败等等问题,耽误了好些时间,但我知道主要还是自身操作不熟练不规范的问题。我相信,只要坚持,大家包括我的组员一定都会喜欢上这个小海龟的  


 

posted @ 2008-05-27 09:51 CoderDream 阅读(108591) | 评论 (14)编辑 收藏
效果:


文件清单:
序号 文件名
1 ChangeLocaleAction.java
2 ChangeLocaleForm.java
3 struts-config.xml
4 index.jsp
5 application_en_US.properties
6 application_zh_CN.properties
7 application_zh_TW.properties

清单1:
package com.coderdream.struts.action;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.Globals;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.coderdream.struts.form.ChangeLocaleForm;

public class ChangeLocaleAction extends Action {

    
public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        ChangeLocaleForm clForm 
= (ChangeLocaleForm)form;
        String language 
= clForm.getLanguage();
        
if (language != null) {
            Locale locale;
            
if (language.equalsIgnoreCase("en")) {
                locale 
= Locale.US;
                request.getSession().setAttribute(
                        Globals.LOCALE_KEY, locale);
            } 
else if (language.equalsIgnoreCase("tw")) {
                locale 
= Locale.TAIWAN;
                request.getSession().setAttribute(
                        Globals.LOCALE_KEY, locale);
            } 
else {
                locale 
= Locale.CHINA;
                request.getSession().setAttribute(
                        Globals.LOCALE_KEY, locale);
            }
        }
        
        
return mapping.findForward("success");
    }
         
}

清单2:
package com.coderdream.struts.form;

import org.apache.struts.action.ActionForm;


/**
 * 
 * description:
 * 
 * 
@author 
 *
 
*/
public class ChangeLocaleForm extends ActionForm{
    
    
public ChangeLocaleForm() {
        
super();
    }

    
private String language;

    
public String getLanguage() {
        
return language;
    }

    
public void setLanguage(String language) {
        
this.language = language;
    }
}

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

<struts-config>
    
<data-sources />
    
<form-beans>
        
<form-bean name="ChangeLocaleForm"
            type
="com.coderdream.struts.form.ChangeLocaleForm" />
    
</form-beans>

    
<action-mappings>

        
<action name="ChangeLocaleForm" path="/ChangeLocale"
            scope
="request"
            type
="com.coderdream.struts.action.ChangeLocaleAction"
            validate
="false">
            
<forward name="success" path="/index.jsp" />
        
</action>
    
</action-mappings>

    
<message-resources key="application"
        parameter
="com.coderdream.struts.resources.application" />
</struts-config>

清单4:
<%@ page contentType="text/html; charset=UTF-8"%>
<%@page import="org.apache.struts.Globals"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

<html:html>
<head>
    
<title>多语言测试</title>
    
<meta http-equiv="pragma" content="no-cache">
    
<meta http-equiv="cache-control" content="no-cache">
    
<meta http-equiv="expires" content="0">
    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    
<meta http-equiv="description" content="This is my page">
</head>
<script language="javascript"> 
    function onLanguage(){
        var language 
= document.getElementsByName("language")[0].value;
        
if(language!=null&&language!=""){         
          document.forms[
0].submit();
            }
          }   
    
</script>

<body>
    
<html:form action="ChangeLocale.do">
        
<html:select property="language" styleId="height:18"
            onchange
="onLanguage();">
            
<option value="" title="">
                
--
                
<bean:message bundle="application" key="global.select.language" />
                
--
            
</option>
            
<option value="en" title="English">
                English
            
</option>
            
<option value="cn" title="简体中文">
                简体中文
            
</option>
            
<option value="tw" title="繁體中文">
                繁體中文
            
</option>
        
</html:select>
    
</html:form>
    
<br>
    
<br>
    
<br>
    
<bean:message bundle="application" key="global.select.test" />
    
<%=request.getSession().getAttribute(Globals.LOCALE_KEY)%>

</body>
</html:html>

清单5:
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)

global.select.language 
= Language
global.select.test     
= Test

清单6:
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)
#BizException

global.select.language = \u8BED\u8A00
global.select.test     = \u6D4B\u8BD5

清单7:
#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net)

global.select.language = \u8A9E\u8A00
global.select.test     = \u6E2C\u8A66

此功能的关键是在Action里面将页面传过来的language信息得到,然后根据信息设置Locale,然后将新的Locale放到Session中。

源代码:点击下载
posted @ 2008-05-14 18:20 CoderDream 阅读(997) | 评论 (0)编辑 收藏
需求:用实线把各个面板圈起来,然后把面板的名字写在圈圈的左上角。

原始画面:


由于原来的程序使用的是AWT中的Panel,而这个控件我们没有设置titleBorder的方法。
现在将更新为Swing中的JPanel面板,代码分别为:
旧代码:
    Panel pRoboCtrl=new Panel();
    pRoboCtrl.setLayout(
new GridLayout(5125));
    
    
// Robot控制面板的第一排,面板的标题
        Panel pR1=new Panel(); 
        pR1.setLayout(
new GridLayout(1123));
     
        
//Row One
    pR1.add(new Label("Robot Control",Label.CENTER));
新代码:
    JPanel pRoboCtrl=new JPanel();
    pRoboCtrl.setLayout(
new GridLayout(4125));
    Border titleBorder1
=BorderFactory.createTitledBorder("Robot Control");            
    pRoboCtrl.setBorder(titleBorder1);   
原来的处理方式是将一个Label放到Panel中,然后将这个Panel放到外层的Panel中,新方式是将外层Panel定义成JPanel,然后设置Border的值为BorderFactory产生的一个实例。



解决这个问题后,新问题又来了,两个JPanel中的内容不一样,上面多,下面少,但是现在面板却是一样大,要改成面板高度自动适应。
其实这只需要修改一行代码就可以了,代码如下:
旧代码:
CP.setLayout(new GridLayout(3125));  
新代码:
CP.setLayout(new BoxLayout(CP, BoxLayout.Y_AXIS)); // 沿垂直方向布置组件
旧代码的处理方式是网格布局,新代码的方式是用BoxLayout布局管理器,它会按要求垂直或水平分布。

以下代码创建了一个JPanel容器,它采用垂直 BoxLayout,在这个容器中包含两个Button,这两个Button沿垂直方向分布,并且保持像素为 5 的固定垂直间隔。
    JPanel panel = new JPanel();
    panel.setLayout(
new BoxLayout(panel, BoxLayout.Y_AXIS));// 沿垂直方向布置组件
    panel.add(new JButton("Button1"));
    panel.add(Box.createVerticalStrut(
5));
    panel.add(
new JButton("Button2"));

源代码:下载
posted @ 2008-04-29 16:16 CoderDream 阅读(15528) | 评论 (2)编辑 收藏
1、下载
http://www.opensymphony.com/quartz/download.action
https://quartz.dev.java.net/files/documents/1267/43545/quartz-1.6.0.zip

2、详细讲解Quartz如何从入门到精通
3、用 Quartz 进行作业调度
posted @ 2008-04-15 17:46 CoderDream 阅读(716) | 评论 (0)编辑 收藏
数据库和表
create table USERS
(
  USERNAME 
VARCHAR2(20not null,
  PASSWORD 
VARCHAR2(20)
)
alter table USERS
  
add constraint U_PK primary key (USERNAME)

/**
 * JdbcExample.java
 *
 * Provider: CoderDream's Studio
 *
 * History
 *    Date(DD/MM/YYYY)    Author          Description
 * ----------------------------------------------------------------------------
 *    Apr 14, 2008                CoderDream        Created
 
*/

package com.coderdream.jdbc.oracle;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 
@author XL
 *
 
*/
public class JdbcExample {


    
private static Connection getConn() {
        String driver 
= "oracle.jdbc.driver.OracleDriver";
        String url 
= "jdbc:oracle:thin:@10.5.15.117:1521:csi";
        String username 
= "scott";
        String password 
= "tiger";
        Connection conn 
= null;
        
try {
            Class.forName(driver);
            
// new oracle.jdbc.driver.OracleDriver();
            conn = DriverManager.getConnection(url, username, password);
        }
        
catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        
catch (SQLException e) {
            e.printStackTrace();
        }

        
return conn;
    }

    
private static int insert(String username, String password) {
        Connection conn 
= getConn();
        
int i = 0;
        String sql 
= "insert into users (username,password) values(?,?)";
        PreparedStatement pstmt;
        
try {
            pstmt 
= conn.prepareStatement(sql);
            
// Statement stat = conn.createStatement();
            pstmt.setString(1, username);
            pstmt.setString(
2, password);
            i 
= pstmt.executeUpdate();
            System.out.println(
"resutl: " + i);

            pstmt.close();
            conn.close();
        }
        
catch (SQLException e) {
            e.printStackTrace();
        }

        
return i;
    }

    
private static void query() {
        Connection conn 
= getConn();
        String sql 
= "select * from users";
        PreparedStatement pstmt;
        
try {
            pstmt 
= conn.prepareStatement(sql);
            ResultSet rs 
= pstmt.executeQuery();
            
while (rs.next()) {
                System.out.println(
"name: " + rs.getString("username")
                        
+ " \tpassword: " + rs.getString("password"));
            }

            rs.close();
            pstmt.close();
            conn.close();
        }
        
catch (SQLException e) {
            e.printStackTrace();
        }

    }

    
private static int update(String oldName, String newPass) {
        Connection conn 
= getConn();
        
int i = 0;
        String sql 
= "update users set password='" + newPass
                
+ "' where username='" + oldName + "'";
        PreparedStatement pstmt;
        
try {
            pstmt 
= conn.prepareStatement(sql);

            i 
= pstmt.executeUpdate();
            System.out.println(
"resutl: " + i);

            pstmt.close();
            conn.close();
        }
        
catch (SQLException e) {
            e.printStackTrace();
        }

        
return i;
    }
    
    
private static int delete(String username) {
        Connection conn 
= getConn();
        
int i = 0;
        String sql 
= "delete users where username='" + username + "'";
        PreparedStatement pstmt;
        
try {
            pstmt 
= conn.prepareStatement(sql);

            i 
= pstmt.executeUpdate();
            System.out.println(
"resutl: " + i);

            pstmt.close();
            conn.close();
        }
        
catch (SQLException e) {
            e.printStackTrace();
        }

        
return i;
    }

    
/**
     * 
@param args
     
*/
    
public static void main(String[] args) {
        insert(
"CDE""123");
        insert(
"CoderDream""456");
        query();
        update(
"CoderDream""456");
        query();
        delete(
"CoderDream");
        query();
    }
}
posted @ 2008-04-14 17:55 CoderDream 阅读(7026) | 评论 (0)编辑 收藏
1、首先下载eclipse的Tomcat插件,文件名为:tomcatPluginV321.zip
下载:地址

2、安装Tomcat插件,即将zip档解压,放入eclipse目录下的 plugins 文件夹中。

3、在项目上点右键,设置properties,在'Tomcat'下面设置'export   to   war   settings'输入要导出的war文件路径和文件名,确定,返回项目。


4、在项目上点右键,选择tomcat   project->Export  to the war file sets in project properties


5、 进入C盘,可以看到csi.war文件正在生成,成功后会有提示框。这样就可以通过Tomcat插件导出WAR档了。
posted @ 2008-04-08 13:43 CoderDream 阅读(3719) | 评论 (1)编辑 收藏
仅列出标题
共24页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last 

<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(9)

我参与的团队

随笔分类(245)

随笔档案(239)

文章分类(3)

文章档案(3)

收藏夹(576)

友情链接

搜索

  •  

积分与排名

  • 积分 - 454315
  • 排名 - 115

最新评论

阅读排行榜

评论排行榜