SpringMVC常用方法大全
阿新 • • 發佈:2019-03-17
mbo 使用 sets 國際 oid 自身 ota messages student
---恢復內容開始---
web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet><servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!--處理編碼格式的問題--> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!--編碼格式結束--> </web-app>
dispatcher-servlet.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd"> <mvc:default-servlet-handler/> <mvc:annotation-driven></mvc:annotation-driven> <!--配置 Spring的註解 掃包--> <context:component-scan base-package="com.hxzy"></context:component-scan> <!--配置SpringMVC的視圖 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/view/"></property> <property name="suffix" value=".jsp"></property> </bean> <!--配置國際化顯示工具--> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <!-- 指定文件基名 --> <property name="basename" value="message"/> <!-- 當沒有找到資源文件時,用這基名文件 --> <property name="useCodeAsDefaultMessage" value="true" /> </bean> <!--配置適配 MVC基本配置--> <mvc:annotation-driven></mvc:annotation-driven> <!--配置SpringMVC 不經過Handler 直接訪問jsp 攔截器必須是 / 不能是 *.do--> <mvc:view-controller path="A/gugugu" view-name="success"></mvc:view-controller> <!--配置靜態資源訪問權限 需要跟<mvc:annotation-driven> 配合使用--> <mvc:default-servlet-handler></mvc:default-servlet-handler> <!--配置類的轉換器 1.將自定義的轉換器加載到Bean--> <bean id="converter" class="com.hxzy.test.MyConverter"></bean> <!--3.結束 此配置是SpringMVC的基礎配置,很功能都需要通過該註解來協調 --> <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven> <!-- 配置 數據格式化 註解 所依賴的bean 2.將自定義的Bean 加入到SpringMVC提供的Bean中 --> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <ref bean="converter"></ref> </set> </property> </bean> </beans>
TestSpringMVC:
package com.hxzy.test; import com.hxzy.pojo.Address; import com.hxzy.pojo.Student; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.validation.BindingResult; import org.springframework.validation.FieldError; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.Map; //@SessionAttributes("student") //放在Session作用域中 可以是type= "Student.class" 或者是 key的值 @RequestMapping("/SpringMvc") @Controller //將該類加載到SpringIOC容器 public class TestSpringMVC { /** * 普通方法操作 * @return */ @RequestMapping("show1") public String show1(){ System.out.println("進入show1"); return "success"; } /** * 普通的POST方式 */ @RequestMapping(value = "show2",method = RequestMethod.POST) public String show2(){ return "success"; } /** * name 屬性的值必須是zs 並且 年齡不能是25歲(也可以沒有這個age 屬性) 並且 不能包含sex屬性 () */ @RequestMapping(value = "show3",method = RequestMethod.POST,params = {"user=zs","age!=25","!sex"}) public String show3(){ return "success"; } /** * 參數要求 包含一個參數 並獲取他 */ @RequestMapping(value = "show4/{name}",method = RequestMethod.POST) public String show4(@PathVariable("name") String name){ System.out.println(name); return "success"; } /** * 獲取 通過普通的方式獲取表單裏面的值 * * 多個方式的話 在方法裏面填寫就可以了 * 為了處理 前臺頁面傳來的值小於獲取的值需要設置 * (前臺傳來了3個值 可是Handler裏面接受 5個值) * @RequestParam(value = "age",required = false,defaultValue ="25") Integer age) * 需要這樣寫 */ @RequestMapping(value = "show_form",method = RequestMethod.POST) public String show_from(@RequestParam("user") String name ,@RequestParam(value = "age",required = false,defaultValue ="25") Integer age){ System.out.println("name="+name); System.out.println("age=" + age); return "success"; } /** * 使用SpringMVC的核心功能 最牛逼的地方 將前臺的數據傳輸到實體類 * 註意屬性一定要對應 */ @RequestMapping(value = "show_allCanshuw",method = RequestMethod.POST) public String show_allCanshuw(Student student){ System.out.println(student); return "success"; } /** * 使用原生Servlet */ @RequestMapping(value = "use_servlet",method = RequestMethod.POST) public String use_servlet(HttpServletRequest request){ System.out.println(request); return "success"; } /** * 返回數據和視圖 使用 ModelAndView */ @RequestMapping(value = "show_student") public ModelAndView show_student(){ System.out.println("進入ModelAndView........."); ModelAndView mv = new ModelAndView(); mv.setViewName("success"); Student student = new Student(); student.setS_age(15); student.setS_name("大黃"); mv.addObject("student",student); return mv; } /** * 返回數據類型 Map */ @RequestMapping("show_map") public String show_map(Map<String,Object> map){ Student student = new Student(); student.setS_name("古斌map"); map.put("studentMap",student); return "success"; } /** * 返回數據類型 Model */ @RequestMapping("show_model") public String show_model(Model model){ Student student = new Student(); student.setS_name("古斌Model"); model.addAttribute("studentModel",student); return "success"; } /** * 返回數據類型 Modelmap */ @RequestMapping("show_ModelMap") public String show_ModelMap(ModelMap modelMap){ Student student = new Student(); student.setS_name("古斌ModelMap"); modelMap.put("studentModelMap",student); return "success"; } /** * 修改數據 從數據庫讀出來的數據 進行修改 跟下面的方法對應!!! */ @RequestMapping(value = "updateStudent",method = RequestMethod.POST) public String updateStudent(@RequestParam("updatename") String name,@ModelAttribute("s") Student student){ student.setS_name(name); System.out.println(student); return "success"; } //為了配合修改 加上ModelAttribute @ModelAttribute public void queryStudent(Map<String,Object> map){ System.out.println("ModelAttribute開始執行"); //假設數據是從數據庫查看的 Student student = new Student(); student.setS_name("古斌"); student.setS_age(18); Address address = new Address(); address.setSchool_address("石家莊"); System.out.println(student); map.put("s",student); //如果 Map的key 跟修改的方法的參數對不上 需要在參數 加上@ModelArrribute } /** * 國際化處理 */ @RequestMapping("i18n_test") public String i18n_test(){ return "success"; } /** * 測試指定方式請求 轉發||重定向 * * 通過“forward:”指定跳轉方式為請求轉發 * 通過“redirect:”指定跳轉方式為重定向 */ @RequestMapping("SetHttp") public String SetHttp(){ return "redirect:/view/success.jsp"; } /** * 配置類的轉換器 String 古斌-18 轉換 成 Student對象 */ @RequestMapping("StudentInfo") public String StudentInfo(@RequestParam("studentinfo") Student student){ System.out.println(student); return "success"; } /** * 配置格式化的類 日期格式化 */ @RequestMapping("Studentinfoss") public String Studentinfoss(Student student ,BindingResult result){ //如果有錯誤信息 if (result.getErrorCount() > 0) { //循環遍歷所有錯誤信息 for (FieldError error : result.getFieldErrors()) { System.out.println(error.getField() + ":" + error.getDefaultMessage()); } } System.out.println(student); return "success"; } /** * 數據的校驗 演示 校驗Email * * @Null 被註釋的元素必須為 null。 * @NotNull 被註釋的元素必須不為 null。 * @AssertTrue 被註釋的元素必須為 true。 * @AssertFalse 被註釋的元素必須為 false。 * @Min(value) 被註釋的元素必須是一個數字,其值必須大於或等於value。 * @Max(value) 被註釋的元素必須是一個數字,其值必須小於或等於value。 * @DecimalMin(value) 被註釋的元素必須是一個數字,其值必須大於或等於value。 * @DecimalMax(value) 被註釋的元素必須是一個數字,其值必須小於或等於value。 * @Size(max, min) 被註釋的元素的取值範圍必須是介於min和max之間。 * @Digits (integer, fraction) 被註釋的元素必須是一個數字,其值必須在可接受的範圍內。 * @Past 被註釋的元素必須是一個過去的日期。 * @Future 被註釋的元素必須是一個將來的日期。 * @Pattern(value) 被註釋的元素必須符合指定的正則表達式。 * Hibernate Validator 是JSR 303的擴展。Hibernate Validator 提供了 JSR 303中所有內置的註解,以及自身擴展的4個註解,如下: * * 註解 簡介 * @Email 被註釋的元素值必須是合法的電子郵箱地址。 * @Length 被註釋的字符串的長度必須在指定的範圍內。 * @NotEmpty 被註釋的字符串的必須非空。 * @Range 被註釋的元素必須在合適的範圍內。 * */ @RequestMapping("Jiaoyan") public String Jiaoyan(@Valid Student student, BindingResult result){ //如果有錯誤信息 if (result.getErrorCount() > 0) { //循環遍歷所有錯誤信息 for (FieldError error : result.getFieldErrors()) { System.out.println( ":"+ error.getDefaultMessage()+error.getField()); } } System.out.println(student); return "success"; } }
index.jsp
<%-- Created by IntelliJ IDEA. User: 古斌 Date: 2019/3/14 Time: 17:33 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>測試類</title> </head> <body> <%--普通方式--%> <a href="SpringMvc/show1.do">Get方式指定</a><br> <%--post模式--%> <form action="SpringMvc/show2.do" method="post"> <input type="submit" value="普通的POST方式"> </form> <hr> <%--name屬性必須等於zs--%> <form action="SpringMvc/show3.do" method="post"> 賬號 <input name="user">年齡<input name="age"> <input type="submit"> </form> <hr> <%--有存取一個姓名 如果有.do .action 都寫在名字後面--%> <form action="SpringMvc/show4/古斌.do" method="post"> <input type="submit" value="獲取姓名"> </form> <hr> <%--獲取name的值 普通方式操作--%> <form action="SpringMvc/show_form.do" method="post"> <input name="user"> <input type="submit" value="普通方式查詢name的值"> </form> <hr> <%--測試Spring MVC最牛逼之處 將前臺表單的數據 直接封裝到實體類--%> <form action="SpringMvc/show_allCanshuw.do" method="post"> 姓名 <input name="s_name"> 年齡<input name="s_age"> 地址<input name="address.school_address"> <input type="submit" value="提交_封裝到實體類"> </form> <hr> <%--原生Servlet--%> <form action="SpringMvc/use_servlet.do" method="post"> <input type="submit" value="使用原生Servlet"> </form> <hr> <%--獲取requeest作用域中的數據--%> <form action="SpringMvc/show_student.do" method="post"> <input type="submit" value="ModelAndView方式"> </form> <hr> <%--使用Map集合方式實現數據交互--%> <a href="SpringMvc/show_map.do">Map方式</a> <hr> <%--使用ModelMap--%> <a href="SpringMvc/show_ModelMap.do">ModelMap方式</a><hr> <%--使用Model--%> <a href="SpringMvc/show_model.do">Model方式</a><hr> <%--修改數據--%> <form method="post" action="SpringMvc/updateStudent.do"> name; <input type="text" name="updatename"> <input type="submit" value="新修改"> </form><hr> <%--國際化顯示數據--%> <a href="SpringMvc/i18n_test.do">i18N</a><hr> <%--不經過Handler處理直接進入數據 這個web.xml中的Spring配置必須是/ 不能是*.do 等--%> <a href="A/gugugu">NoApplicable_</a><hr> <%--配置修改請求方式 轉發 重定向 這種方式對國際化會有影響 導致 國際化代碼不能使用--%> <a href="SpringMvc/SetHttp.do">轉發or重定向</a><hr> <%--配置轉換器--%> <form method="post" action="SpringMvc/StudentInfo.do"> 信息; <input type="text" name="studentinfo"> <input type="submit" value="轉換"> </form><hr> <%--配置日期格式化--%> <form method="post" action="SpringMvc/Studentinfoss.do"> 日期; <input type="text" name="birthday"> 姓名:<input type="text" name="s_name"/><br> 年齡:<input type="text" name="s_age"/><br> <input type="submit" value="顯示日期"> </form><hr> <%--數據的校驗--%> <form method="post" action="SpringMvc/Jiaoyan.do"> 日期; <input type="text" name="birthday"><br> 姓名:<input type="text" name="s_name"/><br> 年齡:<input type="text" name="s_age"/><br> Email:<input name="email"> <br> <input type="submit" value="顯示日期"> </form><hr> </body> </html>
Student.java
package com.hxzy.pojo; import lombok.Data; import org.hibernate.validator.constraints.Email; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.NumberFormat; import java.util.Date; @Data public class Student { private String s_name; @NumberFormat(pattern = "##,#") private Integer s_age; @DateTimeFormat(pattern="yyyy-MM-dd")//格式化:前臺傳遞來的數據,將前臺傳遞來到數據 固定為yyyy-MM-dd private Date birthday ;// 2018-12-13 @Email private String email; @Override public String toString() { return "Student{" + "姓名=‘" + s_name + ‘\‘‘ + ", 年齡=" + s_age + "日期"+birthday+ // ", 地址=" + address.getSchool_address() + ‘}‘; } }
SpringMVC常用方法大全