【SSH小Demo】个人信息展示页面——注解方式

上两篇文章介绍了使用SSH制作的一个个人信息小Demo,本篇文章将记录使用注解来完成开发,不得不说,使用注解的的确确能减少我们的不少工作量,同时也能减少我们出错率,我之前曾经试过在xml文件配置时打错一个英文字母,导致改了好久的BUG~~

【SSH小Demo】个人信息展示页面——注解方式_第1张图片

注意!struts2要想使用注解,必须要有struts2-convention-plugin-x.x.x.jar 这个jar包

 

引入jar包后就先修改applicationContext.xml

1.增加注解配置,组建扫描


2. 注释掉 action,service,dao

【SSH小Demo】个人信息展示页面——注解方式_第2张图片
3. 替换SessionFactory类

org.springframework.orm.hibernate3.LocalSessionFactoryBean

替换为

org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean

4. 去掉 

替换为 

 
 
  
     com.zdxh.*
  

 

然后再修改修改struts.xml

注释掉action配置



 

  
   
  
   
  
   
  
   
  

为PeopleAction添加注解

1. 配置Namespace,ParentPackage,Results

2. 使用@Autowired自动装配peopleService
3. 在list()方法前加注解 @Action("listPeople"),以映射路径,其他也照此模仿

package com.zdxh.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.apache.struts2.convention.annotation.Results;
import org.springframework.beans.factory.annotation.Autowired;

import com.zdxh.pojo.People;
import com.zdxh.service.PeopleService;
import com.zdxh.util.Page;


@Namespace("/")
@ParentPackage("struts-default")
@Results({
	@Result(name="listPeople", location="/WEB-INF/jsp/listPeople.jsp"),
	@Result(name="listPeopleAction",type="redirect", location="/listPeople"),
	@Result(name="editPeople", location="/WEB-INF/jsp/editPeople.jsp"),
		})
public class PeopleAction {
	List ps;
	@Autowired
	PeopleService peopleService;
	People people;
	Page page;
	String keyword;
	@Action("listPeople")
	public String list(){
		if(page==null)
			page=new Page();
		int total=peopleService.getTotal();
		System.out.println(total);
		page.setTotal(total);
		ps=peopleService.listByPage(page);
		
		return "listPeople";
	}
	@Action("addPeople")
	public String add(){
		peopleService.add(people);
		return "listPeopleAction";
	}
	@Action("deletePeople")
	public String delete(){
		System.out.println("删除");
		peopleService.delete(people);
		return "listPeopleAction";
	}
	@Action("editPeople")
	public String edit(){
		people=peopleService.get(people.getId());
		return "editPeople";
	}
	@Action("updatePeople")
	public String update(){
		peopleService.update(people);
		return "listPeopleAction";
	}
	@Action("searchPeople")
	public String search(){
		ps=peopleService.search(keyword);
		int total=ps.size();
		System.out.println("total"+total);
		if(page==null)
			page=new Page();
		page.setTotal(total);
		for(int i=0;i

再来为PeopleServiceImpl 添加注解

1. 使用@Service 为 PeopleServiceImpl添加注解
2. 使用@Autowired自动装配peopleDAO

就只是这两个地方修改

【SSH小Demo】个人信息展示页面——注解方式_第3张图片

1. 使用Repository 为PeopleDAOImpl 添加注解
2. 重写setSessionFactory方法,并使用@Resource(name="sf")对其注解,以接受sessionFactory注入( 在 applicationContext.xml中sessionFactory所取得id是sf)
为什么要重写?
虽然PeopleDAOImpl 继承了HibernateTemplate ,有setSessionFactory方法,但是HibernateTemplate 中的setSessionFactory方法,并没有被注解,所以就不会被注入sf, 因此需要在这里重写这个方法。 

【SSH小Demo】个人信息展示页面——注解方式_第4张图片

为People添加注解 

1. 使用@Entity 为 People 添加注解
2. @Table 指定对应表名
3. @id 表明主键
4. @GeneratedValue(strategy = GenerationType.IDENTITY) 使用自增长策略
5. @Column 指明属性对应的数据库中的字段名(当属性名和字段名一样时,会自动匹配,可以不写)

package com.zdxh.pojo;

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="people")
public class People {
	private int id;
	private String name;
	private String sex;
	private String phone;
	private String address;
	@Column(name="sex")
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	@Column(name="phone")
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	@Column(name="address")
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	
	@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id") 
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	@Column(name="name")
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "Category [id=" + id + ", name=" + name + ", sex=" + sex + ", phone=" + phone + ", address=" + address
				+ "]";
	}
	
	
}

完成之后,启动tomcat,访问http://127.0.0.1:8080/ssh/listPeople

【SSH小Demo】个人信息展示页面——注解方式_第5张图片

没问题,就完成了注解开发 

你可能感兴趣的:(Demo)