spring mvc 4 의 주석 에 대한 상세 한 설명 튜 토리 얼

8497 단어 springmvc4주해
머리말
본 고 를 시작 하기 전에 다음 과 같이 설명 하 겠 습 니 다.먼저 저 는 springmvc 를 처음 배 웠 습 니 다.인상 을 깊 게 하 는 목적 으로 springmvc 4 와 관련 된 주 해 를 정리 하 는 동시에 관련 조회 가 필요 한 독자 에 게 도움 을 주 고 싶 습 니 다.자,다음은 더 이상 말 하지 않 겠 습 니 다.상세 한 소 개 를 보 겠 습 니 다.
1.@Controller
Controller 컨트롤 러 는 서비스 인 터 페 이 스 를 통 해 정 의 된 접근 프로그램 을 제공 하 는 행위 로 사용자 의 입력 을 설명 하고 모델 로 변환 한 다음 사용자 에 게 바 치 려 고 합 니 다.Spring MVC 는@Controller 정의 컨트롤 러 를 사용 합 니 다.클래스 경로 에 정 의 된 구성 요 소 를 자동 으로 감지 하고 자동 으로 등록 할 수 있 습 니 다.자동 감지 가 적용 되 려 면 xml 헤더 파일 에 spring-context 를 도입 해 야 합 니 다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc"
 xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
 <context:component-scan base-package="com.chen" />
</beans>
2.@RequestMapping
RequestMapping 주 해 는'/admin'과 같은 URL 을 전체 클래스 나 특정한 처리 방법 에 투사 합 니 다.일반적으로 클래스 등급 의 주 해 는 폼 컨트롤 러 에 특정한 요청 경 로 를 매 핑 하고 방법 등급 의 주 해 는 특정한 HTTP 방법 요청("GET","POST"등)이나 HTTP 요청 매개 변수 로 만 매 핑 됩 니 다.

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("admin")
public class LoginController {
 
 @RequestMapping(value = "login" , method = RequestMethod.GET , consumes = "text/html")
 public String toLoginPage(){
 return "/WEB-INF/jsp/login.jsp";
 }
}
상기 url 의 방문 주 소 는 localhost:8080/proj/admin/login.html 입 니 다.
consumes-요청 한 제출 내용 형식 을 지정 합 니 다.예 를 들 어 application/json,text/html.
produces-되 돌아 오 는 콘 텐 츠 형식 을 지정 합 니 다.request 요청 헤더 에 있 는(Accept)형식 에 만 이 지정 한 형식 이 포함 되 어 있 을 때 돌아 갑 니 다.
value-요청 한 실제 주 소 를 지정 합 니 다.지정 한 주 소 는 URI Template 모드 일 수 있 습 니 다.
     A)일반적인 구체 적 인 값 으로 지정 할 수 있다.
     B)특정한 변 수 를 포함 하 는 클래스 값(URI Template Patterns with Path Variables)으로 지정 할 수 있 습 니 다.
     C)정규 표현 식 을 포함 하 는 클래스 값(URI Template Patterns with Regular Expressions)으로 지정 할 수 있 습 니 다.
다음 예제:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class BlogController {
 
 @RequestMapping(value = "blog/{nick}/{year:20\\d{2}}/{month:1|1[0-2]}/{day:[12][0-9]|30|[1-9]}" , method = RequestMethod.GET)
 public String toBlogPage(@PathVariable String nick,
  @PathVariable Integer year,@PathVariable Integer month,@PathVariable Integer day){
 return "/WEB-INF/jsp/blog.jsp";
 }
}
params-지정 한 request 에 일부 매개 변수 값 을 포함해 야 이 방법 을 처리 할 수 있 습 니 다.
headers-지정 한 request 에는 지정 한 header 값 이 포함 되 어 있어 야 요청 을 처리 할 수 있 습 니 다.
다음 예제:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class BlogController {
 
 //   request header      “Refer”        “http://www.ttyouni.com/”   
 @RequestMapping(value = "image", headers="Referer=http://www.ttyouni.com/" )
 public String getImage(){
 return "/WEB-INF/jsp/image.jsp";
 }
}
3.@RathVariable
Spring MVC 에 서 는@PathVariable 주석 방법 인 자 를 사용 하여 URI 템 플 릿 변수의 값 에 연결 할 수 있 으 며,이전 예제 에서 도 관련 표현 이 있 습 니 다.
4.@RequestParam
@RequestParam 은 요청 한 인 자 를 방법의 인자 에 연결 합 니 다.사실 이 인 자 를 설정 하지 않 아 도 주 해 는 기본적으로 이 인 자 를 사용 합 니 다.지정 한 인 자 를 사용자 정의 하려 면@RequestParam 의 required 속성 을 false 로 설정 할 수 있 습 니 다.
5.@RequestBody
@RequestBody 는 HTTP 요청 Body 에 방법 인자 가 연결 되 어야 한 다 는 것 을 말 합 니 다.
6.@SessionAttibutes
@Session Attibutes 는 ModelMap 대상 의 put 작업 설정 과 관련 된 session 을 통 해 attibute 대상 에 도 이 대상 이 있 을 수 있 습 니 다.
예 는 다음 과 같다.

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;

