国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - JavaWeb實戰之開發網上購物系統(超詳細)

JavaWeb實戰之開發網上購物系統(超詳細)

2021-09-13 10:54呦,又寫BUG呢 Java教程

這篇文章主要介紹了JavaWeb實戰之開發網上購物系統(超詳細),文中有非常詳細的代碼示例,對正在學習java的小伙伴們有很好的幫助,需要的朋友可以參考下

一、項目描述

基于B/S三層架構設計的購物系統,可以更好地符合"高內聚,低耦合"的設計思想。表現層(UI)通過JSP在瀏覽器上實現界面展示,通過Servlet接受用戶請求并生成驗證碼等實時信息;數據訪問層(DAL)通過JDBC對DBMS進行訪問;二者之間的業務邏輯層(BLL)通過Service進行連接。同時面向接口編程提高規范化。這只是我自己用兩三天的時間做的小項目,距離真正的購物系統差距還是很大的,僅供初學者參考,很多邏輯缺陷不必太糾結,以后有時間會再寫一篇博客對這個項目進行相關測試。

如果只需要代碼可直接通過書簽欄跳轉至相關文件。

二、項目演示

這是購物系統首頁,是仿照華為商城設計的,當然也可以說是仿照小米商城,這二者的頁面設計并無本質區別,具體實現借助于Bootstrap,商品信息通過后臺數據庫讀取,商品表見下

JavaWeb實戰之開發網上購物系統(超詳細)
JavaWeb實戰之開發網上購物系統(超詳細)

點擊任意商品進入詳情界面

JavaWeb實戰之開發網上購物系統(超詳細)

如果此時點擊加入購物車會調用Servlet中的doPost方法,進而通過登陸信息是否讀取成功判斷登陸狀態,如果未登錄則轉至登錄界面并提示相關信息,背景漸變色借助于webgradients選取,同時實現正則驗證與驗證碼相關功能

JavaWeb實戰之開發網上購物系統(超詳細)

我們先注冊再登錄,這里注冊洛的相關信息

JavaWeb實戰之開發網上購物系統(超詳細)

注冊成功

JavaWeb實戰之開發網上購物系統(超詳細)
JavaWeb實戰之開發網上購物系統(超詳細)

之后我們登錄并將心儀的商品加入購物車,查看購物車,這里會一致顯示當前登錄用戶信息

JavaWeb實戰之開發網上購物系統(超詳細)

提交訂單后查看訂單,這里借助jQuery做了一個下拉框,可以查看后臺數據庫關于此訂單的全部信息,這里提交訂單相當于付款,所以未設退貨功能,因此數據刪除只能借助于后臺數據庫。

JavaWeb實戰之開發網上購物系統(超詳細)

最后點擊注銷返回主頁

JavaWeb實戰之開發網上購物系統(超詳細)

三、部分代碼

JdbcUtils.java

用于加載驅動并獲得與數據庫的連接的工具類

  1. package common;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8.  
  9. public class JdbcUtil {
  10. static Connection connection;
  11. public static Connection getCon() {
  12. //加載驅動
  13. try {
  14. Class.forName("com.mysql.jdbc.Driver");
  15. } catch (ClassNotFoundException e) {
  16. // TODO Auto-generated catch block
  17. e.printStackTrace();
  18. }
  19. String url = "jdbc:mysql://localhost:3306/shoppingsystem?characterEncoding=utf-8";
  20. String username = "root";
  21. String password = "123";
  22.  
  23. //獲得連接
  24. try {
  25. connection = DriverManager.getConnection(url, username, password);
  26. } catch (SQLException e) {
  27. // TODO Auto-generated catch block
  28. e.printStackTrace();
  29. }
  30.  
  31. return connection;
  32. }
  33. public static void closeAll(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) {
  34. if (resultSet != null) {
  35. try {
  36. resultSet.close();
  37. } catch (SQLException e) {
  38. // TODO Auto-generated catch block
  39. e.printStackTrace();
  40. }
  41. }
  42. if (preparedStatement != null) {
  43. try {
  44. preparedStatement.close();
  45. } catch (SQLException e) {
  46. // TODO Auto-generated catch block
  47. e.printStackTrace();
  48. }
  49. }
  50. if (connection != null) {
  51. try {
  52. connection.close();
  53. } catch (SQLException e) {
  54. // TODO Auto-generated catch block
  55. e.printStackTrace();
  56. }
  57. }
  58. }
  59. }

