SpringMVC 연구 노트 (1) 속편 세부 구성

팁 : 주로 springmvc의 몇 가지 공통 구성 요소의 구성 및 사용을 소개합니다.


머리말

Springmvc는 구성 요소를 기반으로 개발되었으므로 정식 개발 전에 필요한 구성 요소를 구성해야합니다.


나는 한 접시를 가지고 있습니다. 실수하면 가볍게 뿌려주세요.

1. 도입 사례 실행 과정 분석

1. web.xml구성 으로 인한 Tomcat 서버 시작 시간 dispatcherServlet이 구성 <load-on-startup>1</load-on-startup>되면 시작할 때 레이블 DispatcherServlet개체가 생성되고 <init-param>구성 탭이 로드 springmvc.xml됩니다.

2.에서 springmvc.xml주석 스캔이 활성화되고 @Controller 태그가 HelloController에 추가 되었으므로 HelloController 개체가 생성됩니다.

3. index.jsp 페이지에서 보낸 요청이 먼저 도착하면 dispatcherServlet 코어 컨트롤러 (프론트 컨트롤러)가 구성된 @RequestMapping 주석에 따라 실행할 메서드를 찾습니다.

4. 메서드 실행 후 반환 값은 구성된 뷰 파서에 따라 반환 된 jsp 페이지를 찾습니다.

5. Tomcat 서버가 페이지를 렌더링하고 응답합니다.

2. 엔트리 케이스의 성분 분석

1. 프론트 컨트롤러 (DispatcherServlet)
2. 핸들러 매핑 (HandlerMapping)
3. 프로세서 (Handler)
4. 프로세서 어댑터 (HandlAdapter)
5. View Resolver
6. View

여기에 사진 설명 삽입
간단히 말해서 프론트 엔드 컨트롤러는 전장의 사령관과 같습니다. 그는 다양한 기능을 가진 병사 그룹을 가지고 있습니다. 싸울 때 그는 자신의 필요에 따라 다른 병사들에게 지시를 내리기 만하면됩니다. 그의 손 아래에있는 병사들이 완료합니다. 결과는 임무 종료 후 지휘관에게도 반환됩니다.

세 가지, 일반적으로 사용되는 주석 분석

@RequestMapping

역할 : URL과 처리 방법 (API) 간의 대응을 설정하는 데 사용됩니다.

명령:

  1. 기능 및 클래스 : 첫 번째 수준 액세스 디렉터리
  2. 방법에 대한 조치 : 디렉토리에 대한 두 번째 액세스 수준

RequestMapping의 속성 :

  1. 경로는 요청 경로의 URL을 지정합니다.
  2. 값 속성은 경로 속성과 동일합니다.
  3. mthod는 메서드의 요청 방법을 지정합니다.
  4. params는 요청 매개 변수를 제한하는 조건을 지정합니다.
  5. 헤더 전송 된 요청에 포함되어야하는 요청 헤더

샘플 코드 :
여기에 사진 설명 삽입
여기에 사진 설명 삽입
여기서 요청 경로는 다음과 같습니다. http : // localhost : 8080 / user / hello

뿡 빵뀨

기능 : 요청에 지정된 이름의 매개 변수를 컨트롤러의 공식 매개 변수 할당에 전달합니다.

속성 :

  1. 값 : 요청 매개 변수의 이름
  2. 필수 :이 매개 변수가 요청 매개 변수에 제공되어야하는지 여부, 기본값은 true이며 제공되어야합니다.

샘플 코드 :

후면 끝 :

@RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam(name = "name") String username){
    
    
        System.out.println("testRequestParam执行了。。。");
        System.out.println(username);
        return "success";
    }

프런트 엔드 :

    <a href="anno/testRequestParam?name=哈哈">RequestParam</a>

@RequestBody

기능 : 요청 본문의 내용을 가져 오는 데 사용됩니다 (참고 : get 메소드는 허용되지 않음).

속성

  1. 필수 : 요청 본문이 있어야하는지 여부, 기본값은 true입니다.

샘플 코드 :

후면 끝 :

@RequestMapping("/testRequestBody")
    public String testRequestBody(@RequestBody String body){
    
    
        System.out.println("testRequestBody执行了。。。");
        System.out.println(body);
        return "success";
    }

프런트 엔드 :

        <a href="anno/testPathVariable/10">testPathVariable</a>

AthPathVariable

역할 : 바인딩 URL에 자리 표시자가 있습니다. 예 : URL의 / delete / {id}, {id}는 자리 표시 자입니다.

