存档

文章标签 ‘java’

javascript传中文乱码

2011年7月14日 没有评论

今天在用ajax传一个中文值的时候,碰到了个怪问题,起先在js中没有对要传到后台的中文值进行编码,在java后台通过

new String(后台接收到得中文值.getBytes(),”UTF-8″)

可以正确解析到传过来的中文值,但是当我传中文值”一般”的时候,问题出现了,死活都是乱码,很奇怪,把其中”一”去掉,能够正常解析,问题出在这个”一”上,呵,以前还真没遇到过,因为时间的关系,最后对js传的中文值用

encodeURIComponent(中文值)

来传递到后台,java后台通过

java.net.URLDecoder.decode(后台接收到的经过编码的中文值,”UTF-8″);

来解析,至此一切正常,不管怎样,对js传中文到后台的时候,一律先给它编码再传,这样乱码也就不会产生了。

清除WebSphere中jsp缓存

2010年5月10日 3 条评论

websphere中修改了jsp后,有时会出现修改的jsp没有起作用,特别是改变了某jsp的样式后,在页面中没看到效果,这主要就是由于websphere中缓存的缘故,这就要清除WebSphere中jsp缓存,如我的应用部署的目录为:
E:\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\nbxzfwNode01Cell\项目名_war.ear\项目名.war 阅读全文…

分类: java 标签: ,

JAVA读取word,excel内容

2010年5月6日 没有评论

上次介绍了用java读取rtf文件格式的内容,那用java语言怎么来读取word文档以及excel中的内容,这些在编程的时候是经常会用到的,java读取word文档及Excel的内容在java的API中没有是没有现成的类或方法的,所以我们要用到一个控件——POI控件:POI控件的下载及配置
下面就是关于java读取word和Excel内容的代码: 阅读全文…

分类: java 标签: ,

POI,PDFBOX,JDOM的下载及在Eclipse中的配置方法

2010年5月6日 没有评论

摘抄自:http://lycoder.javaeye.com/blog/451613
里面介绍得很好,POI的下载及配置,PDFBOX的下载及配置,JDOM的下载及配置都全了。

一、POI
POI是Apache的Jakata项目,POI 代表 Poor Obfuscation Implementation,即不良模糊化实现。POI 的目标就是提供一组 Java API 来使得基于 Microsoft OLE 2 Compound Document 格式的 Microsoft Office 文件易于操作。

下载地址 :http://apache.etoak.com/poi/release/bin/

相关配置 : 阅读全文…

分类: java 标签: ,

java读取rtf文件格式的内容

2010年4月21日 没有评论

java中读取rtf文件格式的内容有事在项目中用到,java API中有相关的类和方法用来读取rtf文件格式的内容,这样利用相关的类和方法就能获取到我们需要的内容,不需要什么插件了呵呵,下面是代码,特记录下:

package textReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.rtf.RTFEditorKit;

public class RtfReader {
    public RtfReader(){
    }
    /**
       * @param filePath 文件路径
     * @return 读出的rtf的内容
     */
    public String getTextFromRtf(String filePath) {
        String result = null;
        File file = new File(filePath);
        RTFEditorKit rtf = new RTFEditorKit().
        try {
            DefaultStyledDocument styledDoc = new DefaultStyledDocument();
            InputStream is = new FileInputStream(file);
            rtf.read(is, styledDoc, 0);
            result = new String(styledDoc.getText(0,styledDoc.getLength()).getBytes("ISO8859_1"));
            //提取文本,读取中文需要使用ISO8859_1编码,否则会出现乱码
        } catch (IOException e) {
            e.printStackTrace();
        } catch (BadLocationException e) {
            e.printStackTrace();
        }
        return result;
    }

}
分类: java 标签: ,

cookie中无法保存中文

2010年4月2日 没有评论

在用cookie保存用户名的时候,发现cookie值不能存中文,报如下错:

 Control character in cookie value, consider BASE64 encoding your value

错误发生在:response.addCookie(cookie);

在以前的编程中也碰到过这样的问题,主要是cookie值里面存在非法参数,如存在”\r\n”、”\n”之类的字符时就报报这样的错,但我就个用户名啊,不存在像这些字符啊,不管,我把cookie值设为一个默认的中文用户名,运行看是否出问题,果不其然,出现同样的错误,结果知道,cookie中不能保存中文。

最后想想把中文转换为UTF-8字符串进行保存应该没问题,即用 URLEncoder.encode(“中文用户名”,”UTF-8″)); 这样把中文用户名转换为UTF-8字符串,运行时通过。在最后接收这个值的时候,用URLDecoder.decode(cookies.getValue(),”UTF-8″);来解码得到我要的中文用户名。
URLEncode及URLDecode在包java.net里面。

分类: java, 编程技术 标签: ,

java创建多级目录

2009年9月17日 没有评论

在编程中,经常要用到创建多级目录,下面通过java来实现:

import java.io.*;
import java.util.*;
public class CreateFolders{
public static void main(String[] args) {
       String   path="c:/aaa/bbb/ccc";
       StringTokenizer   st=new   StringTokenizer(path,"/");
       String   path1=st.nextToken()+"/";
       String   path2 =path1;
       while(st.hasMoreTokens())
       {
             path1=st.nextToken()+"/";
             path2+=path1;
             File inbox   =   new File(path2);
             if(!inbox.exists())
                  inbox.mkdir();
       }
}
}

