SSH项目实战---图书销售及后台管理系统

 1.项目结构

SSH项目实战---图书销售及后台管理系统_第1张图片


2.配置文件

  Spring.xml





	
	
	 
	


	
	

	
	
		
		
		
		
		
		
        			
        			
        
		
        
	

	
	
	
		
		
		
			model
		
		
		
			
				${hibernate.dialect}
				${hibernate.show_sql}
				${hibernate.format_sql}
			
		
	


	
  	
    	
  	
  	
	
	


 

jdbc.properties(数据库连接池配置文件)

########################################
########     database configuration     #######
#######################################
##\u6570\u636E\u5E93\u9A71\u52A8
jdbc.driver=com.mysql.jdbc.Driver
##\u8FDE\u63A5\u5B57\u7B26\u4E32
jdbc.url=jdbc:mysql://localhost:3306/book
##\u6570\u636E\u5E93\u7528\u6237\u540D
jdbc.username=root
##\u6570\u636E\u5E93\u6570\u636E\u5E93\u5BC6\u7801
jdbc.password=123456


########################################
########     c3p0 configuration     #######
#######################################
 
##\u521D\u59CB\u5316\u8FDE\u63A5\u6570 Default: 3
c3p0.initialPoolSize=3
##\u6700\u5C0F\u8FDE\u63A5\u6570
c3p0.minPoolSize=2
##\u8FDE\u63A5\u6C60\u4E2D\u4FDD\u7559\u7684\u6700\u5927\u8FDE\u63A5\u6570 Default: 15
c3p0.maxPoolSize=10
##\u8FDE\u63A5\u7684\u8FC7\u671F\u65F6\u95F4(\u79D2), (

Struts.xml(注:这里的许多action都采用注解的方式进行配置,所以极大简化了xml文件的内容)






	
	

	
	

	
	

	
	

	
	

	
	

	




3.部分代码(项目代码比较庞大,就发一部分即可这里以用户操作为例)

  UserAction.java

package action;

import javax.annotation.Resource;

import model.User;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

import service.UserService;

@Action("user")
@Namespace("/book")
@Results({
	@Result(name="login",location="/book/login.jsp"),
	@Result(name="register",location="/book/register.jsp"),
	@Result(name="index",location="index.action",type="redirect"),
})
public class UserAction extends BaseAction{
	private static final long serialVersionUID = 1L;
	
	private User user;
	
	@Resource
	private UserService userService;

	
	/**
	 * 注册用户
	 * @return
	 */
	public String register(){
		if (user.getUsername().isEmpty()) {
			addActionMessage("用户名不能为空!");
			return "register";
		}else if (userService.isExist(user.getUsername())) {
			addActionMessage("用户名已存在!");
			return "register";
		}else {
			userService.add(user);
			addActionMessage("注册成功, 请登录!");
			return "login";
		}
	}
	
	/**
	 * 用户登录
	 * @return
	 * @throws Exception
	 */
	public String login() {
		if(userService.checkUser(user.getUsername(), user.getPassword())){
			getSession().put("username", user.getUsername());
			return "index";
		} else {
			addActionMessage("用户名或密码错误!");
			return "login";
		}
	}

	/**
	 * 注销登录
	 * @return
	 */
	public String logout() {
		getSession().remove("username");
		getSession().remove("indent");
		return "login";
	}
	
	
	
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	
}

UserDao.java

package dao;

import java.util.List;

import model.User;

import org.springframework.stereotype.Repository;

@Repository // 注册dao层bean等同于@Component
public class UserDao extends BaseDao{

	
	/**
	 * 通过用户名查找用户
	 * @return 无记录返回null
	 */
	public User getByUsername(String username){
		return (User) getSession().createQuery("from User where username=:username")
				.setString("username", username).uniqueResult();	// HQL语句方式
	}
	
	/**
	 * 通过用户名和密码查找
	 * @param username
	 * @param password
	 * @return 无记录返回null
	 */
	public User getByUsernameAndPassword(String username, String password){
		return (User)getSession().createSQLQuery("select * from user where username=? and password=?")
				.addEntity(User.class).setString(0, username).setString(1, password).uniqueResult();	// SQL语句方式
	}
	
	/**
	 * 获取列表
	 * @param page
	 * @param rows
	 * @return 无记录返回空集合
	 */
	@SuppressWarnings("unchecked")
	public List getList(int page, int rows){
		return getSession().createQuery("from User").setFirstResult(rows*(page-1)).setMaxResults(rows).list();
	}

