SSH所有註解 +註解整合
SSH註解(不用死記硬背,有個印象就好)
https://blog.csdn.net/towerljyt/article/details/80293678
----------Spring-----------
---建立物件---
@Component(美 [kəm'ponənt]啃破門特)
作用:相當於bean.xml檔案中,bean標籤使用<bean id=”” class=”” />
屬性:value:給bean取一個名稱,相當於bean標籤的id屬性。
細節:如果不指定,預設使用類的名稱(首字母小寫)。寫法上value可以省略。
[email protected]衍生註解(3個)
[email protected] (美 [kən'trolɚ]啃磋o le)
作用:一般用於表現層物件(Action)
作用:一般用於業務層物件(service)
[email protected] (英 [rɪ'pɒzɪt(ə)rɪ]瑞趴滋特蕊)
作用:一般用於持久物件(dao)
@Scope (英 [skəʊp]斯詬普
作用:設定bean的作用範圍
屬性:value
屬性取值:
singleton:單例。預設值
prototype:多例 (Action 注意: 一定是多例)
request:web專案中的一次請求範圍
session:web專案中的會話範圍
globalsession:web專案中全域性會話範圍(portlet)
---注入資料---
@Autowired (英 ['ɔːtəʊ] ['waɪəd] 窩頭 外爾的)
作用:根據bean的型別自動注入
細節:如果spring容器中同一個型別有多個bean存在,則需要根據變數名稱和bean的id進行比較
@Qualifier (英 ['kwɒlɪfaɪə(r)] kuo 立 fai 兒的)
作用:在注入資料時,可以配合@Autowired註解一起使用。在按照型別注入的基礎上,按照bean的id注入。
屬性:value:指定注入bean的id
細節:1.在給類的成員變數注入資料時,不能單獨使用,需要配合@Autowired註解一起使用
2.在給方法的形參注入資料時候,可以單獨使用
@Resource
作用:按照bean的id注入資料。
屬性:name:指定注入bean的id
type:指定注入bean的型別
細節:預設情況下(不指定屬性),它會先根據變數名稱注入,注入不成功;再根據型別注入。
以上三個註解,都是給bean型別注入資料,不能注入基本型別和字串String
@Value
作用:給基本型別和String型別注入資料。
屬性:value:注入的資料值
---和生命週期相關的註解---
@PostConstruct (英post [kən'strʌkt] post 抗 斯 拽 科特)
作用:指定在spring容器建立物件時(構造方法執行後立即執行),呼叫的方法。該方法一般都是執行一些初始化的操作。
細節:相當於xml配置中bean標籤的init-method屬性
@PreDestory
作用:指定在spring容器銷燬前,呼叫的方法。該方法一般都是執行一些釋放資源的操作。
細節:相當於xml配置中bean標籤的destroy-method屬性
---Junit用到---
----------Hibernate---------
hibernate註解使用到的是jpa的註解,用來代替xxx.hbm.xml那個檔案
都是放在Bean物件中使用的
@Entity
作用:宣告該類是一個JPA標準的實體類
@Table
作用:指定實體類關聯的表,注意如果不寫表名,預設使用類名對應表名。
屬性:name 指明資料庫的表
@Column (英 ['kɒləm] ka lou)
作用:指定實體類屬性對應的表字段,如果屬性和欄位一致,可以不寫
屬性:name 指明資料庫對應的欄位名
[Id生成策略
@Id
作用:宣告屬性是一個OID,對應的一定是資料庫的主鍵欄位
@GenerateValue ( 美 ['dʒɛnəret] value 狙勒瑞特 Value)
作用:宣告OID的主鍵策略
@SequenceGenerate( 美 ['sikwəns]['dʒɛnəret] C可蕊斯 狙勒瑞特)
作用:使用SEQUENCE策略時,用於設定策略的引數
1.在資料庫主鍵為整型 自增長時寫法:
2.在資料庫主鍵為VARCHAR等非整型時寫法:
3.元件為uuid時寫法
]
@TableGenerate
作用:使用TABLE主鍵策略時,用於設定策略的引數
@JoinTable
作用:關聯查詢時,表與表是多對多的關係時,指定多對多關聯表中間表的引數
@JoinColumn
作用:關聯查詢時,表與表是一對一、一對多、多對一以及多對多的關係時,宣告表關聯的外來鍵欄位作為連線表的條件。必須配合關聯表的註解一起使用
@OneToMany
作用:關聯表註解,表示對應的實體和本類是一對多的關係
@ManyToOne
作用:關聯表註解,表示對應的實體和本類是多對一的關係
@ManyToMany
作用:關聯表註解,表示對應的實體和本類是多對多的關係
----------Struts------------
@NameSpace
出現的位置:它只能出現在 package 上或者 Action 類上。一般情況下都是寫在 Action 類上。
作用:指定當前 Action 中所有動作方法的名稱空間。
屬性:value :指定名稱空間的名稱。寫法和 xml 配置時一致。不指定的話,預設名稱空間是""。
@ParentPackage
出現的位置:它只能出現在 package 上或者 Action 類上。一般情況下都是寫在 Action 類上。
作用:指定當前動作類所在包的父包。(eg:"struts-default")
value :指定父包的名稱
@Action
出現的位置:它只能出現在 Action 類上或者動作方法上。一般情況下都是寫在動作方法上。
作用:指定當前動作方法的動作名稱。也就是 xml 配置時 action 標籤的 name 屬性。
屬性:
value :指定動作名稱。
results[]: :它是一個陣列,資料型別是註解。用於指定結果檢視。此屬性可以沒有,當沒有
該屬性時,表示不返回任何結果檢視。即使用 response 輸出響應正文。
interceptorRefs[] :它是一個數組,資料型別是註解。用於指定引用的攔截器。
@Result
出現的位置:它可以出現在動作類上,也可以出現在 Action 註解中。
作用:出現在類上,表示當前動作類中的所有動作方法都可以用此檢視。
出現在 Action 註解中,表示當前 Action 可用此檢視。
屬性:
name :指定邏輯結果檢視名稱。
type :指定前往檢視的方式。例如:請求轉發,重定向,重定向到另外的動作。
location :指定前往的地址。可以是一個頁面,也可以是一個動作。
@Results
出現的位置:它可以出現在動作類上,也可以出現在 Action 註解中。
作用:用於配置多個結果檢視。
屬性:
value :它是一個陣列,資料型別是 result 註解。
@InterceptorRef
出現的位置:它可以出現在動作類上或者 Action 註解中。
作用:用於配置要引用的攔截器或者攔截器棧
屬性:
value :用於指定攔截器或者攔截器棧
SSH-crm搭建(註解版本)
--1.導hibernate包(13基本包+hibernate的c3p0包3個)+mysql驅動包
--2.(資料準備表等)編寫實體類
--3匯入spring包(IOC+AOP+tx+-web(可後面整合導)-)
4.1編寫持久層dao
4.2編寫業務層service
註解事物
5.編寫spring配置檔案
--5.1applicationContext.xml
--5.2applicationContext-dao.xml
--5.3applicationContext-tx.xml
--6測試hibernate與spring整合
測試出現的問題:<property name="jdbcUrl" value="jdbc:mysql:///tower" />
--7.struts配置
匯入前端檔案和struts包(struts基礎包+struts註解+spring-web(spring與struts整合包))(eclipse需要導jstl包)
--8.編寫struts配置檔案
--9.編寫web.xml配置檔案
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>myssh-v3</display-name>
<!-- 配置全域性引數,指定spring配置檔案的位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext.xml</param-value>(classpath:必寫)
</context-param>
<!-- 配置監聽器ContextLoaderListener,說明: 1.ContextLoaderListener監聽器,它會監聽ServletContext物件的建立和銷燬。預設它是載入WEB-INF/目錄下的檔案,
並且檔名稱只能是applicationContext.xml 2.applicationContext.xml配置檔案,需要與其它的配置檔案統一放在一起,方便維護管理。此時只需要配置contextConfigLocation
屬性,告訴監聽器配置檔案的位置即可。 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置核心過濾器 -->
<!-- 配置前端控制器 -->
<filter>
<filter-name>crm</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<!-- 指定struts2配置檔案位置 -->
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,struts/struts.xml</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>crm</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
--10.編寫web.xml配置檔案
10.1. 編寫動作類物件(與前端路徑匹配)
@Autowired
// 有註解不用set方法
private CustomerService service;
private Customer c = new Customer();
private List<Customer> customers;
@Override
public Customer getModel() {
return c;
}
// -----------------getter setter----------------------------
public List<Customer> getCustomers() {
return customers;
}
public void setCustomers(List<Customer> customers) {
this.customers = customers;
}
// ----------操作方法------------
/**
* 跳轉到新增客戶頁面
*/
@Action(value = "addCustomerUI", results = { @Result(name = "addCustomerUI", location = "/jsp/customer/add.jsp") })
public String addCustomerUI() {
return "addCustomerUI";
}
/**
* 查詢客戶列表
*/
@Action(value = "findCustomers", results = { @Result(name = "findCustomers", location = "/jsp/customer/list.jsp") })
public String findCustomers() {
customers = service.findcustomers();
return "findCustomers";
}
/**
* 儲存客戶
*/
@Action(value = "addCustomer", results = { @Result(name = "addCustomer", type = "redirect", location = "findCustomers.action") })
public String saveCustomer() {
service.saveCustomer(c);
return "addCustomer";
}
-
}
--------------------- 本文來自 towerLJYT 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/towerljyt/article/details/80293678?utm_source=copy