博主资料

留言 加为好友 收藏

用户名:  softprog
来自:  北京 海淀

个人统计

用户名: softprog
等级: 初来乍到
威望: 510
积分: 1759
在线时间: 21 小时
日志总数: 237
评论数量: 250
访问次数: 475891
建立时间: 2006-11-04
RSS订阅       手机访问

最新评论

文章搜索

文章列表

最近访问的人:

㊣灵异陷阱㊣
2008-08-17 19:15:54
液下泵
2008-07-28 15:07:52
安静~思绪
2008-07-25 16:09:39
賃貸
2008-07-24 15:55:27
channel21
2008-07-10 17:04:51
IT人生
2008-07-09 20:46:15
新来者
2008-07-02 17:21:58
与J2EE同行
2008-06-20 17:01:04
风之絮语
2008-06-12 10:09:30
收藏技术文章文摘
2008-06-03 22:26:41

日志文章

2006年11月13日 13:04:34

java初学者必读-经验总结

7:解决java中文问题:
针对applet和awt:
  1:)
  Font f = new Font(UIResource.getString(     "Default_font"),Font.PLAIN,12);
    UIManager.put("Label.font",f);
    UIManager.put("Label.foreground",Color.black);
    UIManager.put("Button.font",f);
    UIManager.put("Menu.font",f);
    UIManager.put("MenuItem.font",f);
    UIManager.put("List.font",f);
    UIManager.put("CheckBox.font",f);
    UIManager.put("RadioButton.font",f);
    UIManager.put("ComboBox.font",f);
    UIManager.put("TextArea.font",f);


  2:)
    Font f = new Font("隶书",Font.PLAIN,15);
      UIManager.put("Button.font",font);
  UIManager.put("ToggleButton.font",font);
  UIManager.put("RadioButton.font",font);
  UIManager.put("CheckBox.font",font);
  UIManager.put("ColorChooser.font",font);
  UIManager.put("ToggleButton.font",font);
  UIManager.put("ComboBox.font",font);
  UIManager.put("ComboBoxItem.font",font);
  UIManager.put("InternalFrame.titleFont",font);
  UIManager.put("Label.font",font);
  UIManager.put("List.font",font);
  UIManager.put("MenuBar.font",font);
  UIManager.put("Menu.font",font);
  UIManager.put("MenuItem.font",font);
  UIManager.put("RadioButtonMenuItem.font",font);
  UIManager.put("CheckBoxMenuItem.font",font);
  UIManager.put("PopupMenu.font",font);
  UIManager.put("OptionPane.font",font);
  UIManager.put("Panel.font",font);
  UIManager.put("ProgressBar.font",font);
  UIManager.put("ScrollPane.font",font);
  UIManager.put("Viewport",font);
  UIManager.put("TabbedPane.font",font);
  UIManager.put("TableHeader.font",font);
  UIManager.put("TextField.font",font);
  UIManager.put("PasswordFiled.font",font);
  UIManager.put("TextArea.font",font);
  UIManager.put("TextPane.font",font);
  UIManager.put("EditorPane.font",font);
  UIManager.put("TitledBorder.font",font);
  UIManager.put("ToolBar.font",font);
  UIManager.put("ToolTip.font",font);
  UIManager.put("Tree.font",font);

 3:)针对jsp和servlet:
解决办法:
第一:
在jsp页面加入:
<%@ page contentType="text/html; charset=gb2312" %>
或者在servlet里面
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  response.setContentType("text/html; charset=gb2312");//这是重要的
上面的如果在不行就用如下的方法在数据入库前进行调用:
public static String UnicodeToChinese(String s){
try{
  if(s==null||s.equals("")) return "";
  String newstring=null;
  newstring=new String(s.getBytes("ISO8859_1"),"gb2312");
  return newstring;
  }
catch(UnsupportedEncodingException e)
{
return s;
}
}

public static String ChineseToUnicode(String s){
try{
if(s==null||s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("gb2312"),"ISO8859_1");
  return newstring;
}
catch(UnsupportedEncodingException e)
{
return s;
}
}

