您好,登錄后才能下訂單哦!
【SpringMVC簡介】
Spring MVC屬于SpringFrameWork的后續產品,已經融合在Spring Web Flow里面。Spring 框架提供了構建 Web 應用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構,從而在使用Spring進行WEB開發時,可以選擇使用Spring的Spring MVC框架或集成其他MVC開發框架,如Struts1(現在一般不用),Struts 2(一般老項目使用)等等。
【SpringMVC常用注解】
@Controller
負責注冊一個bean 到spring 上下文中
@RequestMapping
注解為控制器指定可以處理哪些 URL 請求
@RequestBody
該注解用于讀取Request請求的body部分數據,使用系統默認配置的HttpMessageConverter進行解析,然后把相應的數據綁定到要返回的對象上 ,再把HttpMessageConverter返回的對象數據綁定到 controller中方法的參數上
@ResponseBody
該注解用于將Controller的方法返回的對象,通過適當的HttpMessageConverter轉換為指定格式后,寫入到Response對象的body數據區
@ModelAttribute
在方法定義上使用 @ModelAttribute 注解:Spring MVC 在調用目標處理方法前,會先逐個調用在方法級上標注了@ModelAttribute 的方法
在方法的入參前使用 @ModelAttribute 注解:可以從隱含對象中獲取隱含的模型數據中獲取對象,再將請求參數 –綁定到對象中,再傳入入參將方法入參對象添加到模型中
@RequestParam
在處理方法入參處使用 @RequestParam 可以把請求參 數傳遞給請求方法
@PathVariable
綁定 URL 占位符到入參
@ExceptionHandler
注解到方法上,出現異常時會執行該方法
@ControllerAdvice
使一個Contoller成為全局的異常處理類,類中用@ExceptionHandler方法注解的方法可以處理所有Controller發生的異常
【SpringMVC與Struts2區別比較】
A、spring mvc 和 struts2的加載機制不同:spring mvc的入口是servlet,而struts2是filter(servlet和filter區別見本文最后)
B、Struts2框架是類級別的攔截
C、SpringMVC是方法級別的攔截
【JPA注解】
@Entity:表明這是一個實體類。
@MappedSuperClass:用在確定是父類的entity上。父類的屬性子類可以繼承。
@NoRepositoryBean:一般用作父類的repository,有這個注解,spring不會去實例化該repository。
@Column:如果字段名與列名相同,則可以省略。
@Id:表示該屬性為主鍵。
@JoinColumn(name=”loginId”):一對一:本表中指向另一個表的外鍵。一對多:另一個表指向本表的外鍵。
@OneToOne、@OneToMany、@ManyToOne:對應hibernate配置文件中的一對一,一對多,多對一。
【全局異常注解】
@ControllerAdvice:包含@Component。可以被掃描到。統一處理異常。
@ExceptionHandler(Exception.class):用在方法上面表示遇到這個異常就執行以下方法。
【項目中具體配置解析和使用環境注解】
@MappedSuperclass:
1.@MappedSuperclass 注解使用在父類上面,是用來標識父類的
2.@MappedSuperclass 標識的類表示其不能映射到數據庫表,因為其不是一個完整的實體類,但是它所擁有的屬性能夠映射在其子類對用的數據庫表中
3.@MappedSuperclass 標識的類不能再有@Entity或@Table注解
@Column:
1.當實體的屬性與其映射的數據庫表的列不同名時需要使用@Column標注說明,該屬性通常置于實體的屬性聲明語句之前,還可與 @Id 標注一起使用。
2.@Column 標注的常用屬性是name,用于設置映射數據庫表的列名。此外,該標注還包含其它多個屬性,如:unique、nullable、length、precision等。
【執行持久化方法,按發生時間執行的回調函數】
@javax.persistence.PostLoad:加載后。
@javax.persistence.PrePersist:持久化前。
@javax.persistence.PostPersist:持久化后。
@javax.persistence.PreUpdate:更新前。
@javax.persistence.PostUpdate:更新后。
@javax.persistence.PreRemove:刪除前。
@javax.persistence.PostRemove:刪除后。
【數據庫注解】
1)增
@PrePersist和@PostPersist事件在實體對象插入到數據庫的過程中發生:
@PrePersist事件在調用persist()方法后立刻發生,此時的數據還沒有真正插入進數據庫。
@PostPersist事件在數據已經插入進數據庫后發生。
2)刪
@PreRemove和@PostRemove事件的觸發由刪除實體引起:
@PreRemove事件在實體從數據庫刪除之前觸發,即在調用remove()方法刪除時發生,此時的數據還沒有真正從數據庫中刪除。
@PostRemove事件在實體從數據庫中刪除后觸發。
3)改
@PreUpdate和@PostUpdate事件的觸發由更新實體引起:
@PreUpdate事件在實體的狀態同步到數據庫之前觸發,此時的數據還沒有真正更新到數據庫。
@PostUpdate事件在實體的狀態同步到數據庫之后觸發,同步在事務提交時發生。
4)查
@PostLoad事件在下列情況下觸發:
執行EntityManager.find()或getreference()方法載入一個實體后。
執行JPQL查詢后。
EntityManager.refresh()方法被調用后。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。