2011/12/26 11:11

android Android

-액티비티 라이프사이클
onCreate()
onStart()
onRestart()
onResume()
onPause()
onStop()
onDestroy()



2011/12/15 15:04

스프링 데이터베이스 정리

필요 라이브러리
commons-collections-3.2.1.jar
commons-dbcp-1.4.jar
commons-logging-1.1.1.jar
commons-pool-1.5.6.jar
ojdbc14.jar
org.springframework.aop-3.0.6.RELEASE.jar
org.springframework.asm-3.0.6.RELEASE.jar
org.springframework.beans-3.0.6.RELEASE.jar
org.springframework.context.support-3.0.6.RELEASE.jar
org.springframework.context-3.0.6.RELEASE.jar
org.springframework.core-3.0.6.RELEASE.jar
org.springframework.expression-3.0.6.RELEASE.jar
org.springframework.jdbc-3.0.6.RELEASE.jar
org.springframework.transaction-3.0.6.RELEASE.jar
데이터베이스(오라클)
테이블
CREATE TABLE "GUESTBOOK_MESSAGE" ( "MESSAGE_ID" NUMBER(5,0), "GUEST_NAME" VARCHAR2(20) DEFAULT null, "MESSAGE" VARCHAR2(4000), "REGISTRY_DATE" DATE DEFAULT null, CONSTRAINT "GUESTBOOK_MESSAGE_PK" PRIMARY KEY ("MESSAGE_ID") ENABLE )/
시퀀스
CREATE SEQUENCE "GUEST_SEQ" MINVALUE 1 MAXVALUE 99999 INCREMENT BY 1 START WITH 127 NOCACHE NOORDER NOCYCLE
/
GuestMessageRowMapper.java
package com.lrr.spring.dao;

import java.sql.ResultSet;
import java.sql.SQLException;

import org.springframework.jdbc.core.RowMapper;

import com.lrr.spring.model.GuestMessage;

public class GuestMessageRowMapper implements RowMapper<GuestMessage>{

 @Override
 public GuestMessage mapRow(ResultSet rs, int rowNum) throws SQLException {
  GuestMessage message = new GuestMessage();
  message.setId(rs.getInt("MESSAGE_ID"));
  message.setGuestName(rs.getString("GUEST_NAME"));
  message.setMessage(rs.getString("MESSAGE"));
  message.setRegistryDate(rs.getDate("REGISTRY_DATE"));
  
  return message;

 }
}

JdbcTemplateGuestMessageDao.java
package com.lrr.spring.dao;

import java.sql.Types;
import java.util.List;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;

import com.lrr.spring.model.GuestMessage;


public class JdbcTemplateGuestMessageDao implements GuestMessageDao {
 private JdbcTemplate jdbcTemplate;
 public JdbcTemplateGuestMessageDao(DataSource dataSource){
  jdbcTemplate = new JdbcTemplate(dataSource);
 }
 @Override
 public int count() {
  return jdbcTemplate.queryForInt("select count(*) from GUESTBOOK_MESSAGE ");
 }
 
 @Override
 public List<GuestMessage> select(int begin, int end) {
  return jdbcTemplate.query("select * from (select ROWNUM rnum, MESSAGE_ID, GUEST_NAME, MESSAGE, REGISTRY_DATE from (select * from GUESTBOOK_MESSAGE order by MESSAGE_ID desc)) where rnum>=? and rnum<=? ",new Object[]{begin, end},new GuestMessageRowMapper());
 }
 @Override
 public int insert(GuestMessage message) {
  int insertedCount = jdbcTemplate.update("insert into GUESTBOOK_MESSAGE(MESSAGE_ID,GUEST_NAME,MESSAGE,REGISTRY_DATE) values(guest_seq.nextval,?,?,?) ",message.getGuestName(),message.getMessage(), message.getRegistryDate());
  return insertedCount;
 }

 @Override
 public int delete(int id) {
   return jdbcTemplate.update("delete from GUESTBOOK_MESSAGE where MESSAGE_ID = ? ",id);
 }

 @Override
 public int update(GuestMessage message) {
  return jdbcTemplate.update("update GUESTBOOK_MESSAGE set MESSAGE = ? where GUEST_NAME = ? ",new Object[]{message.getMessage(), message.getGuestName()}, new int[]{Types.VARCHAR,Types.VARCHAR});
 }

}

GuestMessage.java
package com.lrr.spring.model;

import java.util.Date;

public class GuestMessage {
 private Integer id;
 private String guestName;
 private String message;
 private Date registryDate;
 
 public Integer getId() {
  return id;
 }
 public void setId(Integer id) {
  this.id = id;
 }
 public String getGuestName() {
  return guestName;
 }
 public void setGuestName(String guestName) {
  this.guestName = guestName;
 }
 public String getMessage() {
  return message;
 }
 public void setMessage(String message) {
  this.message = message;
 }
 public Date getRegistryDate() {
  return registryDate;
 }
 public void setRegistryDate(Date registryDate) {
  this.registryDate = registryDate;
 }
}

