SSH所有注解 +注解整合

SSH注解(不用死记硬背,有个印象就好)

----------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)

 

[email protected]

作用:一般用于业务层对象(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";

}

-

}