java项目之宿舍购物

  最近这段日子很忙,blog也有段日子没更新了,忙着做40G PSM4的订单,从COB 跟线贴片 打线 老化等工艺到耦合激光焊,组装调试测试到最后送到客户解决问题,成长了很多,并且会熟练操作激光焊仪器了,每次底焊都很刺激,加上对不良(光功率偏小)隔离器的补焊,一步步变得熟练,还挺有意思的,在另一篇章节里详细讲述了工作原理和操作技巧。最近因为各种原因吧,想重新找份工作,回顾一下大二在企业实习的物流ERP项目和自己开发的宿舍买辣条项目,一步步捡起来知识,怕以后用得上。

  java面向对象,很多用于开发网站,系统,ERP等,这次实习的是一个小型电商公司自己有工厂开发一个物流的ERP便于管理订单,主要是卖衣服,学了三个月,从java零学起到能基本应用,看懂项目架构并且能自己开发小项目也学到了挺多。由于有C的理论基础,java也是主要面向应用,这也是为什么社会培训java特别多,学起来很快,但是没有牢固的基础,忘得也快。

  这里主要写一个宿舍卖辣条的小项目,到后面由于没有租服务器,只能在局域网用用了,而且后面对单片机和linux比较感兴趣,很多Java知识都忘了,再到后面又学习了一段时间的matlab和机器学习,优秀的完成了毕业设计,这个在另一篇博客有。

  java整个框架搭建起来涉及到的东西比较多,MYECLIPSE,sql server ,tomcat ,代码和技术又包括java jsp JavaScript XML html servlet 还有技术框架struts2 hibernate mybatis等,还有什么dbutils c3p0 ognl log4j等,现在大概只能记起这么一些词,重新学起来得花一周时间吧。

  java项目之宿舍购物

 上图就是MYECLIPSE配置好的环境,建立接口UserDAO

package com.dao;

import java.util.List;

import com.domain.Food;
import com.domain.User;

public interface UserDao {
   public void addStrutsUser(User u)throws Exception;
   public  User findStrutsUserByName(String name) throws Exception;
   public List<Food> findAllFood()throws Exception;
   public Food findFoodByName(String name)throws Exception;
   public Food findFoodById(int id)throws Exception;
}

主要就是用户和食物两个对象,要分别建立。

package com.dao.imp;

import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import com.dao.UserDao;
import com.dbutils.util.C3P0Util;
import com.dbutils.util.ManagerThreadLocal;
import com.domain.Food;
import com.domain.User;

public class UserDaoImp implements UserDao{

    public List<Food> findAllFood() throws Exception {
        List<Food> list = null;
        try {
            QueryRunner qr = new QueryRunner(C3P0Util.getDatasource());
              list = qr.query("select * from food", new BeanListHandler<Food>(Food.class));
             
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("userdao层findallfood错误");
        }
      return list;
    }

    public void addStrutsUser(User u)  {
        try {
            QueryRunner qr = new QueryRunner(C3P0Util.getDatasource());
            qr.update("insert into strutsuser(username,password) values(?,?)",
                    u.getUsername(), u.getPassword());
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("数据层UserDaoImp addStrutsUser发生错误");
    
        }
        
        //throw new RuntimeException("数据层UserDaoImp addStrutsUser发生错误");

    }

    public User findStrutsUserByName(String name) throws Exception {
        User u = null;
           try {
                QueryRunner qr = new QueryRunner(C3P0Util.getDatasource());
                u = qr.query("select * from strutsuser where username= ?",new BeanHandler<User>(User.class) , name);
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException("数据层UserDaoImp findStrutsUser发生错误");
        
            }
            
        return u;
    }
    
    public Food findFoodByName(String name) throws Exception{
        Food f = null;
        try {
            QueryRunner qr = new QueryRunner(C3P0Util.getDatasource());
            f = qr.query("select * from food where name=?", new BeanHandler<Food>(Food.class),name);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("userdaoimp层查询商品通过name发生错误");
            
        }
        return f;
        
    }
    public Food findFoodById(int id)throws Exception{
        Food f = null;
        try {
            QueryRunner qr = new QueryRunner(C3P0Util.getDatasource());
            f = qr.query("select * from food where id=?", new BeanHandler<Food>(Food.class),id);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("userdaoimp层查询商品通过id发生错误");
        }
        return f;
    }
}

DAO的执行,实现的功能包括添加用户,找用户,找到所有食物,分别通过id和name找食物。

package com.domain;

import java.io.Serializable;

public class Food implements Serializable {
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + id;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        result = prime * result + number;
        long temp;
        temp = Double.doubleToLongBits(price);
        result = prime * result + (int) (temp ^ (temp >>> 32));
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Food other = (Food) obj;
        if (id != other.id)
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        if (number != other.number)
            return false;
        if (Double.doubleToLongBits(price) != Double
                .doubleToLongBits(other.price))
            return false;
        return true;
    }
    public int getNumber() {
        return number;
    }
    public void setNumber(int number) {
        this.number = number;
    }

    private int id;
    private String name;
    private double price;
    private int number;
    
