摘要:本文主要向大家介绍了JAVA语言的ssh整合之七注解结合xml形式,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了JAVA语言的ssh整合之七注解结合xml形式,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
1.我们之前的纯xml的方式,我们的配置文件很多,我们可以使用注解结合xml的方式进行开发,这样的话,我们的配置文件,会少很多,同时,我们可以直接在类中看到配置,这样,我们就可以快速地搭建一个ssh整合的项目了
首先,我们应该考虑:我们的哪些东西需要我们用注解形式进行替换?
第一个:hibernate中的关系映射文件,我们可以使用jpa结合hibernate注解进行替换
第二个:spring中,我们的自定义的对象,我们可以使用我们的spring中ioc和tx的注解进行替换
第三个:我们的struts.xml可以使用struts的注解替换
这个是我们的一个大体上的思路,现在我们就去实现它!
我们的 实体类Customer
package com.itheima.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="cst_customer")public class Customer {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="cust_id")
private Long custId; //客户编号
@Column(name="cust_name")
private String custName; //客户名称
@Column(name="cust_source")
private String custSource; //客户信息来源
@Column(name="cust_industry")
private String custIndustry; //客户所属行业
@Column(name="cust_level")
private String custLevel; //客户级别
@Column(name="cust_address")
private String custAddress; //客户联系地址
@Column(name="cust_phone")
private String custPhone; //客户联系电话
public Long getCustId() {
return custId;
}
public void setCustId(Long custId) {
this.custId = custId;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getCustSource() {
return custSource;
}
public void setCustSource(String custSource) {
this.custSource = custSource;
}
public String getCustIndustry() {
return custIndustry;
}
public void setCustIndustry(String custIndustry) {
this.custIndustry = custIndustry;
}
public String getCustLevel() {
return custLevel;
}
public void setCustLevel(String custLevel) {
this.custLevel = custLevel;
}
public String getCustAddress() {
return custAddress;
}
public void setCustAddress(String custAddress) {
this.custAddress = custAddress;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
@Override
public String toString() {
return "Customer [custId=" + custId + ", custName=" + custName + ", custSource=" + custSource
+ ", custIndustry=" + custIndustry + ", custLevel=" + custLevel + ", custAddress=" + custAddress
+ ", custPhone=" + custPhone + "]";
}
}
我们的applicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- spring的配置文件:导入约束 -->
<beans xmlns="//www.springframework.org/schema/beans"
xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"
xmlns:context="//www.springframework.org/schema/context"
xmlns:aop="//www.springframework.org/schema/aop"
xmlns:tx="//www.springframework.org/schema/tx"
xsi:schemaLocation=" //www.springframework.org/schema/beans
//www.springframework.org/schema/beans/spring-beans.xsd
//www.springframework.org/schema/context
//www.springframework.org/schema/context/spring-context.xsd
//www.springframework.org/schema/aop
//www.springframework.org/schema/aop/spring-aop.xsd
//www.springframework.org/schema/tx
//www.springframework.org/schema/tx/spring-tx.xsd
">
<!-- 自定义的java对象交给spring进行管理,我们使用注解的形式替换-->
<context:component-scan base-package="com.itheima"></context:component-scan>
<tx:annotation-driven/>
<!-- 第三方的jar包中的java对象交给spring进行管理 -->
<!-- 创建一个hibernateTemplate对象 -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
<!-- 注入sessionFactory -->
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 创建sessionFactory对象 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!-- 配置数据库连接池 -->
<property name="dataSource" ref="dataSource"></property>
<!-- hibernate的配置文件 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
<!-- 指定要扫描的包
packagesToScan 在加载配置文件的时候,自动扫描包中的java类
-->
<property name="packagesToScan" value="com.itheima.entity"></property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql:///ssh_280"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
<!--配置hibernate的事务管理 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
</beans>
我们的CustomerAction
package com.itheima.action;
import java.util.List;
import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Namespace;import org.apache.struts2.convention.annotation.ParentPackage;import org.apache.struts2.convention.annotation.Result;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;
import com.itheima.entity.Customer;import com.itheima.service.CustomerService;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;
@Controller
@ParentPackage("struts-default")
@Namespace("/customer")
@Scope("prototype")public class CustomerAction extends ActionSupport implements ModelDriven<Customer> {
private Customer customer = new Customer();
@Autowired
private CustomerService customerService;
private List<Customer> customers;
public void setCustomers(List<Customer> customers) {
this.customers = customers;
}
public List<Customer> getCustomers() {
return customers;
}
public Customer getModel() {
return customer;
}
//进入添加页面
@Action(value="addCustomerUI",results={@Result(name="success",location="/jsp/customer/add.jsp")})
public String addCustomerUI(){
return this.SUCCESS;
}
//进入列表页面
@Action(value="getAllCustomer",results={@Result(name="success",location="/jsp/customer/list.jsp")})
public String getAllCustomer(){
customers = customerService.getAllCustomer();
return this.SUCCESS;
}
}
我们的CustomerServiceImpl
package com.itheima.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Propagation;import org.springframework.transaction.annotation.Transactional;
import com.itheima.dao.CustomerDao;import com.itheima.entity.Customer;import com.itheima.service.CustomerService;@Service
@Transactionalpublic class CustomerServiceImpl implements CustomerService{
@Autowired
private CustomerDao customerDao;
public void addCustomer(Customer customer) {
customerDao.save(customer);
}
@Transactional(propagation=Propagation.SUPPORTS,readOnly=true)
public List<Customer> getAllCustomer() {
return customerDao.find();
}
}
我们的CustomerDaoImpl
package com.itheima.dao.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.orm.hibernate5.HibernateTemplate;import org.springframework.stereotype.Repository;
import com.itheima.dao.CustomerDao;import com.itheima.entity.Customer;@Repositorypublic class CustomerDaoImpl implements CustomerDao {
@Autowired
private HibernateTemplate hibernateTemplate;
public void save(Customer customer) {
hibernateTemplate.save(customer);
}
public List<Customer> find() {
return (List<Customer>) hibernateTemplate.find("from Customer");
}
}
这样的话,我们的注解结合xml的形式就可以了,下次我们把这个项目改成maven项目
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号