Spring MVC 이해 및 주요 사용 설명
1、 사용자 가 서버 에 요청 을 보 냅 니 다.url:user
2、 서버 에서 요청 을 받 았 습 니 다.디 스 패 치 servlet 를 발견 하면 처리 할 수 있 습 니 다.그래서 Dispatch Servlet 을 호출 합 니 다.
3、 Dispatch Servlet 내부 에서 Handle Mapping 을 통 해 이 url 에 대응 하 는 Controller 가 있 는 지 확인 합 니 다.있 으 면 Controller 를 호출 합 니 다.
4、 Control 실행 시작
5、 Controller 가 실 행 된 후 문자열 을 되 돌려 주면 ViewResolver 는 문자열 을 해당 하 는 보기 대상 으로 변환 합 니 다.Model AndView 대상 으로 돌아 가면 해당 대상 자체 에 보기 대상 정보 가 포 함 됩 니 다.
6、 Dispatch Servlet 은 보기 대상 의 데 이 터 를 서버 에 출력 합 니 다.
7、 서버 가 클 라 이언 트 에 데 이 터 를 출력 합 니 다.
관련 jar 가방 의 의미:
1、 org.springframework.aop-3.0.3.RELEASE.jar ----->spring 의 op 절단면 프로 그래 밍
2、 org. springframework. asm - 3.0.3. RELEASE. jar --- > spring 독립 된 asm 바이트 생 성 프로그램
3、 org. springframework. beans - 3.0.3. RELEASE. jar --- > IOC 의 기초 실현
4、 org.springframework.context-3.0.3.RELEASE.jar ----->IOC 기반 확장 서비스
5、 org. springframework. core - 3.0.3. RELEASE. jar --- > spring 의 핵심 패키지
6、 org.springframework.expression-3.0.3.RELEASE.jar ----->spring 의 표현 식 언어
7、 org. springframework. web - 3.0.3. RELEASE. jar --- > 웹 공구 꾸러미
8、 org.springframework.web.servlet-3.0.3.RELEASE.jar ----->화면 음악 공구 꾸러미
주해
1、@Controller
@Controller
public class UserController {
.......
.......
}
Struts 1 과 마찬가지 로 Spring 의 Controller 는 Singleton 의 것 이다.여러 요청 스 레 드 에 의 해 공유 된다 는 뜻 이다.그래서 우 리 는 컨트롤 러 를 무상 태 류 로 설계 했다.
웹 xml 에 설정 하기
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:spring-mvc.xmlparam-value>
context-param>
spring - mvc. xml 설정 이 필요 합 니 다.
<context:component-scan base-package="controller" />
2、@RequestMapping
① 클래스 앞에서 정의 하면 url 과 클래스 를 연결 합 니 다.(이 클래스 에 하나의 방법 만 있다 면 이렇게 쓸 수 있 습 니 다. 이 주 소 를 방문 하여 이 방법 을 직접 호출 할 수 있 습 니 다)
예제 코드 는 다음 과 같다.
@Controller
@RequestMapping("/queryuser")
public class UserController {
......
......
}
② 방법 앞에서 정의 하면 url 과 클래스 의 방법 을 연결 합 니 다.
예제 코드 는 다음 과 같다.
@Controller
public class UserController {
@RequestMapping("/queryuser")
public Object queryUserList(HttpServletRequest request, HttpServletResponse response) {
.....
.....
}
}
3、@RequestParam
A) 간단 한 형식의 바 인 딩 을 처리 하 는 데 자주 사용 되 며 Request. getParameter () 를 통 해 얻 은 String 은 간단 한 형식 으로 직접 변환 할 수 있 습 니 다 (String -- > 간단 한 형식의 변환 작업 은 ConversionService 가 설정 한 변환기 로 이 루어 집 니 다).request. getParameter () 방식 으로 인 자 를 가 져 오기 때문에 get 방식 에서 query String 의 값 을 처리 할 수도 있 고 post 방식 에서 body data 의 값 을 처리 할 수도 있 습 니 다.
B) Content - Type 처리:
application/x-www-form-urlencoded
인 코딩 의 내용, 제출 방식 GET, POST;C) 이 주 해 는 두 가지 속성 이 있 습 니 다: value, required;value 는 값 을 입력 할 id 이름 을 지정 합 니 다. required 는 매개 변수 가 연결 되 어야 하 는 지 여 부 를 표시 합 니 다.
/**
*
* **/
@RequestMapping(value = "/del")
@ResponseBody
public MsgBean deleteAgents(@RequestParam("ids")String ids[]){
MsgBean msg = null;
try {
msg = agentsService.delAgents(ids);
} catch (Exception e) {
logger.error(" ..." + e.getMessage());
throw new BusinessException(e.getMessage());
}
return msg;
}
@Controller
public class PersonController {
/**
*
*
* @param id
* @return
*/
@RequestMapping(value = "/person/profile/{id}/{name}/{status}", method = RequestMethod.GET)
public @ResponseBody
Person porfile(@PathVariable int id, @PathVariable String name,
@PathVariable boolean status) {
return new Person(id, name, status);
}
/**
*
*
* @param person
* @return
*/
@RequestMapping(value = "/person/login", method = RequestMethod.POST)
public @ResponseBody
Person login(@RequestBody Person person) {
return person;
}
}
비고: @ RequestMapping (value = "/ person / profile / {id} / {name} / {status}", method = RequestMethod. GET) 의 {id} / {name} / {status} 은 @ PathVariable int id, @ PathVariable String name, @ PathVariable boolean status 와 일일이 대응 하여 이름 에 따라 일치 합 니 다.restful 스타일 입 니 다.
맵 이름 이 다 르 면 다음 과 같은 방식 을 참고 할 수 있 습 니 다.
@RequestMapping(value = "/person/profile/{id}", method = RequestMethod.GET)
public @ResponseBody
Person porfile(@PathVariable("id") int uid) {
return new Person(uid, name, status);
}
4、@ResponseBody
역할:
이 주 해 는 Controller 의 방법 을 되 돌려 주 는 대상 으로, 적절 한 HttpMessageConverter 를 통 해 지 정 된 형식 으로 변환 한 후 Response 대상 의 body 데이터 영역 에 기록 합 니 다.
사용 시기:
돌아 오 는 데 이 터 는 html 태그 의 페이지 가 아니 라 다른 형식의 데이터 일 때 (예 를 들 어 json, xml 등) 사용 합 니 다.
코드
5、@RequestBody
역할:
i) 이 주 해 는 Request 가 요청 한 body 부분 데 이 터 를 읽 는 데 사 용 됩 니 다. 시스템 기본 설정 의 HttpMessageConverter 를 사용 하여 분석 한 다음 해당 데 이 터 를 되 돌 릴 대상 에 연결 합 니 다.
ii) HttpMessage Converter 가 되 돌아 오 는 대상 데 이 터 를 controller 의 방법 에 대한 매개 변수 에 연결 합 니 다.
사용 시기:
A) GET, POST 방식 을 제시 할 때 request header Content - Type 의 값 에 따라 판단 한다.
B) PUT 방식 으로 제출 할 때 request header Content - Type 의 값 에 따라 판단 합 니 다.
설명: request 의 body 부분의 데이터 인 코딩 형식 은 header 부분의 Content - Type 에서 지정 합 니 다.
6、@SessionAttributes
@SessionAttributes:
이 주 해 는 HttpSession 의 attribute 대상 의 값 을 연결 하 는 데 사용 되 며, 방법의 매개 변수 에서 사용 하기 편리 합 니 다.
이 주 해 는 value, types 두 개의 속성 이 있 으 며, 이름과 형식 을 통 해 사용 할 attribute 대상 을 지정 할 수 있 습 니 다.
@Controller
@RequestMapping("/user")
@SessionAttributes({"u","a"}) // ModelMap u、a session 。 ,request session 。
publicclass UserController {
@RequestMapping(params="method=list")
public String list(ModelMap map) {
System.out.println("HelloController.handleRequest()");
map.addAttribute("u","users"); // u request , 。
return"index";
}
}
index 코드
<body>
<h1>${requestScope.u.uname}h1>
<h1>${sessionScope.u.uname}h1>
body>
7、@ModelAttribute
이 주 해 는 두 가지 용법 이 있 는데 하 나 는 방법 에 사용 되 고 하 나 는 매개 변수 에 사용 된다.
방법 상 사용 시: 일반적으로 @ RequestMapping 을 처리 하기 전에 바 인 딩 을 요청 하기 위해 배경 에서 조회 해 야 하 는 model;
매개 변수 에 사용 할 때: 이름 을 통 해 대응 하고 해당 이름 의 값 을 주해 의 매개 변수 bean 에 연결 합 니 다.바 인 딩 할 값 은:
A) @ SessionAttributes 에서 사용 하 는 attributes 대상 에;
B) @ ModelAttribute 는 방법 상 지정 한 model 대상 에 사 용 됩 니 다.
C) 상기 두 가지 상황 이 없 을 때 new 는 바 인 딩 이 필요 한 bean 대상 을 연결 한 다음 에 request 에서 이름 에 대응 하 는 방식 으로 값 을 bean 에 연결 합 니 다.
사용 방법 상 @ ModelAttribute 의 예제 코드:
@ModelAttribute
public Account addAccount(@RequestParam String number) {
return accountManager.findAccount(number);
}
이러한 방식 의 실제 효 과 는 @ RequestMapping 방법 을 호출 하기 전에 request 대상 의 model 에 put ("account", account) 를 넣 는 것 입 니 다.
매개 변수 에 사용 할 @ ModelAttribute 예제 코드:
@RequestMapping(value="/owners/{ownerId}/pets/{petId}/edit", method = RequestMethod.POST)
public String processSubmit(@ModelAttribute Pet pet) {
}
먼저 @ SessionAttributes 에 연 결 된 Pet 대상 이 있 는 지, 없 는 경우 @ ModelAttribute 방법 차원 에서 Pet 대상 이 연결 되 어 있 는 지, 없 는 경우 URI template 의 값 을 해당 하 는 이름 으로 Pet 대상 의 각 속성 에 연결 합 니 다.
@ ModelAttribute 는 @ Session Attributes 와 함께 사용 할 수 있 습 니 다.ModelMap 에서 속성의 값 을 통 해 이 주 해 를 통 해 지정 한 변 수 를 자동 으로 부여 할 수 있 습 니 다.
예제 코드 는 다음 과 같다.
@Controller
@RequestMapping("/user")
@SessionAttributes({"u","a"})
publicclass UserController {
@RequestMapping(params="method=list1")
public String list1(ModelMap map) {
System.out.println("HelloController.handleRequest()");
map.addAttribute("u"," ");
return"index";
}
@RequestMapping(params="method=list2")
public String list2(@ModelAttribute("u")String username ,ModelMap map) {
System.out.println("HelloController.handleRequest()");
System.out.println(username );
return"index";
}
}
위 에서 먼저 list 1 방법 을 호출 한 다음 에 list 2 방법 을 호출 합 니 다.
다음으로 전송:https://www.cnblogs.com/wzqkalil/p/5328100.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.