最近这段日子很忙,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等,现在大概只能记起这么一些词,重新学起来估计得花一周时间。
上图就是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
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
List
try {
QueryRunner qr = new QueryRunner(C3P0Util.getDatasource());
list = qr.query("select * from food", new BeanListHandler
} 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
} 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
} 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
} 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
public Food getFoodByName(String name)throws Exception;
public Food getFoodById(int id)throws Exception;
}针对用户的服务,登录注册等。
商城界面如上图,将光标移至食物名称时会显示对应的图片,有价钱和数量等,可以添加到购物车。
没买东西时可以点击去商城,可以登录。
买了东西后,上图就是购物车,会显示买的数量,可以加减,会显示单价和总价等,光标点击时会提示库存数量。点击支付时如果没有登录会提示登录。
登录界面如图,涉及到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" %>
这是显示所有商品信息的jsp,有涉及到JavaScript。
数据库截图。这里我登录买个东西看看结果。
我是李四,哈哈,已经登录进来了,验证码要注意大写哦。
支付就是二维码了。整体项目就是这样,可以买书,买辣条等等,里面涉及的知识其实很多,不过由于是大学期间做的,现在又是从事光模块行业,忘了挺多的,不过还是挺有意思的,后续我会把源码免费发上去,和大家一起学习交流。下篇文章写写linux吧,重温一下。