基于SSH(spring+struts2+hibernate)的新闻系统(二)

基于SSH(spring+struts2+hibernate)的新闻系统(二)

在搭建完环境之后就可以进行系统的开发,新闻系统下我们是前后端分离的。前端用于显示新闻、用户登录、增加评论等;后端的新闻的管理、分类的管理、评论管理、用户管理等。接下来就从简单的后台分类管理开始:

分类管理

一、在src目录下创建包(Package),包名swu.xlc.domain,用来存放实体类,在包目录下创建一个类Category。采用注解的方式进行配置,其中@Entity是指明它是一个实体类,@Table是指明数据库中的表,name是对应映射到数据库中的表名,@Id表示这是主键属性,@GeneratedValue是指明Id自动增长,@Column是映射到数据库表中的列。对于getter和setter方法可以用eclipse的自动生成,然后在添加上构造方法(无参数的和有参数的),最后再加上toString()方法。

@Entity
@Table(name="category")
public class Category {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name="id")
	private Integer id;
	
	private String name;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}
	
	@Column(name="name")
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Category() {
		super();
	}

	public Category(Integer id, String name) {
		super();
		this.id = id;
		this.name = name;
	}

	@Override
	public String toString() {
		return "Category [id=" + id + ", name=" + name + "]";
	}

}

二、在src目录下创建包(Package),包名swu.xlc.dao,在包下创建一个类DAOImpl,通过dao来继承了HibernateTemplate,从而提供了各种各样的CRUD方法,满足各种数据库操作的需要。通过DAOImpl类提供的setSessionFactory()方法, 来注入SessionFactory。也可以使用DAO接口的方法,但是使用DAOImpl类可以直接声明方法,省去代码。在后面的开发中只需要进行调用DAOImpl方法就可以进行创建sessionFactory。

@Repository("dao")
public class DAOImpl extends HibernateTemplate{
	@Resource(name="sf")
    public void setSessionFactory(SessionFactory sessionFactory) {
        super.setSessionFactory(sessionFactory);
    };
}

三、在src目录下创建包(Package),包名swu.xlc.service,在包下创建接口CategoryService,在接口中创建方法public List list();在src目录下创建包(Package),包名swu.xlc.service.impl,在包下创建类CategoryServiceImpl将该类继承CategoryService接口,然后在该类下实现接口中的list方法,@Sevice是将其注册为Spring的服务,@Artowired是自动注入DAOImpl。在CategoryServiceImpl方法中是使用Criteria进行数据查询,这是面向对象的方式在进行数据查询,将不再看到有sql语句的痕迹,当然也可以使用标准的sql语句或者是hql语句。这里我们进行的是查询所有的分类。

package swu.xlc.service;

import java.util.List;

import swu.xlc.domain.Category;

public interface CategoryService {
	
	public List list();
	
}

package swu.xlc.service.impl;

import java.util.List;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import swu.xlc.dao.DAOImpl;
import swu.xlc.domain.Category;
import swu.xlc.service.CategoryService;

@Service
public class CategoryServiceImpl implements CategoryService{
	
	@Autowired DAOImpl dao;

	@Override
	public List list() {
		// TODO Auto-generated method stub
		DetachedCriteria dc = DetachedCriteria.forClass(Category.class);
        dc.addOrder(Order.desc("id"));
        return dao.findByCriteria(dc);
	}
}

四、在src目录下创建包(Package),包名swu.xlc.action,在包下创建类CategoryAction,在这里就进行后台处理,然后将数据传送至前端,使用struts的action来进行跳转。@Namespace是指明一个命名空间,@ParentPackage继承mystruts包,这个包我们在struts.xml中进行了配置,@Results用于配置多个action映射,@Result用于映射action,name是指定名称,location用于指定资源的URL(必须有),@Autowired是自动注入CategoryService,@Action用于注解struts2的Action,在调用该action后会执行下面对应的方法,方法返回的值会映射到@Result中,最终会返回到视图中去。通过调用CategoryService的list方法来查询数据库中所有的分类,然后将分类的数据保存为categorys中,然后跳转到/WEB-INF/jsp/list_category.jsp视图中去。

package swu.xlc.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 swu.xlc.domain.Category;
import swu.xlc.service.CategoryService;

@Namespace("/")
@ParentPackage("mystruts") 
@Results(
        {
            /*分类管理*/
            @Result(name="categorylist", location="/WEB-INF/jsp/list_category.jsp"),
        }
        )
public class CategoryAction {
	
	@Autowired
	private CategoryService categoryService;
	
	private Category category;
	
	List<Category> categorys;
	
	public CategoryService getCategoryService() {
		return categoryService;
	}

	public void setCategoryService(CategoryService categoryService) {
		this.categoryService = categoryService;
	}

	public Category getCategory() {
		return category;
	}

	public void setCategory(Category category) {
		this.category = category;
	}

	public List<Category> getCategorys() {
		return categorys;
	}

	public void setCategorys(List<Category> categorys) {
		this.categorys = categorys;
	}

	@Action("listcategory")
	public String list() {
		categorys=categoryService.list();
		return "categorylist";	
	}
	
}

五、在WEB-INF目录下穿建一个包,包名为jsp,在该包下创建一个名为list_category.jsp的jsp页面。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*" %>
<%@ page isELIgnored="false"%>    
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>分类管理</title>
</head>
<body>
<div>
	<c:forEach items="${categorys}" var="cs">
		<div>${cs.id}--${cs.name}</div>
	</c:forEach>
</div>
</body>
</html>

六、在数据库中创建数据库new(这里要与applicationContext.xml)的数据库配置对应,然后在new下创建表category,为表添加id,name属性
在这里插入图片描述
然后在表中添加数据如下数据:
在这里插入图片描述

七、这样就写好了一个简单的分类查询,运行项目在tomcat上,然后可以访问地址 http://localhost:8080/ssh_new/listcategroy 如果的到下面的页面就是成功了,同时也会在控制台打印以下语句。
在这里插入图片描述在这里插入图片描述
学习JAVA的地址(http://how2j.cn?p=58979)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值