시리즈 (SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1)에서는 요청이 작업에 매핑되는 방법을 소개했습니다. 물론 다음 단계는 요청에서 데이터를 얻는 방법이며, 이는 이 문서의 내용인 데이터 바인딩으로 이어집니다.
먼저 데이터 바인딩을 위한 주석을 살펴보겠습니다.
SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1.@RequestParam은 단일 요청 데이터를 바인딩합니다. 이는 URL의 데이터, 양식으로 제출된 데이터 또는 업로드된 파일
SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1.@PathVariable, URL 템플릿 변수 값 바인딩
SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1.@CookieValue, 쿠키 데이터 바인딩
SpringMVC 학습시리즈(4) 데이터 바인딩-1.@RequestHeader, 요청 헤더 데이터 바인딩,
6.@SessionAttributes에 데이터 바인딩,
7.@RequestBody에 Content-Type이 application/x-www-form-urlencoded가 아닌 콘텐츠를 처리하는 데 사용됨(예: application/) json, application/xml 등
8.@RequestPart, "multipart/data" 데이터를 바인딩하고 데이터 유형에 따라 객체 변환을 입력할 수 있습니다.
SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1.@RequestParam:
파일 바인딩을 확인하려면 먼저 다음을 수행해야 합니다.
a commons-fileupload-SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1.SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1.SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1.jar 및 commons를 입력합니다. -io- SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1.SpringMVC 학습시리즈(4) 데이터 바인딩-1.jar 두 개의 jar 패키지가 프로젝트에 추가되었습니다.
b. 파일 업로드를 지원하도록 프로젝트에서 springservlet-config.xml 파일을 구성합니다.
<!-- 支持上传文件 --> <bean> <!-- 设置上传文件的最大尺寸为SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1MB --> <property> <value>SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-10SpringMVC 학습시리즈(4) 데이터 바인딩-18576</value> </property> <property> <value>UTF-8</value> </property></bean>
는 업로드되는 파일의 최대 크기를 제한하는 데 사용되며, 설정되지 않은 상태로 둘 수도 있습니다. 이는 업로드되는 파일의 크기에 제한이 없음을 의미합니다. defaultEncoding은 업로드된 파일의 인코딩 형식을 설정하는 데 사용되며 업로드된 파일의 중국어 이름이 왜곡되는 문제를 해결하는 데 사용됩니다. 사용 방법을 살펴보겠습니다.
가져오기 및 게시 요청에 각각 해당하는 SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1개의 paramBind 작업이 있는 DataBindController를 추가합니다.
package com.demo.web.controllers;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.web.bind.ServletRequestUtils;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest;import org.springframework.web.servlet.ModelAndView; @Controller @RequestMapping(value = "/databind")public class DataBindController { @RequestMapping(value="/parambind", method = {RequestMethod.GET}) public ModelAndView paramBind(){ ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("parambind"); return modelAndView; } @RequestMapping(value="/parambind", method = {RequestMethod.POST}) public ModelAndView paramBind(HttpServletRequest request, @RequestParam("urlParam") String urlParam, @RequestParam("formParam") String formParam, @RequestParam("formFile") MultipartFile formFile){ //如果不用注解自动绑定,我们还可以像下面一样手动获取数据 String urlParamSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1 = ServletRequestUtils.getStringParameter(request, "urlParam", null); String formParamSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1 = ServletRequestUtils.getStringParameter(request, "formParam", null); MultipartFile formFileSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1 = ((MultipartHttpServletRequest) request).getFile("formFile"); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("urlParam", urlParam); modelAndView.addObject("formParam", formParam); modelAndView.addObject("formFileName", formFile.getOriginalFilename()); modelAndView.addObject("urlParamSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1", urlParamSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1); modelAndView.addObject("formParamSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1", formParamSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1); modelAndView.addObject("formFileNameSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1", formFileSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1.getOriginalFilename()); modelAndView.setViewName("parambindresult"); return modelAndView; } }
nbsp;html PUBLIC "-//WSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1C//DTD HTML SpringMVC 학습시리즈(4) 데이터 바인딩-1.0SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1 Transitional//EN" "http://www.wSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1.org/TR/htmlSpringMVC 학습시리즈(4) 데이터 바인딩-1/loose.dtd"><meta><title>Insert title here</title>
nbsp;html PUBLIC "-//WSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1C//DTD HTML SpringMVC 학습시리즈(4) 데이터 바인딩-1.0SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1 Transitional//EN" "http://www.wSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1.org/TR/htmlSpringMVC 학습시리즈(4) 데이터 바인딩-1/loose.dtd"><meta><title>Insert title here</title> 自动绑定数据:
${urlParam}
${formParam}
${formFileName}
手动获取数据:
${urlParamSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1}
${formParamSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1}
${formFileNameSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1}
결과 보기 제출:
바운드 데이터를 획득한 것을 확인할 수 있습니다.
위에서 데이터를 단일 변수에 바인딩하는 방법을 설명했지만 실제 애플리케이션에서는 일반적으로 모델 개체를 가져와야 합니다. 데이터를 개별 변수에 바인딩한 다음 비교할 필요가 없습니다. 모델에 값을 할당할 때 해당 작업 매개변수에 모델을 추가하기만 하면 됩니다(여기에서는 데이터 바인딩에 대한 주석을 지정할 필요가 없습니다). Spring MVC는 자동으로 데이터를 변환하여 모델 객체에 바인딩합니다. 모든 것이 그렇게 간단합니다. 테스트 내용은 다음과 같습니다.
添加一个AccountModel类作为测试的model:
package com.demo.web.models;public class AccountModel { private String username; private String password; public void setUsername(String username){ this.username=username; } public void setPassword(String password){ this.password=password; } public String getUsername(){ return this.username; } public String getPassword(){ return this.password; } }
在DataBindController里面添加SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1个modelAutoBind的action分别对应get和post请求:
@RequestMapping(value="/modelautobind", method = {RequestMethod.GET})public String modelAutoBind(HttpServletRequest request, Model model){ model.addAttribute("accountmodel", new AccountModel()); return "modelautobind"; } @RequestMapping(value="/modelautobind", method = {RequestMethod.POST})public String modelAutoBind(HttpServletRequest request, Model model, AccountModel accountModel){ model.addAttribute("accountmodel", accountModel); return "modelautobindresult"; }
在views文件夹中添加modelautobind.jsp和modelautobindresult.jsp SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1个视图用于提交数据和展示提交的数据:
modelautobind.jsp:
nbsp;html PUBLIC "-//WSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1C//DTD HTML SpringMVC 학습시리즈(4) 데이터 바인딩-1.0SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1 Transitional//EN" "http://www.wSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1.org/TR/htmlSpringMVC 학습시리즈(4) 데이터 바인딩-1/loose.dtd"><meta><title>Insert title here</title>
modelautobindresult.jsp :
nbsp;html PUBLIC "-//WSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1C//DTD HTML SpringMVC 학습시리즈(4) 데이터 바인딩-1.0SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1 Transitional//EN" "http://www.wSpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1.org/TR/htmlSpringMVC 학습시리즈(4) 데이터 바인딩-1/loose.dtd"><meta><title>Insert title here</title> 用户名:${accountmodel.username}
密 码:${accountmodel.password}
运行测试:
用户名 输入AAA 密码 输入BBB,提交:
可以看到结果显示正确,说明自动绑定成功。
注:
SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1.关于@RequestParam的参数,这是一个@RequestParam的完整写法@RequestParam(value="username", required=true, defaultValue="AAA")。
value表示要绑定请求中参数的名字;
required表示请求中是否必须有这个参数,默认为true这是如果请求中没有要绑定的参数则返回SpringMVC 학습시리즈(4) 데이터 바인딩-10SpringMVC 학습시리즈(4) 데이터 바인딩-1;
defaultValue表示如果请求中指定的参数值为空时的默认值;
要绑定的参数如果是值类型必须要有值否则抛异常,如果是引用类型则默认为null(Boolean除外,默认为false);
SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1.在刚才添加的SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1个action中可以看到返回类型和以前的不一样了由ModelAndView变成了String,这是由于Spring MVC 提供Model、ModelMap、Map让我们可以直接添加渲染视图需要的模型数据,在返回时直接指定对应视图名称就可以了。同时Map是继承于ModelMap的,而Model和ModelMap是继承于ExtendedModelMap的。
SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1. 방금 추가한 view modelautobind.jsp에서 form:form, form:input Wait 태그는 Spring MVC에서 제공하는 양식 태그로, 모델 데이터를 양식에 쉽게 바인딩할 수 있습니다(물론 기본 HTML 양식 태그를 계속 사용하도록 선택할 수도 있습니다). 스프링을 사용하려면 MVC는 @ taglib prefix="form에 대한 참조를 추가하기만 하면 됩니다. "우리="http://www.php.cn/" %>이면 충분해요, 봄에 대해서 MVC 양식 태그의 구체적인 내용은 향후 기사에서 소개될 예정입니다.
위 내용은 SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1)의 Data Binding-SpringMVC 학습시리즈(SpringMVC 학습시리즈(4) 데이터 바인딩-1) 데이터 바인딩-1 내용이다. 중국사이트(www.php.cn)!