Java web development 10 (draft)
자바 웹 개발 시작하기
(10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)
2012. 1. 18
벌써 2년도 넘은 자료지만
그래도 필요하신분이 있을지 몰라서...
(지금보니 2년사이 많은것을 배운것 같네요 ㅎㅎ)
사실 마지막 주차는 발표자료 마무리가 부족하다.
그 당시 뭔가 급한일이 있어서;;; (일꺼라 추측)
지금와서 문서에 손을 대기는 좀 그래서 부족하지만 수정없이 배포한다.
제 14회 한국 자바 개발자 컨퍼런스의 커뮤니티 세션에서 공유한 `overview of spring4` 의 발표 자료
스프링 프레임워크는 2004년에 출시된 이후 지금까지 많은 변화를 겪어왔습니다. 기억에 남아 있는 굴직한 변화를 더듬어 보면 버전 2.0은 XML 네임스페이스와 AspectJ 지원, 버전 2.5부터 애노테이션을 활용한 프로그래밍 기능이 추가되었습니다. 그리고 버전 3.0으로 올라가며 Java 5+ 기반으로 코드 구조가 바뀌고 자바 코드 기반 설정 기능이 추가되었습니다. 2013년 12월 13일에 버전 4.0 발표이 발표되었습니다. 주목할 변화는 바로 Java 8 지원과 제거 대상(@Deprecated)으로 선언되었던 많은 클래스와 메소드들이 삭제되었다는 것입니다. 이 외에도 많은 변화가 있습니다. 이번 시간에는 조금 높은 곳에서 내려다보는 느낌으로 무엇이 추가되었고, 어떤게 바뀌었는지 살펴보려고 합니다.
예제코드 : https://github.com/arawn/overview-of-spring4
스프링군살없이세팅하기(The way to setting the Spring framework for web.)EunChul Shin
깔끔하게 스프링 프레임워크 세팅하는 것에 대한 이야기 입니다.
군살없이 프레임워크를 세팅한다는 의미와 이유, 그리고 스프링 기본 설정 및 설정들의 역할에 대해서 정리해 보았습니다.
This presentation is about Spring framework.
I want to talk about the way to setting the spring framework as tidy in this presentation.
The MyBatis data mapper framework makes it easier to use a relational database with object-oriented applications. This document explain about MyBatis basic concept.
Java web development 10 (draft)
자바 웹 개발 시작하기
(10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)
2012. 1. 18
벌써 2년도 넘은 자료지만
그래도 필요하신분이 있을지 몰라서...
(지금보니 2년사이 많은것을 배운것 같네요 ㅎㅎ)
사실 마지막 주차는 발표자료 마무리가 부족하다.
그 당시 뭔가 급한일이 있어서;;; (일꺼라 추측)
지금와서 문서에 손을 대기는 좀 그래서 부족하지만 수정없이 배포한다.
제 14회 한국 자바 개발자 컨퍼런스의 커뮤니티 세션에서 공유한 `overview of spring4` 의 발표 자료
스프링 프레임워크는 2004년에 출시된 이후 지금까지 많은 변화를 겪어왔습니다. 기억에 남아 있는 굴직한 변화를 더듬어 보면 버전 2.0은 XML 네임스페이스와 AspectJ 지원, 버전 2.5부터 애노테이션을 활용한 프로그래밍 기능이 추가되었습니다. 그리고 버전 3.0으로 올라가며 Java 5+ 기반으로 코드 구조가 바뀌고 자바 코드 기반 설정 기능이 추가되었습니다. 2013년 12월 13일에 버전 4.0 발표이 발표되었습니다. 주목할 변화는 바로 Java 8 지원과 제거 대상(@Deprecated)으로 선언되었던 많은 클래스와 메소드들이 삭제되었다는 것입니다. 이 외에도 많은 변화가 있습니다. 이번 시간에는 조금 높은 곳에서 내려다보는 느낌으로 무엇이 추가되었고, 어떤게 바뀌었는지 살펴보려고 합니다.
예제코드 : https://github.com/arawn/overview-of-spring4
스프링군살없이세팅하기(The way to setting the Spring framework for web.)EunChul Shin
깔끔하게 스프링 프레임워크 세팅하는 것에 대한 이야기 입니다.
군살없이 프레임워크를 세팅한다는 의미와 이유, 그리고 스프링 기본 설정 및 설정들의 역할에 대해서 정리해 보았습니다.
This presentation is about Spring framework.
I want to talk about the way to setting the spring framework as tidy in this presentation.
The MyBatis data mapper framework makes it easier to use a relational database with object-oriented applications. This document explain about MyBatis basic concept.
<p><span>장선진 Softwareinlife 팀장. 웹1.0과 웹2.0, 클라우드컴퓨팅 환경, 구글 앱 엔진의 이해와 장단점 및 개발환경과 활용(Google App Engine)에 대한 것으로 공개SW 역량프라자1차 정기 기술세미나 강연 내용입니다.</span></p>
Scala, Spring-Boot, JPA를 활용한 웹 애플리케이션 개발 과정에 대해 다룬다. Spring-Boot와 JPA 조합만으로도 생산성 있는 웹 애플리케이션 개발이 가능하다. 이 조합만으로도 충분히 의미가 있지만 여기에 Scala라는 약간은 불편한 듯 보이는 언어를 도입함으로써 얻을 수 있는 즐거움을 공유한다. Spring-Boot + JPA 조합에 Scala를 적용하면서의 좌충우돌 경험담을 전한다.
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...탑크리에듀(구로디지털단지역3번출구 2분거리)
탑크리에듀(http://www.topcredu.co.kr), 오라클자바커뮤니티(http://ojc.asia) 제공 JPA 기초강좌 입니다. 이번 강좌는 JPA에서의 DB에 따른 식별자(Primary Key) 값을 자동 생성하는 방법에 대해 알아봅니다. 식별자 자동생성은 @GeneratedValue 어노테이션으로 지정하는데 복합키 보다는 대행키(인공키, Artifitial Key) 사용을 권장하며 @GeneratedValue의 strategy 속성에 값을 지정해 여러 가지 식별자 자동 생성 전략을 선택할 수 있습니다. AUTO, TABLE, SEQUENCE, IDENTITY 값으로 지정하며 이 값들은 열거형인 GenerationType에 정의되어 있죠, 천천히 자료 살펴보시고 교육센터 홈페이지에 오시면 동영상 강좌 및 다양한 슬라이드 강좌 있으니 참조 하세요~
Adied 2014, 봄싹 세미나에서 발표한 `Resource Handling in Spring MVC`의 발표자료입니다.
주요 내용으로 Spring MVC에서 정적 자원(css, js, etc)을 다루는 방법을 다루고 있습니다.
데모 코드 : https://github.com/arawn/resource-handling-in-springmvc
6. package com.starpl.study.base.aop;
public class GlobalArgumentResolver implements WebArgumentResolver {
@Override
public Object resolveArgument(MethodParameter methodParameter,
NativeWebRequest webRequest) {
if (UserSession.class == methodParameter.getParameterType()) {
HttpSession session = (HttpSession) webRequest.getSessionMutex();
if (session != null) {
UserSession userSession = (UserSession) session.getAttribute("userSession");
if (userSession != null) {
return userSession;
} else {
return new UserSession();
}
}
}
return UNRESOLVED;
}
}
7. package com.starpl.study.base.aop;
public class RequestInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception
{
HttpSession session = request.getSession();
UserSession userSession = (UserSession) session.getAttribute("userSession");
if (userSession != null) {
request.setAttribute("_USER", userSession);
} else {
request.setAttribute("_USER", userSession = new UserSession());
}
return true;
}
}
8. § 확인 : 시스템 구성 단위가 목표한 대로 동작하기 위한
작업으로, 시스템의 모든 계층에 꼭 필요함
§ JSR 303 Bean Validation
§ 도메인 객체를 확인하기 위한 Java 표준 기술
§ 어노테이션으로 확인 규칙을 명시
§ hibernate-validator-4.2.0.Final.jar
§ validation-api-1.0.0.GA.jar
§ 스프링 폼 태그와 연동
10. package com.starpl.study.model.domain;
public class UserJoinCommand
{
@Length(min = 4, max = 16) private String userId;
@Length(min = 4, max = 16) private String userName;
@Length(min = 4, max = 16) private String nickName;
@Length(min = 4, max = 16) private String userPassword;
@Length(min = 4, max = 16) private String userPassword2;
@Email @NotBlank private String email;
// getter, setter 정의
}
11. @RequestMapping(value = { "/join" }, method = RequestMethod.POST)
public String joinUser(HttpServletRequest request, Model model,
@Valid UserJoinCommand userJoinCommand, BindingResult result)
{
// @Valid 수행 후 에러가 있으면
if (result.hasErrors())
{
// 다시 가입폼으로 보내줍니다.
return viewBase + "/join";
}
…… // 이상이 없으면 가입 처리
}
15. § messages_en.properties
§ org.hibernate.validator.constraints.NotBlank.message=Can not be empty.
§ org.hibernate.validator.constraints.Length.message
=length must be between {2} and {1}.
§ already_login_err=Have already Logined.
§ not_login_err=No login information.
§ messages_ko.properties
§ org.hibernate.validator.constraints.NotBlank.message=비워둘 수 없습니다.
§ org.hibernate.validator.constraints.Length.message
=길이는 {2}와 {1} 사이 여야합니다.
§ already_login_err=이미 로그인 되어 있습니다.
§ not_login_err=로그인 정보가 없습니다.
17. § 에러(Error) 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
§ 예외(Exception) 프로그램 실행 중에 발생하는 예기치 않은 사건 중
프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류
§ 예외가 발생하는 예
§ 정수를 0으로 나누는 경우
§ 배열의 첨자가 음수 또는 범위를 벗어나는 경우
§ 부적절한 형 변환이 일어나는 경우
§ 입출력을 위한 파일이 없는 경우 등
§ 자바 언어는 프로그램에서 예외를 처리할 수 있는 기법을 제공
18. § 예외 블록의 지정
try {
...... // try 블록 : 예외가 발생할 가능성이 있는 문장을 지정한다
}
catch(예외타입N 매개변수N) {
...... // 예외 처리 블록 N
}
finally {
...... // finally 블록 : 예외의 발생여부와 상관없이 무조건 수행
}
§ 예외를 발생시키기 위해 throw 문 사용
throw new 예외객체타입(매개변수);
Ex : throw new StarplStudyI18nException("already_login_err");
19. public class StarplStudyException extends RuntimeException
{
private static final long serialVersionUID = 1L;
String message;
/**
* @param message
*/
public StarplStudyException(String message)
{
super(message);
this.message = message;
}
}