GuestMessageList.java
package com.lrr.spring.model;

import java.util.List;

public class GuestMessageList {
 private int totalCount;
 private int pageNum;
 private int begin;
 private int end;
 private List<GuestMessage> messages;
 public GuestMessageList(int totalCount, int pageNum, int begin, int end, List<GuestMessage> messages){
  this.totalCount = totalCount;
  this.pageNum = pageNum;
  this.begin = begin;
  this.messages = messages;
  
 }
 
 public int getTotalCount() {
  return totalCount;
 }
 public void setTotalCount(int totalCount) {
  this.totalCount = totalCount;
 }
 public int getPageNum() {
  return pageNum;
 }
 public void setPageNum(int pageNum) {
  this.pageNum = pageNum;
 }
 public int getBegin() {
  return begin;
 }
 public void setBegin(int begin) {
  this.begin = begin;
 }
 public int getEnd() {
  return end;
 }
 public void setEnd(int end) {
  this.end = end;
 }
 public List<GuestMessage> getMessages() {
  return messages;
 }
 public void setMessages(List<GuestMessage> messages) {
  this.messages = messages;
 }
}

GuestMessageService.java
package com.lrr.spring.service;

import com.lrr.spring.model.GuestMessage;
import com.lrr.spring.model.GuestMessageList;

public interface GuestMessageService {
 GuestMessage write(GuestMessage message);
 GuestMessageList getMessageList(int pageNum);
}    

GuestMessageServiceImpl.java
package com.lrr.spring.service;

import java.util.Collections;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import com.lrr.spring.dao.GuestMessageDao;
import com.lrr.spring.model.GuestMessage;
import com.lrr.spring.model.GuestMessageList;

public class GuestMessageServiceImpl implements GuestMessageService {
 public static final int DEFAULT_PAGE_SIZE = 20;
 private int pageSize = DEFAULT_PAGE_SIZE;
 private GuestMessageDao guestMessageDao;
 
 @Transactional
 public GuestMessage write(GuestMessage message) {
  message.setRegistryDate(new Date());
  guestMessageDao.insert(message);
  return message; 
 }

 @Transactional
 public GuestMessageList getMessageList(int pageNum) {
  int totalCount = guestMessageDao.count();
  
  if(totalCount == 0){
   return new GuestMessageList(0,0,0,0,Collections.<GuestMessage> emptyList());
  }
  
  int begin = (pageNum-1)* pageSize + 1;
  int end = pageNum * pageSize;
  if(end > totalCount){
   end = totalCount;
  }
  List<GuestMessage> messages = guestMessageDao.select(begin, end);
  return new GuestMessageList(totalCount, pageNum, begin, end, messages);
  
 }
 @Autowired
 public void setGuestMessageDao(GuestMessageDao guestMessageDao){
  this.guestMessageDao = guestMessageDao;
 }
 
 public void setPageSize(int pageSize){
  this.pageSize = pageSize;
 }

}

applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 xmlns:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context-3.0.xsd">

 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
  destroy-method="close" p:driverClassName="oracle.jdbc.driver.OracleDriver"
  p:url="jdbc:oracle:thin:@localhost:1521:xe" p:username="scott"
  p:password="tiger" />

 <bean id="transactionManager"
  class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
  p:dataSource-ref="dataSource" />

 <bean id="jdbcTemplateGuestMessageDao" class="com.lrr.spring.dao.JdbcTemplateGuestMessageDao">
  <constructor-arg>
   <ref bean="dataSource" />
  </constructor-arg>

 </bean>

</beans>


2011/12/12 14:45

알아볼 것 정리


  1. 프레임워크
  2. 스프링 프레임워크
  3. 엔터프라이즈
  4. 엔터프라이즈 빈(MDB(Message-Driven Bean)와 같은것이었다!)
  5. 엔터프라이즈 어플리케이션
  6. JEE(Java Enterprise Edition)
  7. 서블릿
  8. 트랜잭션
  9. 세션 빈
  10. 엔티티 빈
  11. EJB컨테이너
  12. 데이터베이스 매핑
  13. POJO(Plain Old Java Object)
  14. JPA(Java Persistence API)
  15. 컴포넌트 기반 개발의 개념

2011/12/08 18:25

cui환경의 메신저 만들기(미완성) 잡동사니

진행상황
2011. 12. 8 (20:58)
Client, Server, ServerThread Class 일부 작성. Client에서 Server에 접속은 되지만,
어찌된 영문인지 메세지를 보내도 반응이 없다.


파일명 : Client.java
  


import java.io.*;
import java.net.*;