	/**
	 * 总数
	 * @return
	 */
	public long getTotal() {
		return (long) getSession().createQuery("select count(*) from User").uniqueResult();
	}
	
}

User.java

package model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity // 注解为hibernate实体 对应数据库中user表
public class User {
	
	@Id	// 注解主键
	@GeneratedValue //id生成策略  默认auto 相当于hibernate的native - 自增字段
	private int id;
	private String username;
	private String password;
	private String address;
	private String phone;

	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	
	
}

UserService.java

package service;

import java.util.List;

import javax.annotation.Resource;

import model.User;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import util.SafeUtil;
import dao.UserDao;

@Service	// 注解为service层spring管理bean
@Transactional	// 注解此类所有方法加入spring事务, 具体设置默认
public class UserService {

	@Resource		//spring注入类对象
	private UserDao userDao;
	
	/**
	 * 验证用户密码
	 * @param username
	 * @param password
	 * @return
	 */
	public boolean checkUser(String username, String password){
		return userDao.getByUsernameAndPassword(username, SafeUtil.encode(password)) != null;
	}

	/**
	 * 用户是否存在
	 * @param username
	 * @return
	 */
	public boolean isExist(String username) {
		return userDao.getByUsername(username) != null;
	}

	/**
	 * 添加
	 * @param user
	 * @return
	 */
	public boolean add(User user) {
		user.setPassword(SafeUtil.encode(user.getPassword()));
		return userDao.save(user) > 0;
	}
	
	/**
	 * 通过id获取
	 * @param userid
	 * @return
	 */
	public User get(int userid){
		return userDao.get(User.class, userid);
	}
	
	/**
	 * 通过username获取
	 * @param username
	 * @return
	 */
	public User get(String username){
		return userDao.getByUsername(username);
	}
	
	/**
	 * 列表
	 * @param page
	 * @param rows
	 * @return
	 */
	public List getList(int page, int rows) {
		return userDao.getList(page, rows);
	}

	/**
	 * 总数
	 * @return
	 */
	public long getTotal() {
		return userDao.getTotal();
	}

	/**
	 * 更新
	 * @param user
	 */
	public boolean update(User user) {
		return userDao.update(user);
	}

	/**
	 * 删除
	 * @param user
	 */
	public boolean delete(int id) {
		User user = new User();
		user.setId(id);
		return userDao.delete(user);
	}
	
}

     从上代码可以看出,用SSH框架架构的项目层次比较分明,逻辑清晰,代码比较简洁,可读性好


4.截图:

  (1)客户端用户界面

SSH项目实战---图书销售及后台管理系统_第2张图片

                                            图4.1.1 书店首页


SSH项目实战---图书销售及后台管理系统_第3张图片

                                              图4.1.2 书店简介


 SSH项目实战---图书销售及后台管理系统_第4张图片

                                             图4.1.3 精品推荐


SSH项目实战---图书销售及后台管理系统_第5张图片

                                                    图4.1.4 最新出版


SSH项目实战---图书销售及后台管理系统_第6张图片

                                               图4.1.5 优惠促销


SSH项目实战---图书销售及后台管理系统_第7张图片

                                          图4.1.6 用户注册


SSH项目实战---图书销售及后台管理系统_第8张图片

                                               图4.1.7 用户登录


SSH项目实战---图书销售及后台管理系统_第9张图片

                                             图4.1.8 用户登录后页面


  (2)后台管理界面

SSH项目实战---图书销售及后台管理系统_第10张图片

                                       图4.2.1 后台管理首页


SSH项目实战---图书销售及后台管理系统_第11张图片

                                          图4.2.2 后台管理登录页面


SSH项目实战---图书销售及后台管理系统_第12张图片

                                                  图4.2.3 订单管理


SSH项目实战---图书销售及后台管理系统_第13张图片

                                                图4.2.4 顾客管理


SSH项目实战---图书销售及后台管理系统_第14张图片

                                                  图4.2.5 图书管理


SSH项目实战---图书销售及后台管理系统_第15张图片

                                                 图4.2.6 类目管理


 SSH项目实战---图书销售及后台管理系统_第16张图片

                                                   图4.2.7 用户管理


总结: 参考别人的代码,一步一步地自己写出了这个项目,中间Bug很多,改了两天,幸好有大神指点,才得以如此顺利。以后还得多做项目,多多积累经验。SSH完成了一个,接下来就是SSM框架的了。码农的道路艰辛又漫长,充满了趣味。

你可能感兴趣的:(Java,EE学习笔记,Struts,2框架学习笔记,Hibernate,框架学习笔记,Spring,框架学习笔记)