분류 전체보기

반응형
e.printStachTrace 로그

e.printStachTrace 로그 JAVA 코딩 시 가장 많이 사용하는 코드로 예외 메시지 출력을 위해 사용한다.

try {   // ... } catch(Exception e){    e.printStackTrace(); }
printStackTrace() 외에도 printStackTrace(PrintWriter writer)도 존재하고 printStackTrace(PrintStream s)
역시 존재하기 때문에 stackTrace 의 내용을 파일 등에 남기는 것은 그리 어려운 일이 아니다. 
하지만 Log4J 등을 사용하거나 별도로 자신이 만든 로그라이브러리등을 사용할때는, 이를테면 logger.error(e.printStackTrace()); 이런식으로 사용할 수가 없기 때문에, StackTrace 의 내용을 얻어야 하는데... getMessage() 또는 getLocalinzedMessage()를 사용할 수도 있지만 StackTrace에 비해서는 디버깅 정보가 약간 빈약하기 때문에 적절하지 못하다. 
JDK 1.4부터 getStackTrace() 라는 메소드가 추가되었는데 이 메소드는 StackTraceElement의 배열을 리턴해준다. 
따라서 이를 이용해서 아래와 같은 식으로 처리를 해주면 종종 쓸만하다.

 

try {    // ... } catch(Exception e){    StackTraceElement[] elem = e.getStackTrace();    for ( int i = 0; i < elem.length; i++ )       logger.error(elem[i]); }

 

반응형
반응형

JAVA ImageIO 객체 활용

ImageIO.write() 메서드 중 파일로 이미지를 생성하는 예제이다.

static boolean write(RenderedImage im, String formatName, File output)
String imagePath = "이미지경로..";
BufferedImage image = null;

//이미지를 읽어와서 BufferedImage에 넣는다.
'URL imgURL = getClass().getResource(imagePath);
'image = ImageIO.read(imgURL);
int width = image.getWidth();
int height = image.getHeight();

//파일명 자르기
String fileNm = imagePath.substring(imagePath.lastIndexOf("/") + 1);
try {
    // 저장할 이미지의 크기와 타입을 잡아줌.
    BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
    bufferedImage.createGraphics().drawImage(image, 0, 0, this);

    // 해당경로에 이미지를 저장함.
    ImageIO.write(bufferedImage, "jpg", new File("C:/saveImage/" + fileNm));
} catch(Exception e) {
    e.printStackTrace();
}
반응형
반응형
Spring Interceptor 설정

 

Spring login interceptor 설정을 위해 servlet.xml 설정 파일에 interceptor를 설정 합니다.

<bean id="loginUrlHandlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="order" value="1">            
	<property name="interceptors">          
		<list>             
			<ref bean="loginInterceptor"></ref>
		</list>      
	</property>         
</property> 
</bean>

위와 같이 설정을 하고 Interceptor Class를 생성합니다.

@Service 
public class LoginInterceptor extends HandlerInterceptorAdapter { 	
	@Override  	
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    	String path = request.getServletPath();      	    
    	
        if(path.equals("/login.do")) {    		
        	return true; 	    
        } else {    		
			@SuppressWarnings("unchecked")   		
            Map<string, object> userMap = (Map<string, object>) request.getSession().getAttribute("userMap");   		
            
            if(userMap == null) {     		      
            	response.sendRedirect("/login.do");    		      
            	return false;    		
            } else {     		      
            	return true;    		
            }  	   
        }  	
    } 
}

login.do로 접근하는 url을 제외하고 세션을 체크하여 userMap에 데이터가 null 일 경우 login.do 페이지로 Redirect 처리를 수행합니다.

반응형
반응형
Spring Ajax 설정

 

JsonView 설정을 이용하여 AJAX를 사용할 수 있게 설정하는 과정을 포스트 합니다.

pom.xml과 dispatcher에는 기본적으로 등록 

pom.xml
             net.sf.json-lib             json-lib             2.4             jdk15              org.codehaus.jackson      jackson-mapper-asl      1.6.4   

 

DispatcherServlet XML 설정파일
        
-web.xml
     action     *.do       action     *.ajax  
-TestController.java
@RequestMapping("/test.do") 
public String test(@ModelAttribute("searchVO") CommentVO commentVO, ModelMap model) throws Exception {     
	return "test/test"; 
}   

@RequestMapping("/test.ajax") 
public ModelAndView testAjax(@ModelAttribute("searchVO") CommentVO commentVO, ModelMap model) throws Exception {
	Map resultMap = new HashMap();     
    resultMap.put("result1", "test1");     
    resultMap.put("result2", "test222");       
    
    ModelAndView modelAndView = new ModelAndView("jsonView",resultMap);     
    return modelAndView; 
}
 
Test.jsp
  

 

 

반응형

[C#] Generic 이란.

2014. 1. 7. 14:54
반응형

클래스 사용시 자료형을 미리 지정하여, 안정성을 보장하고 불필요한 캐스팅을 줄여 주는거 같다.

List interger = new List();  
Class Test <-임시자료형 Template Integer.Add ( x )<- 여기 x에 들어갈 수 있는건 암묵적으로 int로 형변환 가능한 것만 받음.   
foreach (var x in lstInteger) { ... } 하면 x는 자동으로 int로 값이 정해짐.
반응형

+ Recent posts

반응형