C++ 의 template 구문이 java 5 부터 추가된 저너릭스랑 비슷한 거였구나!

[code]#include <iostream>
using std::endl;
using std::cout;

template <typename T>
class Data
{
 T data;
public:
 Data(T d){ data=d; }
 void SetData(T d){
  data=d;
 }
 T GetData(){
  return data;
 }
};

int main(void)
{
 Data<int> d1(0); // T를 int로 간주하고 객체생성
 d1.SetData(10);
 Data<char> d2('a'); // T를 char로 간주하고 객체생성
 cout << d1.GetData() << endl;
 cout << d2.GetData() << endl;
 return 0;
}[/code] 

'2007년1학기 > C++프로그래밍' 카테고리의 다른 글

C++ 11장 12장  (42) 2007.05.30
C++ 과제  (22) 2007.05.23
CPP 10장  (19) 2007.05.23
<< 연산자 오버로딩 하기  (23) 2007.05.23
CPP 9장  (42) 2007.05.09
by cranix 2007. 5. 30. 14:49

'2007년1학기 > C++프로그래밍' 카테고리의 다른 글

C++ template 과 java 저너릭스  (41) 2007.05.30
C++ 과제  (22) 2007.05.23
CPP 10장  (19) 2007.05.23
<< 연산자 오버로딩 하기  (23) 2007.05.23
CPP 9장  (42) 2007.05.09
by cranix 2007. 5. 30. 14:04

Spring 의 bean 부분의 예외를 처리했다고 해도.

기본적으로 jsp 페이지 내에서 발생하는 예외는 spring 만으론 잡을수 없다.

그래서 아래와같은 방법을 썻다.

- web.xml

[code] <error-page>
  <exception-type>java.lang.Exception</exception-type>
  <location>/WEB-INF/jsp/error.jsp</location>
 </error-page>[/code]

- 위와같이 error.jsp 파일을 지정한다.

- error.jsp

[code]<%@page contentType="text/html;chraset=utf-8" isErrorPage="true"%>
<%=exception%>[/code]

- 여기서 중요한건 isErrorPage 속성을 true 로 했다는것이다.
- 이렇게 하면 request  에 "javax.servlet.error.exception"  라는 attribute 가 들어있으면 위와같이 그냥 exception 변수를 쓸수있게 된다.


- BaseExceptionResolver.java

[code]package dic.resolver;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

public class BaseExceptionResolver implements HandlerExceptionResolver {

 private String view = null;
 public void setView(String view) {
  this.view = view;
 }
 
 public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object obj, Exception exception) {
  exception.printStackTrace();
  request.setAttribute("javax.servlet.error.exception",exception);
  return new ModelAndView(view);
 }

}[/code]

- 위 파일은 예전에 bean 예외를 잡기위해 만들었던 파일인데 저기다가 위와같이 request 에 javax.servlet.error.exception 예외를 추가하면 jsp 의 errorpage 를 그대로 사용할수 있다.


자 이것으로 class 와 page 에서 나는 모든 에러를 한 페이지에서 잡을수 있게 되었다.

by cranix 2007. 5. 30. 11:38
아무도 가르쳐주지 않는 길을
무서워하지 않기를 바랄게요
기다려줄 수 있지요
꿈을 보고 싶다면
꿈을 만나고 싶다면
나는 걸 용기 내세요
믿기 때문에 날 수 있는 거니까요


- 이희정의 시화그림집《너를 사랑하게 되다》중에서 -

'자유글 > 좋은글' 카테고리의 다른 글

나는 지금 나의 세상밖에 볼수 없으니까.  (25) 2007.08.03
기원의 기술  (25) 2007.07.02
낯선 것을 거부하지 않는 용기  (41) 2007.05.03
삶에 한 가지를 더 보태라  (646) 2007.04.17
게으름이 인생을 먹어치운다.  (42) 2007.04.10
by cranix 2007. 5. 30. 09:05

Spring 에서 Exception 을 처리하기위해서는 두가지 방법이 있다.

첫번째는 아래와같이 SimpleMappingExceptionResolver 클래스를 사용하는 방법이다.

- springapp-servlet.xml

[code]    <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
     <property name="exceptionMappings">
      <props>
       <prop key="java.lang.Exception">error</prop>
      </props>
     </property>
    </bean>[/code]


여기서 쓰인 error 는 viewResolver 에 의해 파싱되어서 가게 된다.

두번째 방법으로는 아래와같이 HandlerExceptionResolver  인터페이스를 직접 상속받아서Resolver 를 만들어 내는 방법이있다.

- BaseExceptionResolver.java

[code]package dic.resolver;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

public class BaseExceptionResolver implements HandlerExceptionResolver {

 private String view = null;
 public void setView(String view) {
  this.view = view;
 }
 
 public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object obj, Exception exception) {
  request.setAttribute("exception",exception);
  return new ModelAndView(view);
 }

}[/code]


