티스토리 뷰

이전글 http://holy1017.tistory.com/34

어노테이션을 설명한 글은 http://noritersand.tistory.com/156

전반적인 게시판 강좌는 http://addio3305.tistory.com/category/Spring 을 따라하는게 좋다

단지 저 강좌는 vo를 안쓰기 때문에...

난 쓸것이다!!

하지만 그전에 어노테이션 Controller Service Repository을 쓸것이다!!!

쓰는게 편하거덩...

아무튼 이전글 프로젝트에서 이어서 시작한다..

시작하기도 전에 이미 프로젝트 생성시 Controller  하나는 이미 등록되있다.

/test/src/main/java/holy/com/test/HomeController.java 파일인데...

해당 파일 우클릭, 카피, 같은 폴더 위치에 붙여넣기,

이름은 testController 적용하자

이쁘게 복사됬지만 이상태에선 홈컨이랑 테컨이 리퀘매핑이 충돌나서 작동조차 안한다.

@RequestMapping(value = "/", method = RequestMethod.GET)

에서 빨간 부분이 문젠데 저게 경로 설정하는거다

현재 기본 실행 위치가 / 으로 되있는데 저건 http://localhost:8080/test/ 위치를 말한다

그럼 "/test1/" 으로 바꾸면? 

http://localhost:8080/test/test1/

http://localhost:8080/test/test1/fdf

http://localhost:8080/test/test1/ararhgarh

등등을 입력하면 저 메소드가 실행이 된다!! (아... 그러고보니 저파일 설명 안했네..자바 배우세요...)

정규식처럼 입력할수 있기때문에 "/*/test/" 라고하면

http://localhost:8080/test/sadfas/test/

http://localhost:8080/test/s/test/

http://localhost:8080/test/bbrdr/test/

등등을 입력하면 저메소드가 실행된다. 

그외에 여러경로를 설정한다던지.. 

자세한건 RequestMapping 구글링을 해라


아무튼!

자바파일 위쪽에 @Controller이 설정된게 보이는데 이 명령어가 "빈"에다가 등록을 해준다.

빈이 뭔지도 구글링을 해라.

여러명이 동시에 코드를 짤때 좀더 편리하게 해주는 거라고는 하는데..


어쨋든!

http://noritersand.tistory.com/156#j10 을 읽어보면 @Service을 참조한다고 하지만 

현재 컨트롤러에는 Autowired로 명명된것조차 없다.

난 Controller Service Repository를 쓸것이기때문에...

만들어야지~~


일단 /test/src/main/java/holy/com/test/testController.java 파일에 아래처럼 수정한다

package holy.com.test;


import java.text.DateFormat;

import java.util.Date;

import java.util.Locale;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;


/**

 * Handles requests for the application home page.

 */

@Controller

public class testController {

private static final Logger logger = LoggerFactory.getLogger(testController.class);

@Autowired

private TestService svc;

/**

* Simply selects the home view to render by returning its name.

*/

@RequestMapping(value = "/*/test/", method = RequestMethod.GET)

public String home(Locale locale, Model model) {

logger.info("Welcome home! The client locale is test {}.", locale);

Date date = new Date();

DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);

String formattedDate = dateFormat.format(date);

model.addAttribute("serverTime", formattedDate );

return "home";

}

}

아차.. 보통 자바파일 만들때 일반변수랑 구별하기위해 클래스명 맨 앞자리는 대문자로하는데...

고치자 

testController  부분에서 쉬프트+알트+알 누르면 네모칸이 생기는데 그상태에서 이름 수정후 앤터

그러면 해당 이름을 사용했던 거의 모든 파일들이 수정된다.

아마 자바파일만 수정되는듯

나중에 xml 로 쿼리문 작성할텐데 그부분의 클래스명은 안바뀌는걸보니 이것도 완벽하진 않다

애초에 자바를 위한 기능이라서..

어찌됬든

쫌더 편하게 사용하기위해 좀더 수정을 가했다

package holy.com.test;


import java.text.DateFormat;

import java.util.Date;

import java.util.Locale;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;


/**

 * Handles requests for the application home page.

 */

@Controller