People.java

與數據庫中用戶表相匹配的用戶類

  1. package entity;
  2.  
  3. public class People {
  4. private String id;
  5. private String password;
  6. private String name;
  7. private String email;
  8. private String address;
  9.  
  10. public People() {
  11. super();
  12. // TODO Auto-generated constructor stub
  13. }
  14.  
  15. public People(String id, String password, String name, String email, String address) {
  16. super();
  17. this.id = id;
  18. this.password = password;
  19. this.name = name;
  20. this.email = email;
  21. this.address = address;
  22. }
  23.  
  24. public String getId() {
  25. return id;
  26. }
  27.  
  28. public void setId(String id) {
  29. this.id = id;
  30. }
  31.  
  32. public String getPassword() {
  33. return password;
  34. }
  35.  
  36. public void setPassword(String password) {
  37. this.password = password;
  38. }
  39.  
  40. public String getName() {
  41. return name;
  42. }
  43.  
  44. public void setName(String name) {
  45. this.name = name;
  46. }
  47.  
  48. public String getEmail() {
  49. return email;
  50. }
  51.  
  52. public void setEmail(String email) {
  53. this.email = email;
  54. }
  55.  
  56. public String getAddress() {
  57. return address;
  58. }
  59.  
  60. public void setAddress(String address) {
  61. this.address = address;
  62. }
  63.  
  64. @Override
  65. public String toString() {
  66. return "People [id=" + id + ", password=" + password + ", name=" + name + ", email=" + email + ", address="
  67. + address + "]";
  68. }
  69.  
  70. }

InterfacePeopleDao.java

對用戶信息進行相關操作的接口

  1. package dao;
  2.  
  3. import java.util.List;
  4.  
  5. import entity.People;
  6.  
  7. public interface InterfacePeopleDao {
  8. public abstract int insertPeople(String id, String password, String name, String email, String address);
  9.  
  10. public abstract int deletePeople(String id);
  11.  
  12. public abstract int updatePeople(String id, String password, String name, String email, String address);
  13.  
  14. public abstract People checkPeople(String id, String password);
  15.  
  16. public abstract List<People> findAllPeople();
  17. }

PeopleDao.java

對上述接口的實現

  1. package dao;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.util.List;
  8.  
  9. import common.JdbcUtil;
  10. import entity.People;
  11.  
  12. public class PeopleDao implements InterfacePeopleDao {
  13. private Connection connection;
  14. private PreparedStatement preparedStatement;
  15. private ResultSet resultSet;
  16.  
  17. @Override
  18. public int insertPeople(String id, String password, String name, String email, String address) {
  19. String sql = "mistake";
  20. if (id != "" && password != "" && name != "" && email != "" && address != "") {
  21. sql = "insert into people (id, password, name, email, address)" + "values('" + id + "','" +
  22. password + "','" + name + "','" + email + "','" + address + "');";
  23. }
  24. System.out.println("insertPeople()的sql語句:" + sql);
  25.  
  26. int result = 0;
  27. connection = JdbcUtil.getCon();
  28. try {
  29. preparedStatement = connection.prepareStatement(sql);
  30. } catch (SQLException e) {
  31. e.printStackTrace();
  32. }
  33. try {
  34. result = preparedStatement.executeUpdate();
  35. } catch (SQLException e) {
  36. e.printStackTrace();
  37. }
  38. JdbcUtil.closeAll(connection, preparedStatement, resultSet);
  39. return result;
  40. }
  41.  
  42. @Override
  43. public int deletePeople(String id) {
  44. // TODO Auto-generated method stub
  45. return 0;
  46. }
  47.  
  48. @Override
  49. public int updatePeople(String id, String password, String name, String email, String address) {
  50. // TODO Auto-generated method stub
  51. return 0;
  52. }
  53.  
  54. @Override
  55. public People checkPeople(String id, String password) {
  56. String sql = null;
  57. if (id != null && password != null) {
  58. sql = "select * from people where id = '" + id + "' and password = '" + password + "'";
  59. }
  60. System.out.println("checkPeople()的sql語句:" + sql);
  61.  
  62. People people = null;
  63. connection = JdbcUtil.getCon();
  64. try {
  65. preparedStatement = connection.prepareStatement(sql);
  66. resultSet = preparedStatement.executeQuery();
  67. if (resultSet.next()) {
  68. people = new People();
  69. people.setId(resultSet.getString(1));
  70. people.setPassword(resultSet.getString(2));
  71. people.setName(resultSet.getString(3));
  72. people.setEmail(resultSet.getString(4));
  73. people.setAddress(resultSet.getString(5));
  74. }
  75. } catch (SQLException e) {
  76. e.printStackTrace();
  77. } finally {
  78. JdbcUtil.closeAll(connection, preparedStatement, resultSet);
  79. }
  80. return people;
  81. }
  82.  
  83. @Override
  84. public List<People> findAllPeople() {
  85. // TODO Auto-generated method stub
  86. return null;
  87. }
  88.  
  89. }

InterfacPeopleService.java

在業務邏輯層中將表現層與數據訪問層進行連接,由于項目本身并不復雜,所以只是簡單實現了方法傳遞

  1. package service;
  2.  
  3. import java.util.List;
  4.  
  5. import entity.People;
  6.  
  7. public interface InterfacePeopleService {
  8. public abstract int insertPeople(String id, String password, String name, String email, String address);
  9.  
  10. public abstract int deletePeople(String id);
  11.  
  12. public abstract int updatePeople(String id, String password, String name, String email, String address);
  13.  
  14. public abstract People checkPeople(String id, String password);
  15.  
  16. public abstract List<People> findAllPeople();
  17. }

PeopleService.java

對上述接口的實現

  1. package service;
  2.  
  3. import java.util.List;
  4.  
  5. import dao.InterfacePeopleDao;
  6. import dao.PeopleDao;
  7. import entity.People;
  8.  
  9. public class PeopleService implements InterfacePeopleService {
  10. private InterfacePeopleDao peopleDao;
  11.  
  12. public PeopleService() {
  13. peopleDao = new PeopleDao();
  14. }
  15.  
  16. @Override
  17. public int insertPeople(String id, String password, String name, String email, String address) {
  18. return peopleDao.insertPeople(id, password, name, email, address);
  19. }
  20.  
  21. @Override
  22. public int deletePeople(String id) {
  23. // TODO Auto-generated method stub
  24. return 0;
  25. }
  26.  
  27. @Override
  28. public int updatePeople(String id, String password, String name, String email, String address) {
  29. // TODO Auto-generated method stub
  30. return 0;
  31. }
  32.  
  33. @Override
  34. public People checkPeople(String id, String password) {
  35. return peopleDao.checkPeople(id, password);
  36. }
  37.  
  38. @Override
  39. public List<People> findAllPeople() {
  40. // TODO Auto-generated method stub
  41. return null;
  42. }
  43.  
  44. }

CheckCode.java