위 파일의 bean 설정은 아래처럼 하면 된다.
- springapp-servlet.xml

[code]    <bean id="exceptionResolver" class="dic.resolver.BaseExceptionResolver">
     <property name="view" value="error"/>
    </bean>[/code]


- 이 방법을 쓰는이유는 request 로 exception 을 넘기기 위해서이다.

' > Spring' 카테고리의 다른 글

Spring 에서 properties 파일 다루기.  (33) 2007.06.01
Spring jsp 예외처리 전략  (20) 2007.05.30
클래스의 toString 및 equals 메소드 자동으로 만들어주기.  (47) 2007.05.26
기본 Controller 지정하기.  (23) 2007.05.24
SPRING  (25) 2007.02.28
by cranix 2007. 5. 29. 17:28

예를들어 Bean 클래스를 만들었는데 toString 메소드를 만들어서 출력하게 하고싶다고 치자 어떻게 해야할까?

뭐 가장 쉬운 방법은 get 메소드를 하나하나 호출해서 붙혀서 알맞게 출력하는 방법이겠지만, 그게 답이라면 이글을 쓸필요도 없겠다.

정말 간단한 답이 있었다.
일단 아파치 자카르타 프로젝트의 Commons Lang 에서 제공하는 API 를 이용하여 메소드들을 쉽게 구현할수 있다.
이 라이브러리는 toString 말고도 equals,hashCode 도 쉽게 만드는 방법을 제공한다.

BaseObject 라는 클래스를 아래와같이 만들어서 모든 Bean 클래스에 적용해 주면된다.



- BaseObject.java

[code]package dic.model;

import java.io.Serializable;

import org.apache.commons.lang.builder.*;

@SuppressWarnings("serial")
public class BaseObject implements Serializable {
 public String toString() {
  return ToStringBuilder.reflectionToString(this,ToStringStyle.MULTI_LINE_STYLE);
 }
  public boolean equals(Object o) {
  return EqualsBuilder.reflectionEquals(this, o);
 }
 
 public int hashCode() {
  return HashCodeBuilder.reflectionHashCode(this);
 }
}[/code]

- Member.java

[code]package dic.model;

import java.util.Date;

import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

import dic.member.MemberManager;

public class Member extends BaseObject implements HttpSessionBindingListener{
 private String id;
 private String password;
 private String name;
 private String auth_id_list;
 private String file_id_list;
 private Date reg_date;

 public String getId() {
  return id;
 }
 public void setId(String s) {
  id = s;
 }
 
 public String getPassword() {
  return password;
 }
 public void setPassword(String s) {
  password = s;
 }
 
 public String getName() {
  return name;
 }
 public void setName(String s) {
  name = s;
 }
 
 public String getAuthIdList() {
  return auth_id_list;
 }
 public void setAuthIdList(String s) {
  auth_id_list = s;
 }
 
 public String getFileIdList() {
  return file_id_list;
 }
 public void setFileIdList(String s) {
  file_id_list = s;
 }
 
 public Date getRegDate() {
  return reg_date;
 }
 public void setRegDate(Date d) {
  reg_date = d;
 }
 
 // 세션에 입력될때
 public void valueBound(HttpSessionBindingEvent event) {
  MemberManager.getInstance().doLogin(this);
 }
 // 세션에서 제거될때
 public void valueUnbound(HttpSessionBindingEvent event) {
  MemberManager.getInstance().doLogout(this);
 }
 
 public static void main(String args[]) {
  Member m = new Member();
  m.setId("cranix");
  m.setPassword("1234");
  m.setName("크래닉스");
  System.out.println(m);
 }
}[/code]


 - 실행결과

dic.model.Member@8813f2[
  id=cranix
  password=1234
  name=크래닉스
  auth_id_list=<null>
  file_id_list=<null>
  reg_date=<null>
]


' > Spring' 카테고리의 다른 글

Spring jsp 예외처리 전략  (20) 2007.05.30
Spring 의 exception 처리 전략  (26) 2007.05.29
기본 Controller 지정하기.  (23) 2007.05.24
SPRING  (25) 2007.02.28
JSTL 사용하기  (28) 2007.02.28
by cranix 2007. 5. 26. 01:10
사용자 삽입 이미지


제목 : 천상고원

메인카피 : 홀연히 사라진 그녀를 찾아서

줄거리 :
오래 전 홀연히 사라졌던 E로부터 한통의 짤막한 편지를 받게 된 K. E가 떠난 이유를 알고 싶어 라다크로 여행을 떠나고 K는 힘들고 긴 여정 중에 한 여행자를 만나게 된다. 그와 함께 5000미터의 고원을 넘던 중, K는 고산병의 고통에 시달리고 기이한 경험을 하게 된다.

 연출의 변. "<천상고원>은 주제에서 전작들과 일맥상통한다. 어느 순간 어떤 사람이 이유 없이 증발한다. 그 공간이 라다크이고 어떤 사람이 이 사람의 증발에 대해 집착을 보이고 찾아 나선다. 그 사람을 만날 수도, 만나지 않을 수도 있다. 다만, 영화는 그런 과정을 바라보고 여행하는 사람과 그 사람이 보는 풍경, 특히 고원의 정경을 그려낸다." -씨네 21 인터뷰 중에서

 영화제 소개글. 홀연히 사라진 한 여인으로부터 K는 “가장 가까웠던 사람에게 가장 잔인했던 나를 용서하지 않길 바란다”는 엽서 한 통을 받는다. K는 그녀와의 기억의 장소인 히말라야 고원의 한 마을 라다크로 여행을 떠나고, 그 곳에서 심한 고산병의 고통에 시달린다. 여인은 왜 사라졌을까, 왜 남자는 그녀를 찾아 나선 것일까? <천상고원>은 이에 대한 명확한 대답을 하지 않으면서 그저 묵묵히 K가 바라보는 풍경과 그가 겪는 여행의 체험을 기록한다. 단순한 여행 다큐멘터리처럼 보이지만 그럼에도 K를 따라가는 여정은 토악질과 어지럼증을 동반하는 인간내면으로의 고통스런 탐구의 과정이기도 하다. 이를테면 카메라는 K가 자동차에서 내려 고통 속에서 토악질을 한 후 사막과도 같은 풍경을 한 바퀴 돌아 다시 차를 타고 떠나는 장면을 묵묵히, 혹은 아주 냉정하게 보여준다. 영화에서 주인공 K를 연기한 사람은 바로 감독 자신. 그는 픽션의 여행에서 자신이 예전에 이 곳을 찾았을 때 실제 찍었던 과거의 사진을 주민들에게 나눠주며 스스로 픽션과 다큐멘터리의 경계를 허문다. 그러면서 이 영화는 시간이 여전히 지속하면서 동시에 변화하고 있음을 엿보게 하며 그의 데뷔작 <시간은 오래 지속된다>를 떠올리게 한다. 감독은 “지금 우리 마음은 사막처럼 황량하지만 이 여행이 끝날 때쯤 짙푸른 녹음이 우거진 오아시스를 만나게 될 거다”라 말한다.(김성욱)


메인카피가 끌려....

'자유글' 카테고리의 다른 글

웹2.0 과 framework  (42) 2007.07.02
PDA 수리 사이트  (46) 2007.06.09
이거 완전 사고싶다!  (677) 2007.04.25
윈도우즈 비스타  (855) 2007.04.19
애드클릭스  (653) 2007.04.18
by cranix 2007. 5. 25. 12:35

- springapp-servlet.xml

[code]<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<!--  - Application context definition for "springapp" DispatcherServlet.  -->
<beans>
 <bean id="defaultController" class="dic.controllers.DefaultController"/>
    <bean id="helloController" class="dic.controllers.HelloController"/>
   
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <property name="mappings">           
             <props>
              <prop key="**/*.do">defaultController</prop>
              <prop key="/hello.do">helloController</prop>
             </props>
            </property>
    </bean>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>[/code]


- DefaultController.java

[code]package dic.controllers;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

public class DefaultController extends DicSuperController {

 @Override
 ModelAndView dicHandleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
  String contextPath = request.getContextPath();
  String uri = request.getRequestURI();
  String viewName = uri.substring(contextPath.length()+1,uri.lastIndexOf("."));

  return new ModelAndView(viewName);
 }

}[/code]



위와같이 셋팅하면 지정되지 않은 Controller 는 기본으로 DefaultController 로 지정되어 처리되게 된다.

' > Spring' 카테고리의 다른 글

Spring 의 exception 처리 전략  (26) 2007.05.29
클래스의 toString 및 equals 메소드 자동으로 만들어주기.  (47) 2007.05.26
SPRING  (25) 2007.02.28
JSTL 사용하기  (28) 2007.02.28
hello spring 테스트  (19) 2007.02.27
by cranix 2007. 5. 24. 22:22
실습 : 연습문제 9-5(책) , 9장 실습문제

일반 : 10장 실습문제

'2007년1학기 > C++프로그래밍' 카테고리의 다른 글

C++ template 과 java 저너릭스  (41) 2007.05.30
C++ 11장 12장  (42) 2007.05.30
CPP 10장  (19) 2007.05.23
<< 연산자 오버로딩 하기  (23) 2007.05.23
CPP 9장  (42) 2007.05.09
by cranix 2007. 5. 23. 15:52

'2007년1학기 > C++프로그래밍' 카테고리의 다른 글

C++ 11장 12장  (42) 2007.05.30
C++ 과제  (22) 2007.05.23
<< 연산자 오버로딩 하기  (23) 2007.05.23
CPP 9장  (42) 2007.05.09
과제  (38) 2007.05.02
by cranix 2007. 5. 23. 13:54
| 1 2 |