급 프로세서 개발 주석을 기반으로 MVC 주석 스타일의 개발은 XML로 등록하지 않고, 각 프로세서에 대해 정의.
그냥 클래스와 메소드를 주석으로 코드에서 등록을 완료합니다.
정의 프로세서
@Controller : 현재 클래스 프로세서
@RequestMapping : 임의의 프로세서에있어서, 메소드 명에 대한 현재의 방법 및 상기 요청에 응답하는 처리된다.
@Controller 공용 클래스 MyController에 { @RequestMapping (값 = " /hello.do " ) 공공 의 ModelAndView doControl (HttpServletRequest의 요청 HttpServletResponse를 응답) { 의 ModelAndView MV = 새 의 ModelAndView (); mv.addObject ( " 메시지 " , " 执行方法" ); mv.setViewName ( " 환영, 닐! " ); 반환 MV를; } }
RequestMapping 요청은, 예를 들어 제한 될 수있다
@RequestMapping (값 = " /hello.do " , 있는 params = { " 이름 = 닐 " , " ! 나이 " }, 방법 = RequestMethod.POST)
방법 = RequestMethod.POST 정의 타입 POST를 제출
PARAMS = { "이름 = 닐", "! 나이"} 매개 변수를 소지해야합니다 요청에 정의 된 이름, 값 닐, 매개 변수는 나이를 수행 할 수없는
요청 매개 변수를 수락
파라미터 이름 및 파라미터 이름 요청 프로세서 일관된 방법, 그것을 직접 획득 될 수있는 경우.
(값 = @RequestMapping " /hello.do " ) 공공 의 ModelAndView doControll (문자열 이름, INT의 나이) { 시스템. 밖으로 .println ( " 이름 : " + 이름 + " , 나이 : " + 세); 의 ModelAndView MV = 새 의 ModelAndView (); 반환 MV를; }
매개 변수 이름이 일치하지 않는 경우, @RequestParam에 의해 위치해야합니다.
세 가지 속성이 있습니다 @RequestParam
- 이름 / 값 : 파라미터 지정 요청의 이름.
- 필수 : 매개 변수를해야하는지 여부가 false 인 경우, 그것은 가능한 매개 변수가 없음을 의미합니다.
- DEFAULTVALUE : 요청 매개 변수, 현재 매개 변수의 기본값을 수행하지 않는 경우.
doControll (@RequestParam (이름 = " 사용자 이름 " ) 문자열 이름, @RequestParam (이름 = " userage " ) INT의 나이)
경로 변수 @PathVariable
프로세서의 처리 파라미터는, 가변 될 수있는 URI로부터 상기 요청에 운반되는 매개 변수, 즉 경로 변수로부터 유도 될 수있다.
파라미터 값을 수신하고, 변수의 이름과 경로 이름이 일치하지 않는 경우 상기 정상 파라미터로서, 상기 가변 파라미터의 경로명 것을 주목하여야한다.
아래와 같이 사용자 이름 노트 이름, 나이, 연령.
(값 = @RequestMapping " /{username}/{age}/hello.do " ) 공공 의 ModelAndView doControll (@PathVariable ( " 이름 " ) 문자열 이름, @RequestParam의 INT의 나이) { 시스템. 밖으로 .println ( " 이름 : " + 이름 + " , 나이 : " + 세); 의 ModelAndView MV = 새 의 ModelAndView (); 반환 MV를; }
방법은 값 프로세서를 반환
프로세서를 사용 @Controller 주석, 상기 방법은 일반적으로 다음 네되어 사용되는 값을 반환
- 의 ModelAndView
- 빈
- 객체, 사용자 정의 유형의 객체
- 끈
1,의 ModelAndView를 반환
완료 처리기 메서드 후에는 다른 리소스로 이동하는 것이 필요하며, 자원 점프 사이에 데이터를 전송할 필요, ModelAndView를 반환 할 수 있습니다.
공공 의 ModelAndView doControll () { 의 ModelAndView의 ModelAndView = 새 의 ModelAndView (); // 传递的数据 modelAndView.addObject ( " 이름 " , " 닐 " ); modelAndView.setViewName ( " /user.do " ); 반환 ModelAndView 활성화; }
2, 무효 반환
요청을 처리 한 후, 더 점프는 무효 프로세서 복귀 예컨대 Ajax를 비동기 요청 - 응답 넣을 수 없다.
원하는 점프는 앞으로 또는 sendRedirect을 ServletAPI 운영에 의해 수행 될 수있다합니다.
3, 반환 객체
객체 프로세서는이 시간 표시 용 페이지 데이터의 논리도로서 나타나지만 직접하지 객체를 반환 할 수있다.
객체는 객체를 돌려 주석 @ResponseBody, 무게로 변환 된 JSON 응답 데이터가 필요합니다.
프런트 엔드 데이터 수집
FR.ajax ({ URL : " hello.do " , 완전한 : 기능 (데이터) { 경고 (data.name + " " + data.age); } })
마찬가지로, 등등 컬렉션 목록,지도를 반환 할 수 있습니다.
@RequestMapping (값 = " /hello.do " ) @ResponseBody 공공 의 ModelAndView doControll () { 목록 <학생> 목록 = 새로운 ArrayList를 <학생> (); 에는 list.add ( 새로운 학생 ( " " , 11 )); 에는 list.add ( 새로운 학생 ( " B " , 22 )); 에는 list.add ( 새로운 학생 ( " C " , 33 )); 반환 목록; }
프런트 엔드 데이터 수집
FR.ajax ({ URL : " hello.do " , 완전한 : 기능 (데이터) { $ (데이터) .each (기능 (인덱스)) { 경고 (데이터 [인덱스] .name을 + 데이터 [인덱스] .age); } } })
4, 문자열을 반환
세 가지 시나리오가 있습니다 문자열을 반환합니다 :
- 논리적 뷰 이름
- 리디렉션 리디렉션
- 앞으로 전달
논리적 뷰 이름
프로세서는 문자열이 물리적 뷰에 논리적 뷰 이름에 의해 뷰 파서 주소를 지정할 수 있습니다 반환합니다.
마지막으로 실제 액세스 경로 = "접두사"논리적 뷰 + 이름 + "접미사"
접두사와 접미사를 지정하지 않으면 같은 물리적 뷰 이름에 직접 반환 될 수 있습니다
반환 " /WEB-INF/admin/welcome.jsp "
리디렉션 리디렉션
반환 " : /admin/next.action 리디렉션 " ;
등가 위해 response.sendRedirect (), 포워딩 어드레스로 브라우저 주소창 전달 후.
새로운 요청을 시작하기 때문에 원래의 매개 변수를 전달할 때, 다음 URL로 전달 될 수 없습니다,
파라미터 A = 1, B = 2, url로 접속자 수를 파라미터를 돌려 보내는
앞으로 전달
반환 " 앞으로 : /admin/forward.action를 " ;
등가 request.getRequestDispatcher (). 포워드 (요청, 응답) 브라우저 주소창 또는 원래 주소를 전달 후.
전달을 수행하고 새로운 요청 및 응답하지만, 요청 및 공유 요청 및 응답을 전달하기 전에되지 않습니다.
매개 변수를 직접 전달하기 전에 다시 사용할 수 있습니다.
즉 모든이 기사에 대한, 우리는 당신이 집에 스크립트를 지원 희망 배울 도움이되고 싶어합니다.
문서에서 : https://www.jb51.net/article/136822.htm
또한 기사에 관심이있을 수 있습니다 :
- 스프링 MVC 프레임 워크 구축 구성 및 자세한
- SpringMVC 파일 업로드 파일 업로드 예
- SpringMVC + MyBatis로 선언적인 트랜잭션 관리
- 스프링 MVC 파일 업로드 예
- 간단한 예시 침전물 SpringMVC (SSM 통합)
- 세 가지 방법으로 JSON 데이터를 반환 SpringMVC
- springMVC 페이지 점프 여러 가지 방법 요약
- SpringMVC 인터셉터는 정적 자원의 세 가지 치료의 수단과 방법을 차단하지 않습니다
- JSON 포맷 데이터 컨텍스트 요청 SpringMVC에서 아약스 비동기 구현
- 처음부터 자습서의 올드 스프링 MVC 시리즈를 검토