개발/KH국비지원과정

[KH국비지원 웹개발자 과정] Day_58 키워드 @RequestMapping , 스프링 Encoding설정 등

mabb 2022. 9. 6. 21:00
반응형

 해당 포스팅은 강의 복기용으로 키워드를 기록하는 용도의 포스팅입니다.
--------------------------------------------------------------------------------------------------

디스패처서블릿에서 URL처리를 하는 방법
@RequestMapping(value="경로", method=RequestMethod.POST)
@GetMapping("URL")
@PostMapping("URL")

Autowired어노테이션의 시그니처 확인.
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Autowired {
-> 어노테이션 적용 대상과 유지정책을 알 수 있다.

스프링 Encoding 설정
기존에는 response나 request 객체에서 Encoding 설정을 세팅해주었다.
하지만 불편한 점은 서블릿마다(url마다) 인코딩 설정을 해주어야 했다는 점.
스프링에서는 web.xml에 필터링 설정을 하면 모든 url에 인코딩을 적용할 수 있어 편리하다.

<filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
  <init-param>
    <param-name>forceEncoding</param-name>
    <param-value>value</param-value>
  </init-param>
</filter>

<filter-mapping>
  <filter-name>encodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

필터를 만들고, 적용할 url-pattern을 매핑해주면 된다.
/* url패턴에 해당 필터를 적용하였으니
프로젝트 내 모든 url에서 인코딩 설정이 적용되는 것.

화면)
index.jsp ( / 슬래시 url 로 접근하는 첫 페이지 )는 다 사용한다.
다만 페이지 이동처리를 바로하는지 버튼을 눌러 이동하는 지 등은 개발자가 결정할 사항.

이제는 모든 url마다 서블릿을 만들지 않아도 된다.

1. 브라우저의 url 요청은 디스패처 서블릿에서 처리한다.
2. 요청된 urll은 핸들러매핑에서 컨트롤러에 매핑한다.
3. 매핑된 컨트롤러에서 비즈니스 로직을 수행한다.
4. 뷰 리졸버(View Resolver) 에서 View를 선택하여 브라우저로 응답한다.

컨트롤러는 도메인, vo 기준으로 나누어서 만든다.
패키지 설정
controller
domain
service
store

컨트롤러의 리턴값은 항상 String이다. (url을 반환하기 때문)

Bean 주입 어노테이션 (DI어노테이션) 의 동작
@Resource

  Bean의 네임속성이 일치하는 것을 우선으로 탐색한다.
  없으면 타입으로 탐색한다, 그것도 없으면 @Qualifier로 탐색한다.
@Autowired
  Bean의 타입이 일치하는 것을 우선으로 탐색한다
 없으면 네임속성으로 탐색한다. 그것도 없으면 @Qualifier로 탐색한다.
@Injection
  Bean의 타입이 일치하는 것을 우선으로 탐색한다.
  없으면 @Qualifier로 탐색한다. 그것도 없으면 네임속성으로 탐색한다.

request를 대체하여 사용하는 Spring의 객체는 Model model

컨트롤러의 return. 리다이렉트는 redirect: 를 붙인다.
return "redirect: /login.do";
return "/login.do";

viewResolver의 역할
컨트롤러가 리턴하는 String 값에
prefix(접두사) 상위경로 , suffix(접미사) .jsp
를 붙여준다.

메이븐에서 dependency가 에러가 날경우
WEB-INF 하위에 lib폴더를 만들어서 넣어줘도 
작동이 된다.


로그인 기능)
${empty loginUser}
${not empty loginUser}

@RequestParam(" ")

@ModelAttribute
input태그의 name값과 vo의 변수명이 일치할 때 가능.
값까지 다 setting된 객체를 얻을 수 있다. 매우 편리.

@ModelAttribute 어노테이션의 시그니처
@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ModelAttribute {

jstl에서도 stringTokenizer를 사용할 수 있다.

반응형