티스토리 뷰
Web.xml
현 사진은 web.xml이며 하나하나 설명하자면
display-name : project name
welcome-file : http://localhost:0000/ 접근하면 welcome-file을 하나하나 검사하여 페이지가 존재 한다면 있으면 페이지를 보여줍니다
context-parm : value 경로의 context를 스캔하여 고정적으로 사용하는 값들을 미리 초기화 한다? 라고 보면 된다.
DB를 예시 들면
안썻을 경우 : DB 연결 -> 데이터 값 가져오기 -> 출력하기
썻을 경우 : ( DB 연결 ) 데이터 값 가져오기 -> 출력하기
계속 DB연결을 한다면 정말 불필요한 낭비라 생각이든다. 그래서 context에 미리 연결을 초기화를 해놓으면 효율성이 좋아 질 것이다.
Listener : 이제 이벤트가 발생하면 context에 미리 연결 된 것을 불러온다.
Servlet : DispatcherServlet의 컨테이너를 불러오는 곳이다. url을 지정 안한다면 기본적으로 spring-servlet-xml을 호출 한다.
servlet-mapping : 현재 상태는 "/" 형태를 띈 url-pattern만 읽어서 Servlet을 읽게 만드는 것이다.
filter : filter란 것이 url의 Controller 가서 처리하기 전에 처리해야 되는 것들을 처리 해주는 것이다. 그것을 지정한 곳이다.
마치 정수기처럼 필터를 통해 깨끗한 물이 나오듯이 filter를 통해 자신이 필요한 데이터를 갖게 하는 것이다.
Annotation
Spring에서 Annotation으로 접근 할 수 있는 것들이 많다. 그중에서도 기본적인 Annotation의 기능들을 알아 볼 생각이다.
@Component
@Component : 일반적으로 컴포넌트로 인식 한다 이 Component를 사용하려면 컨테이너에 component-scan이라는 것이 필요하다
Component를 상속받은 어노테이션도 있다
@Service 비즈니스 서비스를 의미하며
@Repository 데이터 액세스 계층에서 사용
@Controller 간단하게 설명하면 웹용 MVC 컴포넌트 라고 생각하면 된다.
이 3개가 Component를 상속 받고 Component-scan 을 읽어 올 때 모든 annotation지정된 곳들을 미리 scan 한다.
@Repository
public class CardDAO {
@Autowired
private SqlSession mybatis;
public void insertCard(CardVO vo) {
CardMapper mapper = mybatis.getMapper(CardMapper.class);
mapper.insertCard(vo);
}
@Service
public class CardServiceImpl implements CardService {
@Autowired
CardDAO cardDAO;
@Override
public void insertCard(CardVO vo) {
cardDAO.insertCard(vo);
}
코드를 보면 DAO측에서 @Repository를 쓰고 ServiceImpl 에서는 @Service를 쓰는 것을 볼 수 있다.
@Autowired 와 @Resource 차이
둘다 의존 관계를 자동으로 설정을 해주는 어노테이션이다.
둘의 차이는 Autowired는 타입을 이용하여 자동으로 생성해주며 Resource는 Bean 이름으로 자동 연결해준다.
Resource보다는 Spring 에서 사용하려면 Qualified로 지정하고 Autowired로 하는 것이 Spring에서 맞는 표현이다.
@Controller
Controller 에서는 MVC패턴 기반으로 Controller쪽을 개발 할 수 있다. (@Controller 어노테이션 선언 해야 사용가능 , POJO 기반)
@RequestMapping : URL을 처리할 컨트롤러 클래스 쪽에서 사용가능하고 , 메서드에도 사용 가능하다.
(Spring 4.2? 4.3 버전 이상부터는 GetMapping, PostMapping, PutMapping, DeleteMapping 등 좀더 편하게 사용 할수 있는 어노 테이션이 생겼다.)
@ReuqustParam : request에서 포함된 파라미터 값을 참조 할 때 사용합니다
@ModelAttribute : MVC에서 Model 객체를 바인딩 할 수 있는 어노테이션입니다. name으로 속성을 정의한 Model 객체를 View에서 사용 할 수 있습니다
@SessionAttribyute : Session에 저장할 Model Attribute를 정의합니다
@Controller
public class CardController {
@Autowired
CardService cardService;
@GetMapping(value="/card/insert")
public String insertcard() {
return "cardInsert";
}
@ResponseBody
@RequestMapping(value ="/click", method = RequestMethod.GET)
public Map<String, String> click(@RequestParam Map<String, String> param) throws Exception {
log.info("Click_event");
System.out.println(param.get("title"));
String[] t = param.get("title").split(" ");
return param;
}
}
현재 코드에서 언급되지 않은 코드가 하나 있다
@ResponseBody, @RequestBody 이 메서드는 Spring MVC에서 지원을 안한다. REST를 사용 할때 사용을 하는데 그래서 이 어노테이션을 사용하려면 <annotation-config>로 메세지 컨버터를 사용한다는 것을 컨테이너에 넣어야 사용이 가능하다.
@Controller 대신 RestController를 사용하면 ResponseBody가 없어도 REST 통신을 할 수 있다.
하지만 Spring Boot는 사용안해도 자연스럽게 지원을 해준다.
'JAVA > Spring' 카테고리의 다른 글
HTTP 와 HTTPS 알아보기 (0) | 2020.08.17 |
---|---|
Spring MVC (0) | 2020.08.12 |
Spring 과 Spring Boot (0) | 2020.08.11 |
REST란? (0) | 2020.08.10 |
Open API 란? (0) | 2020.08.10 |
- Total
- Today
- Yesterday
- spring cloud
- Redis
- redis자료구조
- 동적 계획법
- 레디스 자료구조
- http https
- HTTP
- 즉시 로딩
- Spring MVC
- nosql
- Spring Data
- spring annotation
- 필드 컬럼 매핑
- 투 포인터
- 지연로딩
- 스프링 레디스
- JPA에 대하여
- Spring
- 프로그래머스 - 모의고사
- 스프링부트
- 비정형데이터
- spring boot
- 레디스
- JSX
- ORM
- spring redis
- web.xml
- HTTP 와 HTTPS 알아보기
- redis 명령어
- GREEDY
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |