易買網項目總結
項目輔導教師-----原玉明
不知不覺又過了一個學期了,已然到了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,可以對數組中的某一個或者多個數字進行更改然后傳向數據庫進行保存。
