7、显示和提交form
显示,带上空数据
@RequestMapping(method = RequestMethod.GET, params = "register")
public String prepare(Model model) {
Member m = new Member();
model.addAttribute(m);
return "member/edit";
}
form用spring标签库的几个标签
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form"%>
用户名:
密码:
Email Address:
modelAttribute:数据
path:属性
8、处理form提交
@RequestMapping(method = RequestMethod.POST)
public String register(Member member,
BindingResult bindingResult,
) {
if (bindingResult.hasErrors()) {
return "member/edit";
}
service.addMember(member);
return "redirect:/member/"+member.getMemberName();
}
URLEncoder.encode用来处理重定向时的中文问题
9、验证提交
用户名:
密码:
Email Address:
控制器:
public String register(@Valid Member member,
BindingResult bindingResult,
) {...}
bean:
public class Member {
@Size(min=3, max=20, message="Username must be between 3 and 20 characters long.")
@Pattern(regexp="^[a-zA-Z0-9]+$",message="Username must be alphanumeric with no spaces")
private String memberName;
@Size(min=6, max=20,
message="The password must be at least 6 characters long.")
private String password;
...}
10、中文乱码问题解决
web.xml
11、文件上传
上传处理
@RequestMapping(method = RequestMethod.POST)
public String register( @RequestParam(value = "image", required = false) MultipartFile image) {
try {
if (!image.isEmpty()) {
validateImage(image);
saveImage(member.getMemberName() + ".jpg", image); //
}
} catch (Exception e) {
bindingResult.reject(e.getMessage());
return "member/edit";
}
return "redirect:/member/"+member.getMemberName();
}
}
private void validateImage(MultipartFile image) throws Exception {
if (!image.getContentType().equals("image/pjpeg")) {
throw new Exception("Only JPG images accepted");
}
}
private void saveImage(String filename, MultipartFile image)
throws Exception {
try {
File file = new File(webRootPath + "/resources/" + filename);
FileUtils.writeByteArrayToFile(file, image.getBytes());
} catch (IOException e) {
throw new Exception("Unable to save image", e);
}
}