정규식을 이용한 자바 특수문자 체크입니다.
if(!nickname.matches([0-9|a-z|A-Z|ㄱ-ㅎ|ㅏ-ㅣ|가-힝]*"){ //특수문자가 있을 경우}else{ //특수문자가 없을 경우} |
정규식 너무 편합니다.
자바 위키 -http://ko.wikipedia.org/wiki/자바
정규식을 이용한 자바 특수문자 체크입니다.
if(!nickname.matches([0-9|a-z|A-Z|ㄱ-ㅎ|ㅏ-ㅣ|가-힝]*"){ //특수문자가 있을 경우}else{ //특수문자가 없을 경우} |
정규식 너무 편합니다.
AES알고리즘
http://marcof.tistory.com/95
위키
http://ko.wikipedia.org/wiki/고급_암호화_표준
/**
* AES 방식의 암호화
*
* @param message
* @return
* @throws Exception
*/
public static String encrypt(String message) throws Exception {
// use key coss2
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), “AES”);
// Instantiate the cipher
Cipher cipher = Cipher.getInstance(“AES”);
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(message.getBytes());
return byteArrayToHex(encrypted);
}
/**
* AES 방식의 복호화
*
* @param message
* @return
* @throws Exception
*/
public static String decrypt(String encrypted) throws Exception {
// use key coss2
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), “AES”);
Cipher cipher = Cipher.getInstance(“AES”);
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] original = cipher.doFinal(hexToByteArray(encrypted));
String originalString = new String(original);
return originalString;
}
public static void main(String[] args)
{
try {
String encrypt = encrypt(“test1234″);
System.out.println(“origin str = “+”test1234″);
System.out.println(“encrypt str = “+encrypt);
String decrypt = decrypt(encrypt);
System.out.println(“decrypt str = “+decrypt);
} catch (Exception e) {
e.printStackTrace();
}
}
}
JSON 문자열로 변환하기
– JSON 객체를 생성
JSONObject jsonObj = new JSONObject();
– JSON 객체에 데이터 저장(복수저장 가능)
jsonObj.put("이름1", "내용1");
jsonObj.put("이름2", "내용2");
– JSON 객체를 전송할 문자열로 변환
String sendMsg = jsonObj.toJSONString();
여기서 만들어진 문자열을 전송시에 이용하시면 됩니다.
JSON 문자열 파싱하기
– JSON Parser 생성
JSONParser parser = new JSONParser();
– 넘어온 문자열을 JSON 객체로 변환
JSONObject jsonObj = (JSONObject)parser.parse(receiveMsg);
– JSON 객체에서 데이터 가져오기
String data1 = jsonObj.get("이름1").toString();
String data2 = jsonObj.get("이름2").toString();
이런 형태로 이용하면 된다.
## 추가내용 ##
JSON 배열 저장하기
– JSON 배열객체 생성
JSONArray jArr = new JSONArray();
– 여러개의 JSON 객체 생성
JSONObject obj1 = new JSONObject();
obj1.put("name","유준상");
obj1.put("sex","남");
JSONObject obj2 = new JSONObject();
obj2.put("name","티아라");
obj2.pub("sex","여");
– JSONArray에 담기
jArr.add(obj1); jArr.add(obj2);
– JSON 객체생성
JSONObject jObj = new JSONObject();
– JSON 객체에 배열을 담음
jObj.put("연예인", jArr);
– JSONArray 가져오기
JSONArray arr = (JSONArray)jObj.get("연예인")
– iterator를 가져와서 처리
Iterator it = outArr.iterator();
– 반복하여 존재하는 데이터 가져옴
while(it.hasNext()){
JSONObject o = (JSONObject)it.next();
}
참고로 JSON을 이용하기 위해서는 JSON 패키지를 설치하시고,
import org.json.simple.JSONObject; 를 포함 시켜서 이용하세요~
1. JSON.simple Dependency
Maven을 사용한다면 pom.xml에 설정하나로 central repository에서 받아오게 설정
<dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> <version>1.1</version> </dependency>
아니면 직접 json_simple-1.1.jar를 다운 받아서 클래스 패스 설정
http://code.google.com/p/json-simple/
2. Write JSON to file
import java.io.FileWriter;
import java.io.IOException;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
public class JsonSimpleExample {
public static void main(String[] args) {
JSONObject obj = new JSONObject();
obj.put("name", "mkyong.com");
obj.put("age", new Integer(100));
JSONArray list = new JSONArray();
list.add("msg 1");
list.add("msg 2");
list.add("msg 3");
obj.put("messages", list);
try {
FileWriter file = new FileWriter("c:\\test.json");
file.write(obj.toJSONString());
file.flush();
file.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.print(obj);
}
}
Output : test.json
{ "age":100, "name":"mkyong.com", "messages":["msg 1","msg 2","msg 3"] }
3. Read JSON from file
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class JsonSimpleExample {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(new FileReader("c:\\test.json"));
JSONObject jsonObject = (JSONObject) obj;
String name = (String) jsonObject.get("name");
System.out.println(name);
long age = (Long) jsonObject.get("age");
System.out.println(age);
// loop array JSONArray msg = (JSONArray)
// jsonObject.get("messages");
Iterator<String> iterator = msg.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
Output :
mkyong.com 100 msg 1 msg 2 msg 3
자바 또는 안드로이드 통신을 하기 위해
타입은 스트링(String)이지만 데이터 값은 JSON 상태를 가지고 있을 수 있다.
예) String test = {“text” : [ { “code” : “011”, “responsetext” : “응답입니다.” } ] }; (문법 무시)
이런식으로.
그러나 다른 객체 등과의 통신을 위해서 JSONObject 로 변환해야 할 때가 있다.
이 때는 이렇게 선언하면 된다.
JSONObject json = null;
json = new JSONObject(test);
간단하다.
이외에 JSON을 처리하는 코드는 다른 문서를 참조하자.
자바로 DNS 를 조회해보자..
package demo;
import java.net.UnknownHostException;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
public class test {
public static void main(String[] args) throws NamingException, UnknownHostException {
<span style="text-decoration: underline;">Hashtable</span> env = new <span style="text-decoration: underline;">Hashtable</span>();
<span style="text-decoration: underline;">env</span><span style="text-decoration: underline;">.</span><span style="text-decoration: underline;">put</span><span style="text-decoration: underline;">(</span><span style="text-decoration: underline;">Context</span><span style="text-decoration: underline;">.</span><span style="text-decoration: underline;">INITIAL_CONTEXT_FACTORY</span><span style="text-decoration: underline;">,</span> <span style="text-decoration: underline;">"com.sun.jndi.dns.DnsContextFactory"</span><span style="text-decoration: underline;">)</span>;
DirContext ictx = new InitialDirContext(env);
String dnsServers = (String) ictx.getEnvironment().get("java.naming.provider.url");
System.out.println("DNS Servers: " + dnsServers );
}
}
자바로 서버 Host 조회 해보자 ..
package test;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class DnsTest {
public static void main(String[] args) {
try {
InetAddress inetAddress = InetAddress.getLocalHost();
displayStuff("local host", inetAddress);
System.out.print("--------------------------");
inetAddress = InetAddress.getByName("www.google.com");
displayStuff("www.google.com", inetAddress);
System.out.print("--------------------------");
InetAddress[] inetAddressArray = InetAddress
.getAllByName("www.google.com");
for (int i = 0; i < inetAddressArray.length; i++) {
displayStuff("www.google.com #" + (i + 1), inetAddressArray[i]);
}
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
public static void displayStuff(String whichHost, InetAddress inetAddress) {
System.out.println("--------------------------");
System.out.println("Which Host:" + whichHost);
System.out.println("Canonical Host Name:"
+ inetAddress.getCanonicalHostName());
System.out.println("Host Name:" + inetAddress.getHostName());
System.out.println("Host Address:" + inetAddress.getHostAddress());
}
}
URL 뒤에 데이터를 덧붙이고자 할때 스트링을 URL에 맞게 인코딩을 해야하는데 아래와 같이 하면 된다.
String encodeResult = URLEncoder.encode(String encodingString, String charsetName);
그냥 URLEncoder.encode(String s); 는 deprecated 되었으니까 사용하지 말고 위의 함수를 사용하자.
charsetName에는 “UTF-8″과 같은 캐릭터 인코딩 셋을 넣으면 된다.
반대로 디코딩하는 것은 아래와 같이 하면 된다.
String decodeResult = URLDecoder.decode(String decodingString, String charsetName);
끝.
현재 mybatis는 3.1.1 까지 나와 있다.
하지만 뭐가 문제인지 spring 3.1.1에서 같이 사용해보니 아래와 같은 오류가 난다.
java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransactionFactory.newTransaction(Ljava/sql/Connection;)Lorg/apache/ibatis/transaction/Transaction;
그래서 3.1.0으로 해봤으나 결과는 같은 오류가 났다.
다시 버전을 하나더 내려서 3.0.6으로 해봤더니 정상적으로 동작하는걸 확인할 수 있었다.
======================================================================================================================
위의 문제가 발생한 원인은
mybatis-3.1.1.jar 과 mybatis-spring-1.0.0-RC3.jar를 사용하여 발생한 문제 인것으로 추측 된다.
mybatis-3.1.1.jar 과 mybatis-spring-1.1.1.jar을 사용하니 위와 같은 문제는 해결 되었다.
어찌보면 너무나도 당연한것 같은데 모르고 있었을때는 한없이 어렵다.
문제:
JEUS를 설치하고 끄고 켜기를 몇 번 하다보니, 아래와 같은 에러가 발생했다.
java.net.BindException: Address already in use: JVM_Bind
아무래도 기존 프로세스가 죽지 않아서 그런 것 같은데,
무슨 오류일까…
해결책:
해당 포트가 이미 사용 중이란 오류이므로, 해당 포트를 사용하는 프로세스를 종료해주면 된다.
그 프로세스가 어떤 건지 모를 경우, cmd 에서
또는 작업 관리자에서 PID 를 보이게 한 후, 종료하면 된다.
** 추가: 2010.01.21
위 에러 발생이 잦아 매번 찾기 번거로워 간단한 배치파일을 하나 만들었다.
포트를 사용하는 프로세스를 찾아 죽이는 기능을 한다.
배치 파일을 실행시켜 찾을 포트를 입력하면, 해당 포트의 목록을 보여준다.
(맨 오른쪽 컬럼이 PID 를 가리킨다.)
포트 목록을 확인하고, 삭제할 PID 를 입력하면 해당 프로세스가 죽는다.
|
좋아요 |
한 명이 좋아합니다. 친구들이 무엇을 좋아하는지 알아보려면 가입하기 |
| JSP, Servlet Spec 버전과 WAS (0) | 2009/12/04 |
|---|---|
| 자바는 기본적으로 값에 의한 전달(Pass-by-value)을 한다. (0) | 2009/12/03 |
| java.net.BindException: Address already in use: JVM_Bind (1) | 2009/11/25 |
| Servlet Thread – Serlvet 은 Runnable을 구현하나? (0) | 2009/11/24 |
| 동기화를 지원하는 컬렉션 (0) | 2009/11/24 |
| 정규식 (Regular Expression) (0) | 2009/11/20 |