제어 장치


컨트롤러는 MVC 시스템의 핵심입니다. 브라우저에서 시작된 모든 요청을 처리하고 응답 내용의 논리적 처리를 결정하는 역할을 합니다. 컨트롤러는 표준 Java 클래스이므로 기본 클래스를 상속받을 필요가 없습니다. class 이 메소드는 인터페이스를 외부에 노출하며, 이 메소드의 반환 결과에 따라 브라우저에 대한 응답의 구체적인 내용이 결정됩니다.

다음은 WebMVC 모듈에 컨트롤러를 작성하는 예입니다.

@Controller
public class DemoController {

    @RequestMapping("/sayhi")
    public IView sayHi() {
        return View.textView("Hi, YMPer!");
    }
}

Tomcat 서비스를 시작하고 http://localhost:8080/sayhi,得到的输出结果将是:Hi, YMPer!

에 액세스합니다. 위의 코드에서 두 개의 주석이 있음을 알 수 있습니다. 즉:

  • @Controller: 클래스를 컨트롤러로 선언하면 프레임워크는 선언된 모든 클래스를 자동으로 스캔합니다.

    name: 컨트롤러 이름, 기본값은 ""(이 매개변수는 아직 사용되지 않음)

    singleton: 컨트롤러가 싱글톤인지 여부를 지정합니다. 기본값은 true입니다.

  • @RequestMapping: 컨트롤러 요청 경로 매핑 선언, 범위: 클래스 또는 메서드

    value: 컨트롤러 요청 경로 매핑, 필수 매개변수

    method[]: 허용되는 요청 메서드, 기본값은 GET 메서드, 값 범위: GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE;

    header[]: 요청 헤더에 있어야 하는 헤더 이름

    param[]: 요청에 있어야 하는 매개변수 이름;

    예제 1:
  • 단일 예시 컨트롤러를 생성합니다. 컨트롤러 메서드 규칙은 다음과 같습니다.

컨트롤러 메서드는 POST 및 PUT 액세스만 지원합니다.

요청 헤더 매개변수에는 x-requested-with=가 포함되어야 합니다. XMLHttpRequest(즉, AJAX 요청인지 확인하기 위해)
  1. 요청 매개변수에 name 매개변수가 있어야 합니다.
  2. @Controller(singleton = false)
    @RequestMapping("/demo")
    public class DemoController {
    
        @RequestMapping(value = "/sayhi",
            method = {Type.HttpMethod.POST, Type.HttpMethod.PUT},
            header = {"x-requested-with=XMLHttpRequest"},
            param = {"name=*"})
        public IView sayHi() {
            return View.textView("Hi, YMPer!");
        }
    }
예제 설명:
이 예는 주로 @를 사용하는 방법을 보여줍니다. 컨트롤러 및 컨트롤러 메서드를 구성하기 위한 컨트롤러 및 @RequestMapping 주석

컨트롤러 메서드는 공개로 장식되어야 합니다. 그렇지 않으면 유효하지 않습니다.

@RequestMapping 주석도 컨트롤러에 선언되므로 컨트롤러의 요청 경로 매핑이 이루어집니다. 메소드는 다음과 같습니다.

예 2:

위의 예는 요청에 대한 일부 제어를 보여줍니다. 다음은 응답 결과를 제어하는 ​​방법을 보여줍니다.

응답을 설정합니다. 주석을 통한 헤더 매개변수:

from = "china"
  1. age = 18
    • 주석을 통해 뷰와 콘텐츠를 반환하도록 컨트롤러 설정: "Hi, YMPer!"
  2. @Controller
    @RequestMapping("/demo")
    public class DemoController {
    
        @RequestMapping("/sayhi")
        @ResponseView(value = "Hi, YMPer!", type = Type.View.TEXT)
        @ResponseHeader({
                @Header(name = "from", value = "china"),
                @Header(name = "age", value = "18", type = Type.HeaderType.INT)})
        public void sayHi() {
        }
    }

이 예에서는 세 가지 주석이 사용됩니다.

  • @ResponseView: 컨트롤러 메서드가 기본적으로 뷰 객체를 반환한다고 선언하며, 메서드에 반환 값이 없거나 반환 값이 유효하지 않은 경우에만 사용됩니다.

    이름: 뷰 템플릿 파일 경로, 기본값은 ""입니다.

    type: 보기 파일 유형, 기본값은 Type.View.NULL입니다.

  • @ResponseHeader: 결과를 반환하도록 컨트롤러 메서드를 설정할 때 응답 헤더 매개변수를 추가합니다. []: 응답 헤더 @Header 매개변수 컬렉션

    @Header: 요청 응답 헤더 키-값 쌍을 선언합니다.
  • name: 응답 헤더 매개변수 이름, 필수 매개변수입니다. 응답 헤더 매개변수 값, 기본값은 ""입니다.

    type: 응답 헤더 매개변수 유형, STRING, INI, DATE를 지원하며 기본값은 Type.HeaderType.STRING입니다.