스프링 프레임베이스 (06) : MVC 아키텍처 모델 프로필, 실행 흐름은 상세

이 문서 출처 : GitHub의이 · 여기를 클릭 || GitEE이 · 여기를 클릭하십시오

A, SpringMvc 프레임 워크 소개

1, MVC 디자인

재기록이없는 동안 MVC는 서비스 로직, 데이터 조직 코드, 내부의 구성 요소를 수집하는 비즈니스 로직을 분리하고 커스터마이즈 인터페이스와의 사용자 상호 작용을 개선 인터페이스 디스플레이 방법, 소프트웨어 설계 모델이며 비즈니스 로직, MVC 아키텍처 및 계층은 복잡한 애플리케이션을 관리 할 수 ​​있습니다

  • M : 표현Model

모델은 코어 데이터 애플리케이션이다.

  • V는 : 뷰를 나타냅니다View

이러한 JSP 등 에코 데이터 인터페이스는 데이터 모델을 표시하는 데 사용된다.

  • C는 : 컨트롤러를 나타낸다Controller

컨트롤러의 동작이 기준은 다른 응답 데이터 (인 Model(다른 관점에 도시) View에).

2 SpringMvc 프로필

  • 기술 프레임 워크

SpringMVC그것은 기반으로 Java의 실현 MVC경량의 유형의 드라이브 요구 디자인 패턴 Web로부터 프레임, Spring프레임 가족 버킷 및 Spring사용하여 프레임 원활한 통합 MVC아키텍처 패턴의 아이디어는 Web분리 의무에 레이어를.

  • 프레임의 장점

느슨한 구조는 거의 SpringMVC볼의 다양한 유형의 사용은 별도의 모듈과 결합의 정도는 각각 매우 낮고 쉽게 확장된다. 그리고 Spring쉽고 유연하고 원활한 통합, 단순, 사용할 수 있습니다.

두, SpringMvc의 실행 흐름

1 흐름도

2 단계에 기재된

(1), 상기 제어기는 상기 선단부에 대한 요청을 개시한다 DispatcherServlet;

(2) 전방 단부 컨트롤러 요청 HandlerMapping, 찾을 Handlerxml, 주석을 검색하도록 구성된다;

(3) 프로세서 매퍼 HandlerMapping선단부에 상기 제어기를 리턴 Handler;

(4) 컨트롤러 어댑터의 전방 단부는 호출을 수행하는 프로세서 Handler;

(5) 상기 어댑터 프로세서를 실행할 Handler;

(6)는, Handler어댑터에 실행 복귀가 완료된다 ModelAndView;

(7)은, 어댑터 제어기의 전단에 상기 프로세서 복귀 ModelAndView, ModelAndViewspringmvc함유, 기본 객체의 프레임 Modelview;

(8) 상기 제어부의 전단 뷰 논리적 뷰 실명으로 분석의 관점에서 수행하는보기 해상도 리졸버를 요청;

(9) 상기 전면 컨트롤러 리졸버로 볼 복귀 View;

(10), 렌더링을위한 제어기의 정면 단면도, 모델 뷰 데이터 (렌더링 ModelAndView오브젝트)에 충전 request도메인;

(11), 사용자에게 결과에 응답하여 상기 컨트롤러의 선단;

3 코어 요소

  • 전면 컨트롤러

DispatcherServlet: 브라우저 요청을 떠난 후에는 DispatcherServlet에 먼저 도달하고, 프로세스 제어의 중심은 리피터, 중앙 처리 장치에 대응하는 요청 응답 결과를 수신하는 역할을한다. 개별 구성 요소 사이에 결합의 정도를 감소시킨다.

  • 프로세서 매퍼

HandlerMapping: XML 구성, 주석 방법 : 지정된 인터페이스에 대한 경로 요청 URL은, 사용자의 요청은, 예를 들어, 다른 유형을 제공 SpringMVC를 매핑 처리기 프로세서를 찾을 수 있습니다.

  • 프로세서 어댑터

HandlerAdapter: 여러 개의 프로세서, 프로세서 등장 어댑터를 수용 해결하기 위해, 처리하는 다양한 방법들이 동일한 프로세서 아닌 다수의 프로세서 특정 규칙 핸들러 SpringMvc 지원에 따라 수행한다.

  • 프로세서

Handler: 특정 비즈니스 로직에 관한 사용자 요청을 처리 프로그래머는 비즈니스 요구 사항이 필요합니다. 핸들러를 작성하는 개발 시간의 규칙에 따라 HandlerAdapter, 그래서 어댑터는 처리기를 제대로 수행 할 수있다.

  • 보기 리졸버

ViewResolver다음 페이지를 통해 사용자에게 제공 뷰를 렌더링하기위한 도면 이름, 특정 페이지의 주소가 생성보기 뷰 객체의 논리적 관점에 따른 실제 이름으로 확인 요청 결과보기에 대한 응답을 생성을 담당.

  • 전망

View: JSP, 프리 마커, 같은 PDF : SpringMvc보기보기 프레임 워크는 많은 지원 유형의 포함을 제공합니다. 페이지에 크게 페이지 템플릿 분석 모델로 돌아 가기 라벨 또는 데이터 페이지는 페이지가 사업 개발의 ​​특정 요구에 따라.

셋째, 스프링 프레임 워크 구성의 통합

1 스프링 MVC 구성

