Posted by 唧唧 | tags:
ajax
乱码
好久不用ajax,今天需要用到,却因为提交的中文乱码问题郁闷了半天,特整理出来与大家分享!
ajax Js 客户端:
var data = "words="+encodeURI(encodeURI(_word)); // 注意,这里把需要提交的中文字符串进行两次encodeURI
xmlhttp.open("post",postAction, true);
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttp.send(data);
ajax Java 服务器端:
String words= request.getParameter("words");
...
Posted by 唧唧 | tags:
Tomcat
中文乱码
本来解决 Tomcat 中文乱码很久了,但是今天重装了一下Tomcat,忘记配置了,结果用URL get方式传递的中文参数出现了乱码,这里就再提一下不用filter,直接修改Tomcat配置文件的解决方法:
Tomcat5+已经把get和post分开处理了,其设置编码方式也有所不同。
根据 http://tomcat.apache.org/tomcat-5.5-doc/config/http.html 得需要设置URIEncoding & useBodyEncodingForURI,否则默认编码方式为"ISO-8859-1"
这里以Tomcat 5.0 为例,其他版本的类似,修改 conf/server.xml :
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
红色部分为新增,URIEncoding 可以改为 gbk 或者 gb2312,但是建议还是使用UTF-8!最好就是从代码到应用全都utf-8!
另外,jsp页面也需要声明编码:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
...
Posted by 唧唧 | tags:
String
substring
subSequence
今天截取字符串的时候,无意中发现了subSequence,并且不小心用上了,呵呵,发现同样能和substring一样截取,效果一模一样。我就好奇地翻看了一下源码:
public CharSequence subSequence(int beginIndex, int endIndex) {
return this.substring(beginIndex, endIndex);
}
根据JDK的文档,String.subSequence只是为了实现CharSequence接口上的同名方法而放在那里的,其行为与String.substring一样。
区别是:substring和subSequence的返回类型不一样,substring返回的是String,subSequence返回的是实现了CharSequence接口的类,也就是说使用subSequence得到的结果,只能使用CharSequence接口中的方法。不过在String类中已经重写了subSequence,调用subSequence方法,可以直接下转为String对象。
Posted by 唧唧 | tags:
Java
时间比较
在项目开发当中,我们时常碰到要比较两个时间或者与当前时间相差多少天,多少个月,多少年的问题。
本人结合网上的一些例子,稍作修改,提供出下面示例,与网友们分享。
java代码
- package com.test;
-
- import java.text.DateFormat;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
-
-
-
-
-
-
- public class DateTest {
-
- public static void main(String[] args) {
- String date = "2008-06-12";
-
- DateTest.compareDate(date, null, 0);
- DateTest.compareDate(date, null, 1);
- DateTest.compareDate(date, null, 2);
-
- date = "2006-06-03";
- DateTest.compareDate(date, null, 0);
- DateTest.compareDate(date, null, 1);
- DateTest.compareDate(date, null, 2);
- DateTest.compareDate(date, "2009-06-01", 0);
- DateTest.compareDate(date, "2009-06-01", 1);
- DateTest.compareDate(date, "2009-06-01", 2);
- }
-
-
-
-
-
-
-
- public static int compareDate(String date1,String date2,int stype){
- int n = 0;
-
- String[] u = {"天","月","年"};
- String formatStyle = stype==1?"yyyy-MM":"yyyy-MM-dd";
-
- date2 = date2==null?DateTest.getCurrentDate():date2;
-
- DateFormat df = new SimpleDateFormat(formatStyle);
- Calendar c1 = Calendar.getInstance();
- Calendar c2 = Calendar.getInstance();
- try {
- c1.setTime(df.parse(date1));
- c2.setTime(df.parse(date2));
- } catch (Exception e3) {
- System.out.println("wrong occured");
- }
-
- while (!c1.after(c2)) {
-
- n++;
- if(stype==1){
- c1.add(Calendar.MONTH, 1);
- }
- else{
- c1.add(Calendar.DATE, 1);
- }
- }
-
- n = n-1;
-
- if(stype==2){
- n = (int)n/365;
- }
-
- System.out.println(date1+" -- "+date2+" 相差多少"+u[stype]+":"+n);
- return n;
- }
-
-
-
-
-
- public static String getCurrentDate() {
- Calendar c = Calendar.getInstance();
- Date date = c.getTime();
- SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd");
- return simple.format(date);
-
- }
- }
运行结果:
2008-06-12 -- 2009-06-09 相差多少天:362
2008-06-12 -- 2009-06-09 相差多少月:12
2008-06-12 -- 2009-06-09 相差多少年:0
2006-06-03 -- 2009-06-09 相差多少天:1102
2006-06-03 -- 2009-06-09 相差多少月:36
2006-06-03 -- 2009-06-09 相差多少年:3
...
Posted by 唧唧 | tags:
SQL
存储过程
遍历
数组
这里假设有 一串数组变量 "appNum1,appNum2,appNum3,appNum4,appNum5,appNum6,appNum7,appNum8"
当我们需要在存储过程中遍历这个数组的子项时,我们可以通过 CHARINDEX 或者结合Left,Right来分隔和遍历它
注意:由于字符串index的计算问题,下面定义变量的时候,需要在最后面增加一个逗号",",否则遍历的时候将缺少最后一个子项
方法一:
代码
- declare @item varchar(50),@rowName varchar(200)
- declare @m int,@n int,@i int
-
- Set @rowName='appNum1,appNum2,appNum3,appNum4,appNum5,appNum6,appNum7,appNum8,'
-
- Set @m=CHARINDEX(',',@rowName)
- Set @n=1
- Set @i=0
-
- WHILE @m>0
- BEGIN
- Set @item=SubString(@rowName,@n,@m-@n)
- Print Cast(@i as varchar)+'-'+@item
- Set @i=@i+1
- Set @n=@m+1
- Set @m=CHARINDEX(',',@rowName,@n)
- END
方法二:
代码
- DECLARE @s varchar(4000)
- DECLARE @i int
- Set @i=0
-
- SET @s='appNum1,appNum2,appNum3,appNum4,appNum5,appNum6,appNum7,appNum8,'
- WHILE CHARINDEX(',',@s)>0
- BEGIN
- Print Cast(@i as varchar)+'-'+LEFT(@s,CHARINDEX(',',@s)-1)
- Set @i=@i+1
- SET @s=RIGHT(@s,LEN(@s)-CHARINDEX(',',@s))
- END
两个方法的运行结果都是:
0-appNum1
1-appNum2
2-appNum3
3-appNum4
4-appNum5
...
Posted by 唧唧 | tags:
SQL
存储过程
游标
遍历
我们在使用存储过程当中,有时在统计数据的时候,需要查询某表中的数据,并且得到指定字段的具体值,这时就需要用到游标查询来遍历表数据
示例:
这里有一个表(demo),字段结构和数据如下:
idf namef websitef
----------- -------------------- -------------------------------------------
1 javawind http://www.javawind.net
2 blog http://blog.javawind.net
3 csdn http://www.csdn.net
...
Posted by 唧唧 | tags:
SQL
DateTime
日期
时间
我们知道SQL中表示日期和时间的数据类型为DateTime,数据格式如 '2009-04-13 11:00:27.857',日期和时间是结合在一起的,有时我们只想要日期不要时间,有时我们只要时间而不要日期。可以通过Convert()函数来达到我们的目的。
Convert()函数的功能是:将某种数据类型的表达式显式转换为另一种数据类型。
Convert()函数的格式是:Convert(Data_Type[(Length)], Expression [, Style])
Data_Type[(Length)]为转换后的数据类型,Length为长度,可选(转换为某些数据类型时不需要写);Expression为备转换的表达式,Style为日期时间样式。
...
Posted by 唧唧 | tags:
Tomcat
虚拟目录
这里假设设置虚拟目录 "javawind",通过 http://localhost:8080/javawind 访问物理路径 D:\javawind\webRoot 文件夹里面的内容。设置过程如下:
第一种方法:打开 Tomcat6.0\conf\server.xml 文件,在 <Host> 和 </Host> 之间加入:即:<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
后面一行插入
...
Posted by 唧唧 | tags:
遍历
HashMap
以下通过程序来简单实践一下HashMap的的遍历
PS:如果要保持HashMap的遍历顺序和原插入顺序一致,可以使用LinkedHashMap,使用方法和HashMap一样,改一下声明即可:LinkedHashMap myMap = new LinkedHashMap(); 当然需要导入:java.util.LinkedHashMap
import java.util.Collection;
import java.util.HashMap;
...
Posted by 唧唧 | tags:
jdom
xml
事先需要从这里下载:http://www.jdom.org/dist/binary/ jdom api,导入build目录的 jdom.jar
JdomRWXML.java 源码:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
...