속성

  1. 값 :
    URL Restful 스타일 URL에 자리 표시 자 이름 지정하십시오.

  2. 요청 경로는 동일하며 다른 요청 방법에 따라 백그라운드에서 다른 방법을 실행할 수 있습니다.

  3. 편안한 스타일 URL의 장점

    1. 명확한 구조
    2. 표준 준수
    3. 이해하기 쉬운
    4. 확장하기 쉬움

샘플 코드 :

후면 끝 :

@RequestMapping("/testPathVariable/{sid}")
    public String testPathVariable(@PathVariable(name = "sid") String id){
    
    
        System.out.println("testPathVariable执行了。。。");
        System.out.println(id);
        return "success";
    }

프런트 엔드 :

    <form action="anno/testRequestBody" method="post">
        用户姓名:<input type="text" name="username" /><br/>
        用户年龄:<input type="text" name="age" /><br/>
        <input type="submit" value="提交" />
    </form>

@RequestHeader

역할 : 지정된 요청 헤더의 값을 가져옵니다.

속성

  1. value : 요청 헤더의 이름

샘플 코드 :

후면 끝 :

@RequestMapping("/testRequestHeader")
    public String testRequestHeader(@RequestHeader(value = "Accept") String header){
    
    
        System.out.println("testRequestHeader执行了。。。");
        System.out.println(header);
        return "success";
    }

프런트 엔드 :

        <a href="anno/testRequestHeader">testRequestHeader</a>

@CookieValue

역할 : 지정된 쿠키의 이름 값을 가져 오는 데 사용됩니다.

속성

  1. value : 쿠키의 이름

샘플 코드 :

후면 끝 :

@RequestMapping("/testCookieValue")
    public String testCookieValue(@CookieValue(value = "JSESSIONID") String cookieValue){
    
    
        System.out.println("testCookieValue执行了。。。");
        System.out.println(cookieValue);
        return "success";
    }

프런트 엔드 :

	<a href="anno/testCookieValue">testCookieValue</a>

@ModelAttribute

효과

  1. 메서드에 표시 : 컨트롤러 메서드가 실행되기 전에 현재 메서드가 실행됨을 나타냅니다.
  2. 매개 변수에 표시 : 매개 변수를 할당하기 위해 지정된 데이터를 가져옵니다.

애플리케이션 시나리오

  1. 제출 된 양식 데이터가 완전한 엔티티 데이터가 아닌 경우 제출되지 않은 필드가 데이터베이스의 원래 데이터를 사용하는지 확인하십시오.

샘플 코드 :

후면 끝 :

@RequestMapping("/testModelAttribute")
    public String testModelAttribute(@ModelAttribute("abc") User user){
    
    
        System.out.println("testModelAttribute执行了。。。");
        System.out.println(user);
        return "success";
    }

    @ModelAttribute
    public void showUser(String username, Map<String,User> map){
    
    
        User user = new User();
        user.setUsername(username);
        user.setAge(20);
        user.setDate(new Date());
        map.put("abc",user);
    }

여기서는 현재 양식의 쓸모없는 데이터 만 @ModelAttribute 주석에 지정된 데이터와 함께 할당된다는 점에 유의해야합니다.

프런트 엔드 :

	<form action="anno/testModelAttribute" method="post">
        用户姓名:<input type="text" name="username" /><br/>
        用户年龄:<input type="text" name="age" /><br/>
        <input type="submit" value="提交" />
    </form>

@SessionAttributes

역할 : 컨트롤러 메소드간에 매개 변수 공유를 여러 번 실행하는 데 사용됩니다.

속성

  1. 값 : 저장된 속성의 이름을 지정하십시오.

샘플 코드 :

후면 끝 :

@RequestMapping("/testSessionAttributes")
    public String testSessionAttributes(Model model){
    
    
        System.out.println("testSessionAttributes。。。");
        model.addAttribute("msg","张三");
        return "success";
    }

    @RequestMapping("/getSessionAttributes")
    public String getSessionAttributes(ModelMap modelMap){
    
    
        System.out.println("getSessionAttributes。。。");
        String msg = (String) modelMap.get("msg");
        System.out.println(msg);
        return "success";
    }

    @RequestMapping("/delSessionAttributes")
    public String delSessionAttributes(SessionStatus status){
    
    
        System.out.println("getSessionAttributes。。。");
        status.setComplete();
        return "success";
    }

여기에 사진 설명 삽입

프런트 엔드 :

	<a href="anno/testSessionAttributes">testSessionAttributes</a>
    <a href="anno/getSessionAttributes">getSessionAttributes</a>
    <a href="anno/delSessionAttributes">delSessionAttributes</a>

요약하자면

기본적으로 처음 4 개의 주석을 마스터하는 것으로 충분하며 후자의 주석은 거의 사용되지 않습니다.여기에 사진 설명 삽입

추천

출처blog.csdn.net/u013456390/article/details/113430369