\n
\r\n<!-- https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-webmvc -->\r\n<dependency>\r\n <groupId>org.springframework<\/groupId>\r\n <artifactId>spring-webmvc<\/artifactId>\r\n <version>5.1.1.RELEASE<\/version>\r\n<\/dependency>\r\n<!-- https:\/\/mvnrepository.com\/artifact\/org.apache.tomcat\/tomcat-jasper -->\r\n<dependency>\r\n <groupId>org.apache.tomcat<\/groupId>\r\n <artifactId>tomcat-jasper<\/artifactId>\r\n <version>9.0.12<\/version>\r\n<\/dependency>\r\n <!-- https:\/\/mvnrepository.com\/artifact\/javax.servlet\/javax.servlet-api -->\r\n<dependency> \r\n <groupId>javax.servlet<\/groupId> \r\n <artifactId>servlet-api<\/artifactId> \r\n <version>3.0-alpha-1<\/version> \r\n<\/dependency>\r\n<!-- https:\/\/mvnrepository.com\/artifact\/javax.servlet\/jstl -->\r\n<dependency>\r\n <groupId>javax.servlet<\/groupId>\r\n <artifactId>jstl<\/artifactId>\r\n <version>1.2<\/version>\r\n<\/dependency>\r\n <!-- https:\/\/mvnrepository.com\/artifact\/org.hibernate.validator\/hibernate-validator -->\r\n<dependency>\r\n <groupId>org.hibernate.validator<\/groupId>\r\n <artifactId>hibernate-validator<\/artifactId>\r\n <version>6.0.13.Final<\/version>\r\n<\/dependency>\r\n<\/pre>\n<\/code>\n <\/div>\n
2\u3001\u521b\u5efabean\u7c7b<\/h3>\n\n
Employee.java <\/strong>\n <\/div>\n\n
\r\npackage <\/span>com.lidihuo;\r\nimport javax.validation.constraints.Size;\r\npublic <\/span>class <\/span>Employee {\r\n private <\/span>String name;\r\n @Size(min=1,message=\"required\"<\/span>)\r\n private <\/span>String pass;\r\n \r\n public <\/span>String getName() {\r\n return <\/span>name;\r\n }\r\n public void <\/span>setName(String name) {\r\n this<\/span>.name = name;\r\n }\r\n public <\/span>String getPass() {\r\n return <\/span>pass;\r\n }\r\n public void <\/span>setPass(String pass) {\r\n this<\/span>.pass = pass;\r\n } \r\n}\r\n<\/pre>\n<\/code>\n <\/div>\n
3\u3001\u521b\u5efa\u63a7\u5236\u5668\u7c7b<\/h3>\n\n
\u5728\u63a7\u5236\u5668\u7c7b\u4e2d: <\/strong>\n <\/div>\n @\u6709\u6548<\/strong>\u6ce8\u91ca\u5c06\u9a8c\u8bc1\u89c4\u5219\u5e94\u7528\u4e8e\u6240\u63d0\u4f9b\u7684\u5bf9\u8c61\u3002<\/span>
\n BindingResult <\/strong>\u63a5\u53e3\u5305\u542b\u9a8c\u8bc1\u7ed3\u679c\u3002<\/span> <\/p>\n\n
\r\npackage <\/span>com.lidihuo;\r\nimport javax.validation.Valid;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.ui.Model;\r\nimport org.springframework.validation.BindingResult;\r\nimport org.springframework.web.bind.annotation.ModelAttribute;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\n@Controller\r\npublic <\/span>class <\/span>EmployeeController {\r\n @RequestMapping(\"\/hello\"<\/span>)\r\n public <\/span>String display(Model m)\r\n {\r\n m.addAttribute<\/span>(\"emp\"<\/span><\/span>, new <\/span>Employee());\r\n return <\/span>\"viewpage\"<\/span><\/span>;\r\n }\r\n @RequestMapping(\"\/helloagain\"<\/span>)\r\n public <\/span>String submitForm( @Valid @ModelAttribute(\"emp\") Employee e, BindingResult br)\r\n {\r\n if(br.hasErrors<\/span>())\r\n {\r\n return <\/span>\"viewpage\";\r\n }\r\n else\r\n {\r\n return <\/span>\"final\"<\/span>;\r\n }\r\n }\r\n}\r\n<\/pre>\n<\/code>\n <\/div>\n
4\u3001\u5728web.xml\u6587\u4ef6\u4e2d\u63d0\u4f9b\u63a7\u5236\u5668\u7684\u6761\u76ee<\/h3>\n\n
web.xml <\/strong>\n <\/div>\n\n
\r\n<?xml version=\"1.0\"<\/span> encoding=\"UTF-8\"<\/span>?>\r\n<web-app xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"<\/span> xmlns=\"http:\/\/java.sun.com\/xml\/ns\/javaee\"<\/span> xsi:schemaLocation=\"http:\/\/java.sun.com\/xml\/ns\/javaee http:\/\/java.sun.com\/xml\/ns\/javaee\/web-app_3_0.xsd\"<\/span> id=\"WebApp_ID\"<\/span> version=\"3.0\"<\/span>>\r\n <display-name>SpringMVC<\/display-name>\r\n <servlet> \r\n <servlet-name>spring<\/servlet-name> \r\n <servlet-class>org.springframework.web.servlet.DispatcherServlet<\/servlet-class> \r\n <load-on-startup>1<\/load-on-startup> \r\n<\/servlet> \r\n<servlet-mapping> \r\n <servlet-name>spring<\/servlet-name> \r\n <url-pattern>\/<\/url-pattern> \r\n<\/servlet-mapping> \r\n<\/web-app>\r\n<\/pre>\n<\/code>\n <\/div>\n
5\u3001\u5728xml\u6587\u4ef6\u4e2d\u5b9a\u4e49Bean <\/h3>\n\n
spring-servlet.xml <\/strong>\n <\/div>\n\n
\r\n<?xml version=\"1.0\"<\/span> encoding=\"UTF-8\"<\/span>?>\r\n<beans xmlns=\"http:\/\/www.springframework.org\/schema\/beans\"<\/span>\r\n xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"<\/span> \r\n xmlns:context=\"http:\/\/www.springframework.org\/schema\/context\"<\/span>\r\n xmlns:mvc=\"http:\/\/www.springframework.org\/schema\/mvc\"<\/span>\r\n xsi:schemaLocation=\"\r\n http:\/\/www.springframework.org\/schema\/beans\r\n http:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd\r\n http:\/\/www.springframework.org\/schema\/context\r\n http:\/\/www.springframework.org\/schema\/context\/spring-context.xsd\r\n http:\/\/www.springframework.org\/schema\/mvc\r\n http:\/\/www.springframework.org\/schema\/mvc\/spring-mvc.xsd\">\r\n <!-- Provide support for <\/span>component scanning -->\r\n <context:component-scan base-package=\"com.lidihuo\"<\/span> \/>\r\n <!--Provide support for <\/span>conversion, formatting and validation -->\r\n <mvc:annotation-driven\/>\r\n <!-- Define Spring MVC view resolver -->\r\n <bean id=\"viewResolver\"<\/span> class=\"org.springframework.web.servlet.view.InternalResourceViewResolver\"<\/span>>\r\n <property name=\"prefix\"<\/span> value=\"\/WEB-INF\/jsp\/\"<\/span>><\/property>\r\n <property name=\"suffix\"<\/span> value=\".jsp\"<\/span>><\/property> \r\n <\/bean>\r\n<\/beans>\r\n<\/pre>\n<\/code>\n <\/div>\n
6\u3001\u521b\u5efa\u8bf7\u6c42\u7684\u9875\u9762<\/h3>\n\n
index.jsp <\/strong>\n <\/div>\n\n
\r\n<%@ taglib prefix=\"form\"<\/span> uri=\"http:\/\/www.springframework.org\/tags\/form\"<\/span> %>\r\n<html>\r\n<body>\r\n<a href=\"hello\"<\/span>>Click here...<\/a>\r\n<\/body>\r\n<\/html>\r\n<\/pre>\n<\/code>\n <\/div>\n
7\u3001\u521b\u5efa\u5176\u4ed6\u89c6\u56fe\u7ec4\u4ef6<\/h3>\n\n
viewpage.jsp <\/strong>\n <\/div>\n\n
\r\n<%@ taglib prefix=\"form\"<\/span> uri=\"http:\/\/www.springframework.org\/tags\/form\"<\/span> %>\r\n<html>\r\n<head>\r\n<style>\r\n.error{color:red}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<form:form action=\"helloagain\"<\/span> modelAttribute=\"emp\"<\/span>>\r\nUsername: <form:input path=\"name\"<\/span>\/> <br><br>\r\nPassword(*): <form:password path=\"pass\"<\/span><\/span>\/> \r\n<form:errors path=\"pass\" cssClass=\"error\"<\/span>\/><br><br>\r\n<input type=\"submit\"<\/span><\/span> value=\"submit\">\r\n<\/form:form>\r\n<\/body>\r\n<\/html>\r\n<\/pre>\n<\/code>\n <\/div>\n
\n
final.jsp <\/strong>\n <\/div>\n\n
\r\n<html>\r\n<body>\r\nUsername: ${emp.name} <br><br>\r\nPassword: ${emp.pass}\r\n<\/body>\r\n<\/html>\r\n<\/pre>\n<\/code>\n <\/div>\n
\n
\u8f93\u51fa: <\/strong>\n <\/div>\n 
\n <\/p>\n
\n \u8ba9\u6211\u4eec\u63d0\u4ea4\u8868\u5355\u800c\u4e0d\u8f93\u5165\u5bc6\u7801\u3002\n <\/div>\n

\n <\/p>\n
\n \u73b0\u5728\uff0c\u6211\u4eec\u8f93\u5165\u5bc6\u7801\uff0c\u7136\u540e\u63d0\u4ea4\u8868\u683c\u3002\n <\/div>\n

\n
\n 
\n
\n <\/body>
\n<\/html><\/p>\n","protected":false},"excerpt":{"rendered":"Spring MVC\u9a8c\u8bc1zh-cn","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[105],"tags":[],"class_list":["post-544","post","type-post","status-publish","format-standard","hentry","category-bc_spring_jc"],"_links":{"self":[{"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/posts\/544"}],"collection":[{"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/comments?post=544"}],"version-history":[{"count":0,"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/posts\/544\/revisions"}],"wp:attachment":[{"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/media?parent=544"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/categories?post=544"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/tags?post=544"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}