而用的最多的莫过于根据日期来创建目录进行文章的分类,如20090915用它来在E盘下创建一个E:/2009/09/17的目录而20090917又是一个字符串,须将它转化为:2009/09/17这种格式才好创建目录,下面是我实现的方法:

import java.util.*;
import java.text.*;
import java.io.*;
public class Createdirs{
public static void main(String[] args) {
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
        String dateString = "20090917";
        try {
             Date date = df.parse(dateString);
             String path="E:/"+new SimpleDateFormat("yyyy/MM/dd").format(date);
             //System.out.println(DateFormat.getDateInstance().format(date));
             StringTokenizer st=new StringTokenizer(path,"/");
             String path1=st.nextToken()+"/";
             String path2 =path1;
            while(st.hasMoreTokens())
            {
                    path1=st.nextToken()+"/";
                    path2+=path1;
                    File inbox = new File(path2);
                    if(!inbox.exists())
                        inbox.mkdir();
            }
            } catch (Exception ex) {
             System.out.println(ex.getMessage());
            }
}
}
分类: java 标签: , ,

java 将字符串转换为日期格式

2009年9月17日 没有评论

有时候,我们获取到的日期类型可能为一字符串,如20090915;输出的时候,我们想转化为: 2009年09月15日 这种日期格式,那么我们怎么来将字符串转换为日期格式,下面是转换的代码:

import java.util.*;
import java.text.*;
import java.io.*;
class StrToDate
{
    public static void main(String[] args)
    {
        String dateString = "20090915";
        try {
             Date date=new SimpleDateFormat("yyyyMMdd").parse(dateString);
            //下面将字符串转换为日期格式后显示的格式是2009-09-15
             System.out.println(DateFormat.getDateInstance().format(date));
            //如果想换一种别的格式,可以用下面的办法,得到任何的日期格式都可以
            //输出的结果为2009/09/15
             System.out.println(new SimpleDateFormat("yyyy/MM/dd").format(date));
            //SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日");
            //输出的结果为2009年09月15日
             System.out.println(new SimpleDateFormat("yyyy年MM月dd日").format(date));
        } catch (Exception ex) {
             System.out.println(ex.getMessage());
        }
    }
}

通过上例代码,就可以转换成我们想要表示的日期格式了。

分类: java 标签: , ,

java中处理比long型还大的整数

2009年9月2日 没有评论

从同事那得知他面试一个题目,题目为java中怎么处理比long型还大的整数

真的没点头绪,看了网上的一些解答,都没有给出实际的解答,网上很多的表示用数组来处理这个比long型还大的整数,到底怎么来实现运算,我也不知道,呵呵,曾今看过一篇文章,银行计算金额的时候,用的是bigdecimal类型,这种类型没有位数限制,是不是我们也可以利用这个来处理比long型还大的整数,答案是可以的,下面是计算方法:

//使用BigDecimal进行加、减、乘、除
void TestBigDecimal()
{
//别忘了导入java.math.BigDecimal
BigDecimal a=new BigDecimal(new String("123453243455535634535252345234677576252241234123523453664563634"));
BigDecimal b=new BigDecimal(new String("123453243455535634535252345234677576252241234123523453664563634"));
String c=a.add(b).toString();//加
String d=a.subtract(b).toString();//减
String e=a.multiply(b).toString();//乘
String f=a.divide(b).toString();//除
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(f);
}

不过从还是从网上看到了一篇用string型来处理的比long型还大的整数运算,下面是具体运算类: 阅读全文…

分类: java 标签: , , , , ,

Java时间比较

2009年8月24日 没有评论

在java编程中,对于时间的比较总是很多的,下面列出了常用的java时间比较的方法:

import java.text.*;
import java.util.*;

public class TimeCompare{

public static void main(String[] args){
   boolean flag = isDateBefore(\"2004-09-09 12:12:12\",\"2005-09-09 16:00:00\");
   System.out.println(flag);
   flag = isDateBefore(\"2006-09-09 01:01:01\",\"2005-09-09 16:00:00\");
   System.out.println(flag);
   flag = isDateBefore(\"2005-09-09 01:01:01\");
   System.out.println(flag);
}

//判断时间date1是否在时间date2之前
//时间格式 2005-4-21 16:16:34
public static boolean isDateBefore(String date1,String date2){
   try{
    DateFormat df = DateFormat.getDateTimeInstance();
    return df.parse(date1).before(df.parse(date2));
   }catch(ParseException e){
    System.out.print(\"[SYS] \" + e.getMessage());
    return false;
   }
}

//判断当前时间是否在时间date2之前
//时间格式 2005-4-21 16:16:34
public static boolean isDateBefore(String date2){
   try{
    Date date1 = new Date();
    DateFormat df = DateFormat.getDateTimeInstance();
    return date1.before(df.parse(date2));
   }catch(ParseException e){
    System.out.print(\"[SYS] \" + e.getMessage());
    return false;
   }
}

}

看到这里就知道怎么来判断比较时间格式为2005-4-21的了;下面是我仿照写的 一个静态方法,年前在工作中正好用到,呵呵!

//判断当前时间是否在时间date2之后或相等
//时间格式 2005-4-21

public static boolean isDateAfterOrEqual(String date2){
   boolean flag=false;
   try{
    DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
    Date date1 = new Date();
    if(fmt.parse(fmt.format(date1)).equals(fmt.parse(date2))||fmt.parse(fmt.format(date1)).after(fmt.parse(date2)))
      flag=true;

   }catch(ParseException e){
    System.out.print("[SYS] " + e.getMessage());
      flag = false;
   }
   return flag;
}
分类: java 标签: , ,