springmvc 상용 5 가지 주해

7237 단어 springmvc주해
1.구성 요소 형 주석:
1.@Component 는 클래스 정의 전에@Component 주 해 를 추가 하면 spring 용기 에 의 해 인식 되 고 bean 으로 전 환 됩 니 다.
2.@Repository 에서 Dao 구현 클래스 에 대한 설명(특수 한@Component)
3.@Service 는 업무 논리 층 에 대한 설명 에 사 용 됩 니 다.(특수 한@Component)
4.@Controller 는 제어 층 주석 에 사 용 됩 니 다.(특수 한@Component)
상기 네 가지 주 해 는 모두 클래스 에 주 해 된 것 이 고 주 해 된 종 류 는 spring 초기 에 하나의 bean 으로 말 한 다음 에 통일 적 으로 관리 합 니 다.
1068779-20171027160104039-2140642721.png
2.요청 과 매개 변수 형 주석:
1.@RequestMapping:요청 주소 맵 을 처리 하 는 데 사용 되 며 클래스 와 방법 에 사용 할 수 있 습 니 다.
●value:request 가 요청 한 맵 주 소 를 정의 합 니 다.
●method:request 주소 요청 방식 을 정의 합 니 다.[GET,POST,HEAD,OPTIONS,PUT,PATCH,DELETE,TRACE.]기본적으로 get 요청 을 받 아들 입 니 다.요청 방식 과 정의 방식 이 다 르 면 요청 이 성공 할 수 없습니다.
●params:request 요청 에 포함 되 어야 할 매개 변수 값 을 정의 합 니 다.
●headers:request 요청 에 지정 한 요청 헤 더 를 포함 해 야 합 니 다.예 를 들 어 RequestMapping(value="/something",headers="content-type=text/*")설명 요청 에"text/html","text/plain"이라는 유형의 Content-type 헤 더 를 포함 해 야 일치 하 는 요청 입 니 다.
●consumes:제출 요청 내용 의 종 류 를 정의 합 니 다.
●produces:되 돌아 오 는 콘 텐 츠 형식 을 지정 합 니 다.request 요청 헤더 에 있 는(Accept)형식 에 만 지정 한 형식 이 포함 되 어 있 을 때 되 돌아 갑 니 다.

@RequestMapping(value="/requestTest.do",params = {"name=sdf"},headers = {"Accept-Encoding=gzip, deflate, br"},method = RequestMethod.GET)

   public String getIndex(){

     System.out.println("    ");

     return "index";

   }
위 코드 는 GET 요청 방식 을 표시 합 니 다.요청 매개 변 수 는 name=sdf 라 는 인 자 를 포함 해 야 합 니 다.그리고 요청 헤더 에는 Accept-Encoding=gzip,deflate,br 라 는 형식 헤더 가 있어 야 합 니 다.
1068779-20171027165540273-1862395365.png
이렇게 주 해 를 통 해 하나의 요 구 를 구속 할 수 있다.
2.@RequestParam:들 어 오 는 인자 의 값 을 가 져 오 는 데 사용 합 니 다.
●value:매개 변수의 이름
●required:이 전 송 된 매개 변수 가 필요 한 지 여 부 를 정의 합 니 다.기본 값 은 true 입 니 다.(@RequestMapping 의 params 속성 과 유사 합 니 다)

@RequestMapping("/requestParams1.do")

  public String requestParams1(@RequestParam(required = false) String name){

    System.out.println("name = "+name);

    return "index";

  }

  @RequestMapping("/requestParams2.do")

  public String requestParams2(@RequestParam(value = "name",required = false) String names){

    System.out.println("name = "+names);

    return "index";

  }
두 가지 입 참 방식 은 같 습 니 다.성명 value 의 이름 을 표시 할 때 입 참 매개 변수 이름과 value 처럼 성명 을 표시 하지 않 으 면 첫 번 째 방식 으로 성명 한 것 처럼 입 참 매개 변수 이름과 함수 매개 변수 변수 변수 이름 과 같 습 니 다.
3.@PathViriable:경로 매개 변수 값 을 정의 하 는 데 사용 합 니 다.
●value:매개 변수의 이름
●required:입력 매개 변수 가 필수 값 인지 정의 합 니 다.

@RequestMapping("/{myname}/pathVariable2.do")  public String pathVariable2(@PathVariable(value = "myname") String name){

    System.out.println("myname = "+name);    return "index";

  }