public class TestController {

private final Logger log = LoggerFactory.getLogger(this.toString());

@Autowired

private TestService svc;

/**

* Simply selects the home view to render by returning its name.

*/

@RequestMapping(value = "/*/test/")

public String home(Locale locale, Model model) {

log.info("Welcome home! The client locale is test {}.", locale);

Date date = new Date();

DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);

String formattedDate = dateFormat.format(date);

model.addAttribute("serverTime", formattedDate );

return "home";

}

}

쫌 많이 바겻으나

빨간색을빼곤 기능상 중요한 부분은 아니다

초록색 부분은 성능상 손해가 조금 있긴 하겠지만..

지금은 편의를 택하겠다!!(무책임)[하지만 저부분만 복붙할때 클래스명 바꾸기귀차..]

크흠..

메소드를 없앴는데 겟 포스트 구별 않고 받기 위해서다.

자세한건 구글링


빨간색 글씨부분이 이클립스에선 빨간줄이 쳐졌는데(그래서 빨간색. 음?)

오토와이어는 컨트롤+쉬프트+o (숫자0이라 쓸까봐 친절히 소문자)를 누르면 자동으로 해당 클래스가 임포트 된다


TestService는 해당 클래스 파일을 안만들어서 그렇다.

TestService 에다가 마우스 클릭해보면 별 잡다하네 튀나오는데

해당 클래스를 작성-완료 하면 일단 해당 파일이 만들어져서 에러는 없어진다.


서비스는 인터페이스로 틀을 만들고 하는경우도 있고 

그런거 없이 그냥 클래스로 만들어서 하는경우도 있고..

서비스가 하는일이 쿼리문 결과ㅏ를 처리하는작업이 대부분이라..

지금와서 말하지만 어노테이션 구분할때 대부분 역활 구분이

Controller 홈페이지 경로 요청을 받아서 처리

Service 쿼리 결과문을 조물딱 조물딱,또는 홈페이지 요청을 조물딱해서 쿼리문으로 날리거나, 다시 컨트롤로 리턴..

Repository 서비스에서 들어온 쿼리문 조회,인설트,삭제,업데이트를 담당.

으로 나눠서 하긴 한다.


그런거 생까고 단 하나의 자바파일로 할수도 있겠지만...

니혼자 영원히 죽고나서도 보고 수정할거 아니면 그러지마라.....

내가 수정하게되면 니 죽어도 찿아간다

그러니 역활분담은 해두자..

니 자신이 나중에 수정하기도 쉬워진다.

따른곳에 복사 뜨기도 쉬워지고..

아까 이미 컨트롤러 하나 복사해서 수정했잔아?


아무튼 이걸로 일단 컨트로러 생성은 끝났다

살짝 만진 부분 있..을지도

package holy.com.test;


import java.text.DateFormat;

import java.util.Date;

import java.util.Locale;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

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

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;


/**

 * Handles requests for the application home page.

 * 홈페이지 주소 요청 처리부분

 * /test/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml 파일에서

 * <annotation-driven /> 태그가 등록 되있을시 빈에 자동 등록됨

 */

@Controller

public class TestController {


private final Logger log = LoggerFactory.getLogger(this.toString());


// 서비스에서 똑같은 클래스명을 찿음. 별칭으로 찿는것도 가능. 구글링 참조

@Autowired

private TestService svc;


/**

* Simply selects the home view to render by returning its name.

*/

@RequestMapping(value = "/test/")

public String home(Locale locale, Model model) {


// 이크릷스 콘솔창에 로그가 뜸

log.info("Welcome home! The client locale is test {}.", locale);

// 오늘 날자 받음

Date date = new Date();

// 오늘 날자를 특정 형태로 바꿈

DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);

// 문자열로 변경

String formattedDate = dateFormat.format(date);


//홈페이지로 serverTime 라는 이름으로 파람값을 넘김

model.addAttribute("serverTime", formattedDate);


/*

* home 이라는 파일을 요청

* <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

* <beans:property name="prefix" value="/WEB-INF/views/" />

* <beans:property name="suffix" value=".jsp" />

* </beans:bean>

* 에서 prefix + "home" + suffix 에 해당하는 "/WEB-INF/views/home.jsp" 파일을 찿아서 브라우저에 띄움.

*/

return "home";

}


}



넘 길어서 서비스는 다음글에서

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함