<!-- 扫描文件 -->
<context:component-scan base-package="com.spring.mvc.controller" />
<!-- MVC默认的注解映射的方式 -->
<mvc:annotation-driven />
<mvc:default-servlet-handler/>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/page/" />
    <property name="suffix" value=".jsp" />
</bean>

2 web.xml을 구성

<servlet>
    <servlet-name>spring-mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>spring-mvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

3, 테스트 인터페이스

@Controller
public class HelloController {
    @RequestMapping("/getInfo")
    public @ResponseBody String getInfo (String name){
        return name ;
    }
}

4, 일반 설명 노트

  • @Controller

핸들러 클래스는 제어기와 연계 요청 방법, 이러한 컨트롤러의 관계를 매핑하는 데 사용 후 다른 주석 (@ GetMapping @ PostMapping @ PutMapping @ DeleteMapping) @RequestMapping 또는 제어기를 개발하는 마커 인 이 액세스를 요청 할 수 있습니다.

  • @RequestMapping

요청 주소 매핑 주석을 처리, 또는 클래스 메소드에 역할을 할 수있다. 클래스의 클래스를 나타내는 상기 요청에 응답하는 모든 방법들은 상위 클래스 경로와 주소를 표시한다.

  • @requestParam

제어 계층 SpringMvc 획득 파라미터 주요 프레임 워크는 3 개 개의 공통 매개 변수 : 부울 설정에 필요한 DEFAULTVALUE 표현 설정된 기본값 파라미터에 어떻게 전달해야하고, 값 파라미터 전달 이름의 값을 나타낸다.

  • @RequestBody

문자열 데이터 요청의 후단에 JSON 반송 체는 어떠한 요청 GET 메소드 그 때문에 @RequestBody를 사용하여 데이터를 수신하는 경우, GET 방법은 데이터를 전송하는데 사용될 수 없다는 것을 상기 POST 방법에 기재 할 필요가 없다 수신된다.

  • @ResponseBody

JSON을, XML을 같이 : 예를 들어, 지정된 데이터 형식을 사용하는 경우이 방법은 원하는 데이터보기 페이지 시도를 반환하지 않은 경우, 데이터 컨버터 구성에 지정된 형식에 대한 응답으로, 주석에 대한 객체를 반환하지만.

  • @Autowired

NULL 값이 허용되는 경우가 존재해야 종속 오브젝트를 요구 기본적으로 입력합니다 (byType와) 조립에 의존 오브젝트에 의해, false로 속성 세트를 요구할 수있다. 당신이 조립되는 이름 (요소 별명)에 따라 사용하고자하는 경우에는 @Qualifier 주석과 함께 사용할 수 있습니다.

  • @Resource

패키지 javax.annotation.Resource를 가져올 필요에 따라 요소 별명 자동 주입. @Resource가 두 가지 중요한 속성이 있습니다 이름과 유형, 그리고 봄 빈의 이름에 주석 이름 속성 결의를 @Resource 것, 유형 속성은 콩의 종류에 해결됩니다.

  • @PathVariable

URL이 템플릿 변수 파라미터에 대한 요청은 파라미터로서 처리 방법, 즉 URI를 추출 템플릿 변수로 매핑된다.

넷째, 공통 파라미터 매핑

1, 일반 매핑

@RequestMapping("/getSum")
public Integer getSum (int a,int b){
    return a+b ;
}

테스트 :

http://localhost:6003/getSum?a=1&b=2

매개 변수 전달 방법의 이름과 매개 변수는 동일하게 유지됩니다.

2, 매개 변수 이름을 지정

@RequestMapping("/getInfo")
public String getInfo (@RequestParam("name") String var1,
                       @RequestParam("say") String var2){
    return var1+":"+var2 ;
}

테스트 :

http://localhost:6003/getInfo?name=cica&say=hello

질량 참여와 @RequestParam 이름은 해당하는 매개 변수의 이름을 지정했습니다.

3 어레이 파라미터

@GetMapping("/getArray")
public String getArray (String[] ids){
    return ids[0]+"-"+ids[1] ;
}

테스트 :

http://localhost:6003/getArray?ids=2&ids=3

어레이 형 전송 포맷 파라미터를 분석.

4,지도 매개 변수

@RequestMapping("/getMap")
public String getMap (@RequestParam Map<String,String> paramMap){
    return paramMap.get("name") ;
}

테스트 :

http://localhost:6003/getCityEntity?province=浙江&name=杭州

이러한 방식으로 매개 변수는 포스트 CityEntity 엔티티 객체를 통과했다.

5, 포장 매개 변수

@PostMapping("/getCityEntity")
public CityEntity getCityEntity (CityEntity cityEntity){
    return cityEntity ;
}

테스트 :

http://localhost:6003/getCityEntity?province=浙江&name=杭州

이러한 방식으로 매개 변수는 포스트 CityEntity 엔티티 객체를 통과했다.

6, 나머지 스타일의 매개 변수

@GetMapping("/getId/{id}")
public String getId (@PathVariable("id") Integer id){
    return "id="+id ;
}

테스트 :

http://localhost:6003/getId/1

편안한 스타일의 매개 변수 매핑.

다섯째, 소스 코드의 주소

GitHub·地址
https://github.com/cicadasmile/spring-mvc-parent
GitEE·地址
https://gitee.com/cicadasmile/spring-mvc-parent

추천

출처www.cnblogs.com/cicada-smile/p/11993119.html