public class Client {
private String user;
 private String id;
 private String password;
 private BufferedReader in;
 private PrintWriter out;
private Socket socket;
 public Client() {
   in = new BufferedReader(new InputStreamReader(System.in));
  Login();
  try{
 
  out = new PrintWriter(socket.getOutputStream());
  System.out.println(id+" 접속 성공/"+socket);
  while(true){
 System.out.print("메세지 : " );
 String msg = in.readLine();
 out.println(msg);
  }
  }catch(IOException e){
   e.printStackTrace();
  }
 }

//하나의 클래스로 뺄 예정.
 public void Login() {
  while (true) {
   try {
    System.out.print("id : ");
    id = in.readLine();
 if(id.equals("")) continue;   
    System.out.print("password : ");
    password = in.readLine();
 if(password.equals("")) continue;   
   } catch (Exception e) {
    System.out.println("*");
    System.out.println("다시 입력해 주세요.");
    System.out.println("*");
   }
   //DB작업이 들어갈 예정.
   if(id.equals("id") && password.equals("pass")){
    try{
  socket = new Socket("localhost",9212);
    }catch(Exception e){
  System.out.println("서버에 접속할 수 없습니다.");
    }
   }
  
   return;
  }
 }

 public static void main(String[] args) {
  new Client();
 }
}

 

 



파일명 : Server.java 


import java.net.*;
import java.io.*;
public class Server {
 ServerSocket serversocket = null;
 Socket socket = null;
 BufferedReader in = null;
 public Server() throws IOException{
  serversocket = new ServerSocket(9212);
  
  while(true){
  
   try{
   socket = serversocket.accept(); 
   in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
   System.out.println(socket+"님이 접속 하셨습니다.");
   ServerThread t = new ServerThread(socket);
   t.start();
   }catch(IOException e){
 e.printStackTrace();
  }finally{
  
  }
 }
 }
 public static void main(String[] args)throws IOException {
 new Server();
 }
}


 

파일명 : ServerThread.java 


import java.lang.*;
import java.io.*;
import java.net.*;

class ServerThread extends Thread{
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private String msg;
public ServerThread(Socket socket){
this.socket = socket;
}
public synchronized void run() {
   try{
 in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream());
   System.out.println("run!");
 while(true){
  System.out.println("Dd");
  msg = in.readLine();
  System.out.println(msg);
  out.write(msg);

 } 
 }catch(IOException e){
 e.printStackTrace();
  }
}
}


2011/12/08 17:22

소켓 네트워크를 이용한 멀티채팅 잡동사니

MultiServer.java



import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;

public class MultiServer {
 private ArrayList<MultiServerThread> clientList = new ArrayList<MultiServerThread>();
 private ServerSocket server = null;
 public MultiServer(){
  try{
   server = new ServerSocket(5000);
   System.out.println("server start..");
   while(true){
    Socket socket = server.accept();
    InetAddress ip = socket.getInetAddress();
    String ipAddress = ip.getHostAddress();
    System.out.println(ipAddress+" 접속 !");
    MultiServerThread t = new MultiServerThread(clientList,socket);
    
    t.start();
    clientList.add(t);
   }
   
  }catch(IOException e){
   System.out.println(e.getMessage());
  }
 }
 public static void main(String[] args){
  new MultiServer();
 }

}




파일명 : MultiServerThread.java


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.ArrayList;


public class MultiServerThread extends Thread{
 private Socket socket;
 private BufferedReader in;
 private PrintWriter out;
 private ArrayList<MultiServerThread> clientList;
 public MultiServerThread(ArrayList<MultiServerThread> clientList, Socket socket){
   this.socket = socket;
   this.clientList = clientList;
 }
 public synchronized void run(){
  try{
   in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
   out = new PrintWriter(socket.getOutputStream());
   while(true){
    String msg = in.readLine();
    System.out.println(msg);
    broadcasting(msg);
   }
  }catch(IOException e){
   clientList.remove(this);
   String ipAddress = socket.getInetAddress().getHostAddress();
   try{
    broadcasting(ipAddress + "님이 접속종료 하셨음");
   }catch(IOException ee){}
  }
 }
 public void broadcasting(String msg) throws IOException{
  for(MultiServerThread t : clientList){
   t.sendMsg(msg);
  }
 }
 public void sendMsg(String msg) throws IOException{
  out.println(msg);
  out.flush();
 }
}


 



파일명 : MultiClient.java


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class MultiClient {
 private Socket socket;
 private BufferedReader in;
 private PrintWriter out;
 private BufferedReader keyboard;

 public MultiClient() {
  try {
   socket = new Socket("localhost", 5000);
   System.out.println("서버 접속 완료");
   keyboard = new BufferedReader(new InputStreamReader(System.in));
   out = new PrintWriter(socket.getOutputStream(), true);
   in = new BufferedReader(new InputStreamReader(
     socket.getInputStream()));

   MultiClientThread t = new MultiClientThread(in);
   t.start();
   while (true) {
    String text = keyboard.readLine();
    out.println(text);
   }
  } catch (UnknownHostException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 public static void main(String[] args) {
  new MultiClient();

 }

}



파일명 : MultiClientThread.java


import java.io.BufferedReader;
import java.io.IOException;

public class MultiClientThread extends Thread{
private BufferedReader in;
public MultiClientThread(BufferedReader in){
 this.in = in;
}
public void run(){
 try{
  while(true){
   String text = in.readLine();
   System.out.println("받은 메세지 : " + text);
  }
 }catch(IOException e){
  e.printStackTrace();
 }
}
}


1 2 3