이 경 로 는{my name}을 경로 매개 변수 로 설명 합 니 다.이 경 로 는 임의의 값 이 될 것 입 니 다.@PathVariable 은 value 에 따라 경로 의 값 을 가 져 올 수 있 습 니 다.
4.@Response Body:방법 에 작용 하여 전체 반환 결 과 를 json 이나 xml 형식 과 같은 형식 으로 되 돌 릴 수 있 습 니 다.

@RequestMapping("/{myname}/pathVariable2.do")

   @ResponseBody

   public String pathVariable2(@PathVariable(value = "myname") String name){

     System.out.println("myname = "+name);

     return "index";

   }
1068779-20171027171812398-1068358697.png
이것 은 페이지 가 아니 라 문자열'index'를 페이지 에 직접 인쇄 한 것 으로 다음 코드 와 유사 합 니 다.

PrintWriter out = resp.getWriter();

 out.print("index");

 out.flush();
5.@CookieValue:요청 한 Cookie 값 가 져 오기

@RequestMapping("/requestParams.do")

   public String requestParams(@CookieValue("JSESSIONID") String cookie){

     return "index";

   }
6、@ModelAttribute:
model 에 파 라 메 터 를 저장 할 때 설명 방법 이나 파 라 메 터 를 설명 할 수 있 습 니 다.방법 에 설명 할 때 이 방법 은 프로세서 방법 이 실행 되 기 전에 실 행 됩 니 다.그리고 되 돌아 오 는 대상 을 session(전제 시@Session Attributes 주석 이 있어 야 합 니 다)이나 모델 속성 에 저장 합 니 다.@ModelAttribute("attributeName")는 표시 방법 을 지정 하지 않 으 면 지정 합 니 다.속성 이름 으로 되 돌아 오 는 클래스 이름(이니셜 소문 자)을 사용 합 니 다. 

@ModelAttribute("user")

  public UserEntity getUser(){

    UserEntity userEntityr = new UserEntity();

    userEntityr.setUsername("asdf");

    return userEntityr;

  }

 

  @RequestMapping("/modelTest.do")

  public String getUsers(@ModelAttribute("user") UserEntity user){

    System.out.println(user.getUsername());

    return "/index";

  }
위의 코드 에서@ModelAttribute("user")주 해 를 사용 하여 컨트롤 러 를 실행 하기 전에 실행 한 다음 에 user 라 는 model 데 이 터 를 생 성 합 니 다.컨트롤 러 에서 우 리 는 매개 변수 에 주 해 된@ModelAttribute 를 통 해 파 라 메 터 를 얻 은 다음 에 model 을 컨트롤 러 에 응용 합 니 다.jsp 페이지 에서 도 사용 할 수 있 습 니 다.

<body>   ${user.username} </body>
7、@SessionAttributes
기본적으로 Spring MVC 는 모델 의 데 이 터 를 request 필드 에 저장 합 니 다.요청 이 끝나 면 데이터 가 효력 을 잃 습 니 다.페이지 를 넘 어 사용 하려 면그럼 세 션 에 사용 해 야 합 니 다.@Session Attributes 주 해 는 모델 의 데 이 터 를 session 필드 에 저장 할 수 있 습 니 다.@ModelAttribute("user")와 함께 사용 할 때 해당 하 는 이름 의 model 값 을 session 에 저장 합 니 다.

@Controller

@RequestMapping("/test")

@SessionAttributes(value = {"user","test1"})

public class LoginController{

  @ModelAttribute("user")

  public UserEntity getUser(){

    UserEntity userEntityr = new UserEntity();

    userEntityr.setUsername("asdf");

    return userEntityr;

  }

 

  @RequestMapping("/modelTest.do")

  public String getUsers(@ModelAttribute("user") UserEntity user ,HttpSession session){

    System.out.println(user.getUsername());

    System.out.println(session.getAttribute("user"));

    return "/index";

  }

}
이전 예 의 코드 와 결합 하여@Session Attributes 주 해 를 추가 한 다음 에 두 번 요 청 했 습 니 다.첫 번 째 session 에 user 라 는 속성 값 이 존재 하지 않 습 니 다.두 번 째 요청 을 했 을 때 session 에 또 있 는 것 을 발 견 했 습 니 다.이것 은 첫 번 째 요청 을 했 을 때 model 데이터 가 session 에 저장 되 지 않 았 기 때 문 입 니 다.두 번 째 요청 때 이미 지난번 모델 을 가 져 올 수 있 습 니 다.
1068779-20171027175359008-1504110330 (1).png
메모:@ModelAttribute("user")UserEntity user 가 주석 내용 을 가 져 올 때 session 에 해당 하 는 속성 값 이 있 는 지 먼저 조회 하고 없 으 면 Model 을 조회 합 니 다.

좋은 웹페이지 즐겨찾기