就易买网项目总结
易买网项目总结
项目辅导教师-----原玉明
不知不觉又过了一个学期了,已然到了S2,懵懵懂懂的又要开始书写易买网项目了。回想当初书写易买网时的一无所知,到现在的略懂一二,我也学会了很多,有团队的合作精神、个人代码的书写能力等。下面简单介绍一下我书写易买网的功能点。
1.新闻管理
首先,在dao.impl中写新闻的增、删、改、查方法。增加方法是向数据库中添加一条数据,所以不需要传id,id为自增列。删除、修改、查询方法都是根据用户点击某一条数据获取id来进行操作。
1 //添加新闻 2 public boolean AddNews(News news) throws Exception { 3 boolean flag=false; 4 String sql="insert into EASYBUY_NEWS values(?,?,?)"; 5 Object[] ob={ 6 news.getTitle(), 7 news.getContent(), 8 news.getTime() 9 }; 10 int num=executeUpdate(sql,ob); 11 if (num>0) { 12 flag=true; 13 } 14 return flag; 15 }
1 /** 2 * 新闻修改功能 3 */ 4 public boolean UpdateNews(News news)throws Exception { 5 boolean flag=false; 6 String sql="update EASYBUY_NEWS set EN_TITLE=?,EN_CONTENT=?,EN_CREATE_TIME=? where En_ID=?"; 7 Object[] ob={ 8 news.getTitle(), 9 news.getContent(), 10 news.getTime(), 11 news.getId() 12 }; 13 int num=executeUpdate(sql,ob); 14 if (num>0) { 15 flag=true; 16 } 17 return flag; 18 }
1 //查询新闻 2 public List<News> selectNews() throws Exception { 3 List<News> list=new ArrayList<News>(); 4 String sql="select * from EASYBUY_NEWS"; 5 ResultSet rs=executeQuery(sql); 6 if (rs!=null) { 7 while(rs.next()){ 8 News news=new News(); 9 news.setId(rs.getInt("en_id")); 10 news.setTitle(rs.getString("en_title")); 11 news.setContent(rs.getString("en_content")); 12 news.setTime(rs.getString("en_create_time")); 13 list.add(news); 14 } 15 } 16 return list; 17 }
1 //删除新闻 2 public boolean DelNewsInfo(int id) throws Exception{ 3 boolean flash=false; 4 String sql="delete EASYBUY_NEWS where EN_ID=?"; 5 Object[] objs={id}; 6 int num=executeUpdate(sql, objs); 7 if (num>0) { 8 flash=true; 9 } 10 return flash; 11 }
在servlet中调用方法,然后转发到响应页面,在页面中进行调用。
2.商品管理
商品管理,增、删、改、查方法跟新闻管理相同,不同的是进行增、改操作时要上传图片到项目根目录,所以要用到文件上传。下面是文件上传方法:
1 /** 2 * 上传图片类 3 */ 4 public Product UploadPhoto(HttpServletRequest request, HttpServletResponse response){ 5 Product p1=new Product(); 6 try { 7 8 //上传的文件名 9 String uploadFileName=""; 10 //表单字段元素的name属性值 11 String filedName=""; 12 //请求信息中的内容是否是multipart类型 13 boolean ismultipart = ServletFileUpload.isMultipartContent(request); 14 //上传文件的储存路径(服务器文件系统上的绝对路径) 15 String pathString=request.getSession().getServletContext().getRealPath("/images/product"); 16 if (ismultipart) { 17 FileItemFactory factory=new DiskFileItemFactory(); 18 ServletFileUpload upload=new ServletFileUpload(factory); 19 try { 20 //解析form表单中所有文件 21 List<FileItem> items = upload.parseRequest(request); 22 Iterator<FileItem> iter = items.iterator(); 23 while (iter.hasNext()) { //依次处理每个文件 24 FileItem item = iter.next(); 25 if (item.isFormField()) { //普通表单字段 26 filedName = item.getFieldName(); //表单字段的name属性值 27 if (filedName.equals("productName")) { 28 //商品名称 29 p1.setName(item.getString("utf-8")); 30 }else if(filedName.equals("productPrice")){ 31 //商品价格 32 p1.setPrice(Float.valueOf(item.getString("utf-8"))); 33 }else if(filedName.equals("DescriptionName")){ 34 //商品描述 35 p1.setDescription(item.getString("utf-8")); 36 }else if(filedName.equals("parentId")){ 37 int fenleiid=Integer.parseInt(item.getString("utf-8")); 38 //商品分类 二级分类 39 p1.setChildCategoryId(fenleiid); 40 //根据二级获取一级 41 int oneIdOfTwoId = si.OneIdOfTwoId(fenleiid); 42 //商品分类 一级分类 43 p1.setCategoryId(oneIdOfTwoId); 44 }else if(filedName.equals("stockName")){ 45 //商品库存 46 p1.setStock(Integer.parseInt(item.getString("utf-8"))); 47 } 48 }else { //文件表单字段 49 String fileName = item.getName(); 50 if (fileName!=null && !fileName.equals("")) { 51 File fullfile=new File(item.getName()); 52 File savFile=new File(pathString,fullfile.getName()); 53 item.write(savFile); 54 uploadFileName=fullfile.getName(); 55 //uploadFileName=new String(uploadFileName.getBytes("iso-8859-1"),"utf-8"); 56 p1.setFileName(uploadFileName); 57 System.out.println("上传成功后的文件名是:"+uploadFileName); 58 59 } 60 } 61 } 62 //获取商品的编号 63 String shoppingid=request.getParameter("id"); 64 if (shoppingid!=null) { 65 p1.setId(Integer.parseInt(shoppingid)); 66 } 67 } catch (FileUploadException e) { 68 // TODO Auto-generated catch block 69 e.printStackTrace(); 70 } 71 } 72 }catch (Exception e) { 73 // TODO Auto-generated catch block 74 e.printStackTrace(); 75 } 76 return p1; 77 }
先进行判断,如果是普通表单就将从页面传过来的name值赋值到实体类中,如果是文件表单字段,也就是说有图片要上传,然后将图片上传到指定路径。
3.jQuery特效
jQuery特效网上有源代码,在这里也就不做讲解。
4.MD5加密
创建一个类:
在类里面定义一个方法:
1 public class MD5Util { 2 /*** 3 * MD5加密 生成32位md5码 4 * @param 待加密字符串 5 * @return 返回32位md5码 6 */ 7 public String md5Encode(String inStr) throws Exception { 8 MessageDigest md5 = null; 9 try { 10 md5 = MessageDigest.getInstance("MD5"); 11 } catch (Exception e) { 12 System.out.println(e.toString()); 13 e.printStackTrace(); 14 return ""; 15 } 16 byte[] byteArray = inStr.getBytes("UTF-8"); 17 byte[] md5Bytes = md5.digest(byteArray); 18 StringBuffer hexValue = new StringBuffer(); 19 for (int i = 0; i < md5Bytes.length; i++) { 20 int val = ((int) md5Bytes[i]) & 0xff; 21 if (val < 16) { 22 hexValue.append("0"); 23 } 24 hexValue.append(Integer.toHexString(val)); 25 } 26 return hexValue.toString(); 27 } 28 }
调用方法,传入用户输入的密码,进行加密,将加密后的MD5密文添加到数据库。在登录时,将用户输入的密码先进行MD5加密,然后与数据库进行比对,如果为true登录成功,如果为false则登录失败。MD5加密在登录注册都会有使用。程序猿也可以对MD5进行自己的加密,使用算法,不再生成固定的值。
如admin,加密后为:21232f297a57a5a743894a0e4a801fc3,可以对数组中的某一个或者多个数字进行更改然后传向数据库进行保存。