3:)解决weblogic/webshpere中文问题:
在web.xml文件中需要配置中文环境。r如下:
<context-param>
<param-name>weblogic.httpd.inputCharset./*</param-name>
<param-value>GB2312</param-value>
</context-param>
  4:)javamail附件中文乱码:
/*
    @从BodyPart中提取使用ISO-8859-1编吗的文件名
    @因为BodyPart.getFilename()过程已经对文件名作了一次编码,有时不能直接使用
  */
  public static String getISOFileName(Part body){
    //设置一个标志,判断文件名从Content-Disposition中获取还是从Content-Type中获取
    boolean flag=true;
    if(body==null){
        return null;
    }
    String[] cdis;
    try{
        cdis=body.getHeader("Content-Disposition");
    }
    catch(Exception e){
        return null;
    }
    if(cdis==null){
        flag=false;
    }
    if(!flag){
        try{
          cdis=body.getHeader("Content-Type");
        }
        catch(Exception e){
          return null;
        }
    }
    if(cdis==null){
        return null;
    }
    if(cdis[0]==null){
        return null;
    }
    //从Content-Disposition中获取文件名
    if(flag){
        int pos=cdis[0].indexOf("filename=");
        if(pos<0){
          return null;
        }
        //如果文件名带引号
        if(cdis[0].charAt(cdis[0].length()-1)=='"'){
          return cdis[0].substring(pos+10,cdis[0].length()-1);
        }
        return cdis[0].substring(pos+9,cdis[0].length());
    }
    else{
        int pos=cdis[0].indexOf("name=");
        if(pos<0){
          return null;
        }
        //如果文件名带引号
        if(cdis[0].charAt(cdis[0].length()-1)=='"'){
          return cdis[0].substring(pos+6,cdis[0].length()-1);
        }
        return cdis[0].substring(pos+5,cdis[0].length());
    }
  }