在內存中生成驗證碼圖片并輸出到客戶端

  1. package servlet;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.Graphics;
  6. import java.awt.image.BufferedImage;
  7. import java.io.ByteArrayOutputStream;
  8. import java.io.IOException;
  9.  
  10. import javax.imageio.ImageIO;
  11. import javax.servlet.ServletException;
  12. import javax.servlet.ServletOutputStream;
  13. import javax.servlet.annotation.WebServlet;
  14. import javax.servlet.http.HttpServlet;
  15. import javax.servlet.http.HttpServletRequest;
  16. import javax.servlet.http.HttpServletResponse;
  17. import javax.servlet.http.HttpSession;
  18.  
  19. @WebServlet("/CheckCode")
  20. public class CheckCode extends HttpServlet {
  21. private static final long serialVersionUID = 1L;
  22. private static int width=70;
  23. private static int height=25;
  24.  
  25. public CheckCode() {
  26. super();
  27. // TODO Auto-generated constructor stub
  28. }
  29.  
  30. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  31. /**
  32. * request是客戶端瀏覽器發出的請求被封裝形成的一個HttpServletRequest公共接口類對象
  33. * session對象存儲特定用戶會話所需的屬性及配置信息, 這樣當用戶在應用程序的Web頁之間跳轉時, 存儲在session對象中的變量將不會丟失, 而是在整個用戶會話中一直存在下去
  34. * getSession()與getSession(true)一樣, 獲取request對象關聯的session對象, 如果沒有session, 則返回一個新的session
  35. */
  36. HttpSession session=request.getSession();
  37. response.setContentType("image/jpeg");// 設置生成的文檔類型為jpg
  38. ServletOutputStream servletOutputStream = response.getOutputStream();
  39.  
  40. /*設置瀏覽器不要緩存此圖片*/
  41. response.setHeader("Pragma", "No-cache");
  42. response.setHeader("Cache-Control", "no-cache");
  43. response.setDateHeader("Expires", 0);
  44.  
  45. /**
  46. * 創建內存圖片并獲得其圖形上下文
  47. * Image是一個抽象類, BufferedImage是其實現類, 是一個帶緩沖區圖像類, 主要作用是將一幅圖片加載到內存中
  48. * BufferedImage生成的圖片在內存里有一個圖像緩沖區, 利用這個緩沖區我們可以很方便地操作這個圖片
  49. */
  50. BufferedImage image=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  51. Graphics graphics=image.getGraphics();
  52.  
  53. char[] rands=generCode();// 產生隨機的驗證碼
  54. drawRands(graphics, rands);// 產生圖像
  55. graphics.dispose();// 結束圖像的繪制過程,完成圖像
  56.  
  57. /*將圖像輸出到客戶端*/
  58. ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
  59. ImageIO.write(image, "jpeg", byteArrayOutputStream);
  60. byte[] buf=byteArrayOutputStream.toByteArray();
  61. response.setContentLength(buf.length);
  62. servletOutputStream.write(buf);
  63. byteArrayOutputStream.close();
  64. servletOutputStream.close();
  65.  
  66. session.setAttribute("checkcode", new String(rands));// 將當前的驗證碼寫入到session中
  67.  
  68. }
  69.  
  70. private char[] generCode() {
  71. //定義驗證碼的字符表
  72. String chars="0123456789";
  73. char[] rands=new char[5];
  74. for(int i=0;i<5;i++) {
  75. int rand=(int)(Math.random()*10);
  76. rands[i]=chars.charAt(rand);
  77. }
  78. return rands;
  79. }
  80.  
  81. private void drawRands(Graphics g,char[] rands) {
  82. g.setColor(Color.WHITE);
  83. g.setFont(new Font(null, Font.ITALIC|Font.BOLD, 18));
  84.  
  85. /*在不同高度上輸出驗證碼的每個字符*/
  86. g.drawString("" + rands[0], 0, 18);
  87. g.drawString("" + rands[1], 14, 18);
  88. g.drawString("" + rands[2], 28, 18);
  89. g.drawString("" + rands[3], 42, 18);
  90. g.drawString("" + rands[4], 56, 18);
  91. System.out.print("當前驗證碼:");
  92. System.out.println(rands);
  93. }
  94.  
  95. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  96. doGet(request, response);
  97. }
  98.  
  99. }

到此這篇關于Java實戰之利用JavaWeb開發購物系統(超詳細)的文章就介紹到這了,更多相關JavaWeb購物系統內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/qq_43686863/article/details/115861940

延伸 · 閱讀

精彩推薦
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
主站蜘蛛池模板: 欧美九九九 | 久草成人 | 亚洲激情在线视频 | 免费av观看 | 亚洲午夜在线 | 亚洲一区二区三区四区五区午夜 | 国产精品久久久 | 中文字幕亚洲国产 | 午夜在线观看视频 | 男女全黄一级一级高潮免费看 | 久久综合久色欧美综合狠狠 | 日韩色综合| 欧美日韩免费 | 欧美a级免费看 | 欧美高清一区 | 日韩在线视频观看 | 欧美日本韩国一区二区 | 天堂俺去俺来也www久久婷婷 | 日韩欧美在线视频 | 91尤物网站网红尤物福利 | 欧美一区二区免费 | 国产最新视频 | 成人在线观看免费视频 | av在线播放网址 | 日韩精品一区二区三区免费视频 | 欧美日韩久 | 欧美日韩一区二区在线观看 | 久久免费视频3 | 99最新在线视频 | 久久久久国产精品午夜一区 | 91电影在线| 日韩精品在线一区 | 女人夜夜春高潮爽av片 | 91羞羞| 福利一区二区 | 综合久久综合 | 黄色小视频在线免费观看 | 国产99久久久精品视频 | 久色 | www.中文字幕 | 国产一级二级毛片 |