import com.chen.proj.service.UserService;

@Controller
@RequestMapping("admin")
@SessionAttributes("user")
public class LoginController {
 
 @Resource
 UserService service;
 
 @RequestMapping(value = "doLogin", method = RequestMethod.POST)
 public String doLogin(@RequestParam String username , @RequestParam String password, HttpServletRequest request, 
            ModelMap map ){ 
 try {
  User user = service.doLogin(username, password); 
  map.put("user", user);
 } catch (Exception e) {
  request.setAttribute("error", e.getMessage());
  return "/WEB-INF/jsp/login.jsp";
 } 
 return "/WEB-INF/jsp/loginsuccess.jsp";
 }
 
}
7.@ResponseBody
@ResponseBody 는@RequestBody 와 유사 합 니 다.반환 형식 을 HTTP response body 에 직접 입력 하 는 역할 을 합 니 다.@Response Body 는 JSON 형식의 데 이 터 를 출력 할 때 사용 합 니 다.
예 는 다음 과 같다.

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.chen.proj.bean.User;

@Controller
public class JsonController {

 @ResponseBody
 @RequestMapping("/getJson")
 public User getUserInfo(){
 User user = new User();
 user.setPassword("1234");
 user.setUsername("jsontest");
 return user;
 } 
}
8.@RestController
 json,xml 또는 다른 사용자 정의 형식 에 만 서 비 스 를 제공 하 는 컨트롤 러 가 REST API 를 실현 하 는 것 을 자주 볼 수 있 습 니 다.@RestController 는 REST 형식의 컨트롤 러 와@Controller 형식 을 만 드 는 데 사 용 됩 니 다.@RestController 는 이러한 유형 입 니 다.@RequestMapping 과@Response Body 를 반복 적 으로 쓰 는 것 을 피 할 수 있 습 니 다.
9.@ModelAttribute
@ModelAttribute 는 방법 이나 방법 적 매개 변수 에 작용 할 수 있 습 니 다.방법 에 작용 할 때 이 방법 을 표시 하 는 목적 은 하나 이상 의 모델 속성 을 추가 하 는 것 입 니 다.
방법 매개 변수 에 작용 할 때 이 매개 변 수 는 방법 모델 에서 검색 할 수 있 음 을 나타 낸다.이 매개 변수 가 현재 모델 에 없 으 면 이 매개 변 수 는 먼저 실례 화 된 다음 모델 에 추 가 됩 니 다.모델 에 이 인자 가 있 으 면 이 인자 의 필드 는 모든 요청 매개 변수 가 일치 하 는 이름 을 채 워 야 합 니 다.이것 은 spring mvc 에서 중요 한 데이터 바 인 딩 메커니즘 으로 모든 폼 필드 를 단독으로 분석 하 는 시간 을 절약 합 니 다.

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.chen.proj.bean.User;

@Controller
public class UserController {

 @ModelAttribute
 public User addUser(@RequestParam String number) {
 return service.findUser(number);
 }

 @ModelAttribute
 public void populateModel(@RequestParam String number, Model model) {
 model.addAttribute(service.findUser(number)); 
 // add more ...
 }
}
주해 의 출현 은 xml 프로필 이 하늘 로 날 아 다 니 는 시 대 를 끝 냈 고 프로그램 이 더욱 높 은 가 독성 과 유연성 을 가지 게 했다.좀 더 깔끔 하고 명료 한 느낌 을 준다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기