8:字符串分割:
    public int getCount(String str,String sign){//查找某一字符串中str,特定子串s的出现次数
    if(str==null) return 0;
    StringTokenizer s=new StringTokenizer(str,sign);
    return s.countTokens();
}
 public String[] getArray(String str,String sign){//按特定子串s为标记,将子串截成数组。
  int count=getCount(str,sign);
  int j=0;
  String[] arr=new String[count];
  for(int i=0;i<count;i++){
    if(str.indexOf(sign)!=-1){
        j   =str.indexOf(sign);
        arr=str.substring(0,j);
        str   =str.substring(j+1);
    }else{
        arr=str;
    }
  }
  return arr;

}
10:数字转货币大写(js)
function ChangeToBig(value)
{
var intFen,i;
var strArr,strCheck,strFen,strDW,strNum,strBig,strNow;

if(trim(value)=="")   //数据为空时返回"零"
return "零";
if (isNaN(value))   //数据非法时提示,并返回空串
{
strErr = "数据"+value+"非法!"
alert(strErr);
return "";
}
strCheck = value+".";
strArr = strCheck.split(".");
strCheck = strArr[0];
if(strCheck.length>12)   //数据大于等于一万亿时提示无法处理
{
strErr = "数据"+value+"过大,无法处理!"
alert(strErr);
return "";
}
try
{
i = 0;
strBig = "";
intFen = value*100;       //转换为以分为单位的数值
strFen = intFen.toString();
strArr = strFen.split(".");
strFen = strArr[0];
intFen = strFen.length;     //获取长度
strArr = strFen.split(""); //将各个数值分解到数组内
while(intFen!=0)   //分解并转换
{
  i = i+1;
  switch(i)         //选择单位
  {
  case 1:strDW = "分";break;
  case 2:strDW = "角";break;
  case 3:strDW = "元";break;
  case 4:strDW = "拾";break;
  case 5:strDW = "佰";break;
  case 6:strDW = "仟";break;
  case 7:strDW = "万";break;
  case 8:strDW = "拾";break;
  case 9:strDW = "佰";break;
  case 10:strDW = "仟";break;
  case 11:strDW = "亿";break;
  case 12:strDW = "拾";break;
  case 13:strDW = "佰";break;
  case 14:strDW = "仟";break;
  }
  switch (strArr[intFen-1])         //选择数字
  {
  case "1":strNum = "壹";break;
  case "2":strNum = "贰";break;
  case "3":strNum = "叁";break;
  case "4":strNum = "肆";break;
  case "5":strNum = "伍";break;
  case "6":strNum = "陆";break;
  case "7":strNum = "柒";break;
  case "8":strNum = "捌";break;
  case "9":strNum = "玖";break;
  case "0":strNum = "零";break;
  }

  //处理特殊情况
  strNow = strBig.split("");
  //分为零时的情况
  if((i==1)&&(strArr[intFen-1]=="0"))
  strBig = "整";
  //角为零时的情况
  else if((i==2)&&(strArr[intFen-1]=="0"))
  {   //角分同时为零时的情况
  if(strBig!="整")
  strBig = "零"+strBig;
  }
  //元为零的情况
  else if((i==3)&&(strArr[intFen-1]=="0"))
  strBig = "元"+strBig;
  //拾-仟中一位为零且其前一位(元以上)不为零的情况时补零
  else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="元"))
  strBig = "零"+strBig;
  //拾-仟中一位为零且其前一位(元以上)也为零的情况时跨过
  else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零"))
  {}
  //拾-仟中一位为零且其前一位是元且为零的情况时跨过
  else if((i<7)&&(i>3)&&(strArr[intFen-1]=="0")&&(strNow[0]=="元"))
  {}
  //当万为零时必须补上万字
  else if((i==7)&&(strArr[intFen-1]=="0"))
  strBig ="万"+strBig;
  //拾万-仟万中一位为零且其前一位(万以上)不为零的情况时补零
  else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="万"))
  strBig = "零"+strBig;
  //拾万-仟万中一位为零且其前一位(万以上)也为零的情况时跨过
  else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="万"))
  {}
  //拾万-仟万中一位为零且其前一位为万位且为零的情况时跨过
  else if((i<11)&&(i>7)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零"))
  {}
  //万位为零且存在仟位和十万以上时,在万仟间补零
  else if((i<11)&&(i>8)&&(strArr[intFen-1]!="0")&&(strNow[0]=="万")&&(strNow[2]=="仟"))
  strBig = strNum+strDW+"万零"+strBig.substring(1,strBig.length);
  //单独处理亿位
  else if(i==11)
  {
  //亿位为零且万全为零存在仟位时,去掉万补为零
  if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]=="仟"))
  strBig ="亿"+"零"+strBig.substring(1,strBig.length);
  //亿位为零且万全为零不存在仟位时,去掉万
  else if((strArr[intFen-1]=="0")&&(strNow[0]=="万")&&(strNow[2]!="仟"))
  strBig ="亿"+strBig.substring(1,strBig.length);
  //亿位不为零且万全为零存在仟位时,去掉万补为零
  else if((strNow[0]=="万")&&(strNow[2]=="仟"))
  strBig = strNum+strDW+"零"+strBig.substring(1,strBig.length);
  //亿位不为零且万全为零不存在仟位时,去掉万
  else if((strNow[0]=="万")&&(strNow[2]!="仟"))
  strBig = strNum+strDW+strBig.substring(1,strBig.length);
  //其他正常情况
  else
    strBig = strNum+strDW+strBig;
  }
  //拾亿-仟亿中一位为零且其前一位(亿以上)不为零的情况时补零
  else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]!="零")&&(strNow[0]!="亿"))
  strBig = "零"+strBig;
  //拾亿-仟亿中一位为零且其前一位(亿以上)也为零的情况时跨过
  else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="亿"))
  {}
  //拾亿-仟亿中一位为零且其前一位为亿位且为零的情况时跨过
  else if((i<15)&&(i>11)&&(strArr[intFen-1]=="0")&&(strNow[0]=="零"))
  {}
  //亿位为零且不存在仟万位和十亿以上时去掉上次写入的零
  else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]!="仟"))
  strBig = strNum+strDW+strBig.substring(1,strBig.length);
  //亿位为零且存在仟万位和十亿以上时,在亿仟万间补零
  else if((i<15)&&(i>11)&&(strArr[intFen-1]!="0")&&(strNow[0]=="零")&&(strNow[1]=="亿")&&(strNow[3]=="仟"))
  strBig = strNum+strDW+"亿零"+strBig.substring(2,strBig.length);
  else
  strBig = strNum+strDW+strBig;
  strFen = strFen.substring(0,intFen-1);
  intFen = strFen.length;
  strArr = strFen.split("");
}
return strBig;
}catch(err){
return "";     //若失败则返回原值
}
}