public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
   
    @Override
    public String toString() {
        return "Food [id=" + id + ", name=" + name + ", price=" + price + "]";
    }
    
}
food对象建立。

package com.domain;

import java.io.Serializable;

public class User implements Serializable{
    public String getRepassword() {
        return repassword;
    }

    public void setRepassword(String repassword) {
        this.repassword = repassword;
    }
    private int id;
    private String username;
    private String password;
    private String repassword;
    
    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", password="
                + password + "]";
    }
    
    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;
    }
    
}
用户对象建立。

package com.service;

import java.util.List;

import com.domain.Food;
import com.domain.User;

public interface UserService {
   public void register(User u) throws Exception ;
   public User login(String name)throws Exception;
   public List<Food> getFood() throws Exception;
   public Food getFoodByName(String name)throws Exception;
   public Food getFoodById(int id)throws Exception;
   
}针对用户的服务,登录注册等。

java项目之宿舍购物

商城界面如上图,将光标移至食物名称时会显示对应的图片,有价钱和数量等,可以添加到购物车。

java项目之宿舍购物

  没买东西时可以点击去商城,可以登录。

java项目之宿舍购物

买了东西后,上图就是购物车,会显示买的数量,可以加减,会显示单价和总价等,光标点击时会提示库存数量。点击支付时如果没有登录会提示登录。

java项目之宿舍购物

java项目之宿舍购物

 登录界面如图,涉及到jsp字段的获取和cookie等。

<%@page import="com.domain.Food"%>
<%@page import="java.util.List"%>
<%@page import="com.service.imp.UserServiceImp"%>
<%@page import="com.service.UserService"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib  prefix="s" uri="/struts-tags"%>
    <%@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>Insert title here</title>
</head>
<%
  UserService us = new UserServiceImp();
List<Food> list = us.getFood();
 request.setAttribute("allfood", list);
 %>
  
<body>
<h3 align="right">欢迎你
 <c:if test="${user!=null }">
           ${user.username };
       </c:if>
       <c:if test="${user ==null}">
          <a href="${pageContext.request.contextPath }/login.jsp">登录</a>
       </c:if>
</h3> 
 <div align="left"  id="foodimage"  style="background-color: gray;border: 2px;width: 200px;height: 200px;float: left;visibility: hidden;" >dfa</div>
<h1 align="center">商品列表:</h1>
<div  >
  <table align="center" bgcolor="gray" border="2px" bordercolor="white">
   <tr>
       <td>商品名称</td>
       <td>价钱</td>
       <td>剩余数量</td>
    </tr>
  
     <c:forEach items="${allfood }" var="food">
       <tr>
           <td  ><div οnmοuseοver="display_foodimage(${food.id})" οnmοuseοut="notdisplay_foodimage()">${food.name }</div></td>
           <td>${ food.price}</td>
           <td>${food.number }</td>
           <td ><a href="${pageContext.request.contextPath }/addcart/AddCartAction.action?foodid=${food.id}&foodname=${food.name}">添加至购物车</a></td>

     
       </tr>
     </c:forEach>
  </table>

  <h3 align="center">今日促销</h3>

  
  <h3 align="center"><a href="${pageContext.request.contextPath }/cart.jsp">去我的购物车看看</a></h3>
  </div>

</body>
<script type="text/javascript">
  window.onload = function(){
  var addcartmsg = "${addcartmsg}";//问题 var得到的类型是string吗,不为空

 

    if(addcartmsg.length!=0){//此处条件不可使addcartmsg!=null因为其永远不为空.
      alert("添加成功");
    };
  };
</script>
<script type="text/javascript">
  function display_foodimage(id){
  var contextPath = "${pageContext.request.contextPath}/";
   var seeimage = document.getElementById("foodimage");
   seeimage.style.visibility = "visible";
   var newimage = " <img alt='辣条图片' src='"+contextPath+"image/"+id+".jpg'>";
    seeimage.innerHTML= newimage;
  };
  function notdisplay_foodimage(){
      var seeimage = document.getElementById("foodimage");
   seeimage.style.visibility = "hidden";
};
</script>
</html>

这是显示所有商品信息的jsp,有涉及到JavaScript。

java项目之宿舍购物

数据库截图。这里我登录买个东西看看结果。

java项目之宿舍购物

 我是李四,哈哈,已经登录进来了,验证码要注意大写哦。

java项目之宿舍购物

java项目之宿舍购物

 支付就是二维码了。整体项目就是这样,可以买书,买辣条等等,里面涉及的知识其实很多,不过由于是大学期间做的,现在又是从事光模块行业,忘了挺多的,不过还是挺有意思的,后续我会把源码免费发上去,和大家仪器学习交流。下篇文章谢谢linux吧,重温一下。