11:删除文件夹下的所有目录:
/*
* 删除一个目录下的所有文件
*/  
public static void delAllFile(String path) {
File file = new File(path);
if(!file.exists()) return;
if(!file.isDirectory()) return;
String[] tempList = file.list();
File temp = null;
for(int i = 0; i < tempList.length; i++) {
  if(path.endsWith(File.separator))
  temp = new File(path + tempList);
  else
  temp = new File(path + File.separator + tempList);
  if(temp.isFile()) temp.delete();
  if(temp.isDirectory()) delAllFile(path + tempList);
}
}
12:字符串转换成时间及时间相减:
  1:) SimpleDateFormat formatter = new SimpleDateFormat ("yyyy.MM.dd");
    //假定像2002.07.04的是合法日期其他都非法。
  String str="2002.07.04";
  ParsePosition pos = new ParsePosition(0);
  Date dt=formatter.parse(str,pos);
  if(dt!=null)
  {
  //是合法日期
  }
  else
  {
  //非法日期
  }
2:)
两个日期相减
import java.util.*;
import java.text.*;
class a
{
public static void main(String[] args)
{
String s1 = "2003/08/15 17:15:30";
String s2 = "2002/09/14 14:18:37";
try{
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy/MM/dd HH:mm:ss");

ParsePosition pos = new ParsePosition(0);
ParsePosition pos1 = new ParsePosition(0);
Date dt1=formatter.parse(s1,pos);
Date dt2=formatter.parse(s2,pos1);
System.out.println("dt1="+dt1);
System.out.println("dt2="+dt2);
long l = dt1.getTime() - dt2.getTime();

System.out.println("Hello World!="+l);
}catch(Exception e){
  System.out.println("exception"+e.toString());
}

}
}


3:)得到2个月后的日期:
import java.util.*;
import java.text.DateFormat;
public class test2
{
public static void main(String args[]) throws Exception
{
  String date="2001/11/30";
 
  DateFormat dateFormat =
DateFormat.getDateInstance(DateFormat.MEDIUM);
  GregorianCalendar grc=new GregorianCalendar();
  grc.setTime(new Date(date));


  grc.add(GregorianCalendar.MONTH,2);
  System.out.println("grc="+dateFormat.format(grc.getTime()));
}
}

13:jsp/servet重定向问题:
不改变url的:
1:)servlet:
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    getServletContext().getRequestDispatcher(test2URL).forward(request, response);
2:)jsp
<jsp:forward page="/jsp/forward/one.jsp"/>
改变url的:
1:)response.sendRedirect("/web/mail/pop3.jsp");

15.计算日期间隔
public int getDays(Date sd,Date ed){
return (ed.getTime()-sd.getTime())/(3600*24*1000)
}

16.日期加减
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
String str="20011230";
Date dt=sdf.parse(str,new ParsePosition(0));
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(dt);
rightNow.add(Calendar.DATE,2);//你要加减的日期
Date dt1=rightNow.getTime();
String reStr=sdf.format(dt1,"",new FieldPosition(0));
System.out.println(reStr);

17.时间显示控制  
第一种方式:
<html>
<head><title>取得系统时间</title></head>
<body>
<%java.util.Date date=new java.util.Date();%>
现在是:<%=date%>
</body>
</html>
运行结果:
现在是:Tue Jul 31 10:32:52 CST 2001

第二种方式:
<%@ page import="java.util.*, java.text.*" %>
<HTML>
<HEAD><TITLE>显示当前时间</TITLE></HEAD>
<BODY>
当前时间:
<%
Date now = new Date();
out.println(DateFormat.getTimeInstance().format(now));
%>
</BODY>
</HTML>
运行结果:
10:31:42 AM

第三种方式:
<%
java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy年MM月dd日");
java.util.Date currentTime_1 = new java.util.Date();
out.print(formatter.format(currentTime_1));
%>
运行结果:
2001年07月31日

第四种方式:
<%
java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy/MM/dd HH/mm/ss");
java.util.Date currentTime_1 = new java.util.Date();
out.print(formatter.format(currentTime_1));
%>
运行结果:
2001/07/31 10/32/52
第三四两种方式其实是一样的他可以产生千变万化的格式。



18.加密&解密
在插入数据库前先将字符串str进行加密:
java.net.URLEncoder.encode(String str);
从数据库中取出时再解码:(可以先不加密,只解码,试一试;不行再加密)
java.net.URLDecoder.decode(String str);

19.页面刷新:
有三种方法:
1,在html中设置:
<title>xxxxx</title>之後加入下面这一行即可!
定时刷新:<META HTTP-EQUIV="Refresh" content="10; URL=http://自己的URL">
10代表刷新间隔

2.jsp
<% response.setHeader("refresh","1"); %>
没一秒刷新一次

3.使用javascript:
<script language="javascript">
setTimeout("self.location.reload();",1000);
<script>
一秒一次

20.打印:
1.直接调用windows函数
<input type="button" value="print"
onclick="window.focus();window.print()">

2.调用js
//放在head 与 head 之间
<SCRIPT LANGUAGE=javascript>
<!--
function setPrint()
{
WB.ExecWB(8,1);
}
function previewPrint()
{
WB.ExecWB(7,1)
}
//-->
</SCRIPT>

//放在body与body之间
<OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WB width=0>
</OBJECT>
<INPUT type="button" value="打印设置" id=button1 name=button1 onclick="setPrint();">
<INPUT type="button" value="打印预览" id=button2 name=button2 onclick="previewPrint();">

21.将数据用execl在客户端展现:
<style type="text/css">
{
.showTD {color: #003366; }
.hiddenTD {display:none; }
.onFocue {color: #CC66FF;}
.offFocue {color:#003366;}
}
#floater {
  LEFT: 445px; POSITION: absolute; TOP: 15px; VISIBILITY: visible; WIDTH: 125px; Z-INDEX: 10}
</STYLE>

<object classid="clsid:0002E510-0000-0000-C000-000000000046" id="Spreadsheet1" width="676" height="388">
<param name="HTMLURL" value>
<param name="HTMLData" value="">
<param name="DataType" value="HTMLDATA">
<param name="AutoFit" value="0">
<param name="DisplayColHeaders" value="-1">
<param name="DisplayGridlines" value="-1">
<param name="DisplayHorizontalScrollBar" value="-1">
<param name="DisplayRowHeaders" value="-1">
<param name="DisplayTitleBar" value="-1">
<param name="DisplayToolbar" value="-1">
<param name="DisplayVerticalScrollBar" value="-1">
<param name="EnableAutoCalculate" value="-1">
<param name="EnableEvents" value="-1">
<param name="MoveAfterReturn" value="-1">
<param name="MoveAfterReturnDirection" value="0">
<param name="RightToLeft" value="0">
<param name="ViewableRange" value="1:65536">
</object>
<div class="hiddenTD" id="tablers">
<table width=95% align=center border=1 cellspacing=0 cellpadding=0>
<tr>
  <td>客户名称A</td>
  <td>客户名称B</td>
  <td>客户名称C</td>
  <td>客户名称D</td>
  <tr>
  <td>abc</td>
  <td>def</td>       <td>111</td>       <td>222</td>     <tr>
  <td>ddd</td>
  <td>dfdf</td>
  <td>ddd</td>  
  <td>ddd</td>
</table>
</div>
<script language="javascript">
Spreadsheet1.HTMLData = tablers.innerHTML ;
</script>




类别: jsp |  评论(0) |  浏览(2882) |  收藏
发表评论