基于JSP、java、Tomcat三者的项目实战--校园交易网(3)主页
创始人
2024-11-27 15:05:11
0

技术支持:JAVA、JSP

服务器:TOMCAT 7.0.86

编程软件:IntelliJ IDEA 2021.1.3 x64


前文三篇登录和注册功能的实现

基于JSP、java、Tomcat、mysql三层交互的项目实战--校园交易网(1)-项目搭建(前期准备工作)icon-default.png?t=N7T8https://blog.csdn.net/m0_64056556/article/details/140684858?spm=1001.2014.3001.5502

基于JSP、java、Tomcat、mysql三层交互的项目实战--校园交易网(2)登录功能实现icon-default.png?t=N7T8https://blog.csdn.net/m0_64056556/article/details/140708897?spm=1001.2014.3001.5502

基于JSP、java、Tomcat三者的项目实战--校园交易网(2)注册功能实现icon-default.png?t=N7T8https://blog.csdn.net/m0_64056556/article/details/140710605?spm=1001.2014.3001.5502


下面我展示主页

在我们的网址上加上denglu.jsp跳转到登陆页面,同时昵称,账号和密码都是注册过,存放到数据库中的,假设是都是2(我已注册过的),点击登录之后,就会跳转到我们的l主页面。

主页如下

上面几个功能我们就要注意到,都是我们要做的,有些逻辑功能我们写了一个服务,而有些逻辑功能的实现我们是直接在jsp页面实现了。

我们放上主页的代码

网页层

shopping.jsp

<%@ page import="java.util.Date" %> <%@ page import="java.text.SimpleDateFormat" %> <%@ page import="entiy.Product" %> <%@ page import="java.util.List" %> <%@ page language="java" contentType="text/html; charset=UTF-8"          pageEncoding="UTF-8"%>        购物车             

交易平台

<% String username = (String) session.getAttribute("username"); if (username == null) { username = "游客"; } %> 您好,<%= session.getAttribute("username") %> | 现在时间: <% Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); %> <%=sdf.format(date )%>
<% List products = (List) request.getAttribute("goods"); if (products == null) { System.out.println("Products list is null!"); // 可以根据实际情况做进一步处理,如返回到上一页或者显示错误信息。 } else { for (int i=0; i <% } } %>
商品 单价(元) 操作
<%=e.getName()%> <%=e.getPrice()%> ">修改

购物车

商品 单价(元) 数量 金额(元) 删除
总计

        这段代码实现了一个简单的购物车系统,允许用户添加商品、调整数量、删除商品,并计算总金额。同时,还包括一个历史清单按钮,点击后会跳转到历史清单页面。

  1. JSP 页面结构

    • 使用了 JSP(JavaServer Pages)作为页面技术,可以在 HTML 中嵌入 Java 代码片段,方便地与后端 Java 代码进行交互和数据处理。
  2. 用户信息显示

    • 在页面顶部右侧显示用户的登录状态和当前时间。
    • 使用了会话(Session)来存储和获取用户信息,例如用户名,如果用户未登录,则默认显示为游客。
  3. 数据展示和交互

    • 使用了一个表格来展示购物车中的商品列表。
    • 通过从请求中获取商品列表数据(List products),然后遍历显示每个商品的名称、价格,并提供修改和加入购物车的链接或按钮。
  4. 动态数据处理

    • 使用了 Java 的 Date 类和 SimpleDateFormat 类来获取和格式化当前的日期时间,显示在页面上。
  5. 交互性功能

    • 页面中包含了添加商品和修改商品的链接或按钮,这些通过超链接和 JavaScript 函数实现,通过 URL 参数来传递商品的唯一标识符(ID)。
  6. 后端数据处理

    • 在 Java 后端,需要有相应的 Servlet 或 Controller 处理请求,从数据库或其他数据源获取商品信息,并将其存储在请求属性中以便在 JSP 页面中使用。
  7. HTML结构

    • 使用标签展示购物车内容,每行显示商品信息、单价、数量、金额以及删除按钮。
    • 使用表单
      包裹整个购物车,设置action="total"表示在提交表单时将数据发送到名为total的后端服务。
    • JavaScript函数

      • add_shoppingcart(btn):用于将商品添加到购物车。

        • 获取所点击按钮的父元素,并从中获取商品信息(名称和价格)。
        • 检查购物车中是否已有相同商品,若有则增加其数量,更新金额;若无则创建新行添加商品信息。
        • 调用total()函数重新计算总金额。
      • del(btn):用于删除购物车中的商品行。

        • 获取点击按钮的父元素,并从中获取其所在的行(
    • 元素)。
    • 从DOM中移除该行,并调用total()函数重新计算总金额。
    • add(btn)minu(btn):分别用于增加和减少商品数量。

      • 通过操作DOM来增加或减少商品数量,并根据数量重新计算商品行的金额,然后调用total()更新总金额。
    • total():计算购物车中所有商品的总金额。

      • 获取所有商品行的金额并累加,最后将总金额显示在页面相应的输入框中。
    • 与服务的连接:

      • 这段代码通过 Servlet(可能是Shopping Servlet)处理用户请求,例如获取用户信息和商品数据。
      • 商品数据(List)可能是从数据库或其他数据存储中获取的,通过 Servlet 将其设置为请求属性,在 JSP 页面中通过 <%= ... %> 输出到 HTML 中
      • 表单提交:当用户点击"去支付"按钮时,会触发form标签的提交事件,数据将被发送到名为total的后端服务(假设是服务器上的一个处理请求的端点)。后端服务可以接收提交的数据,如总金额等,然后执行支付操作或者进一步处理。

      服务层

      Shopping.Servlet

      package Servlet;  import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.sql.*;  public class ShoppingServlet extends HttpServlet {     // 数据库连接信息(这里假设你使用MySQL数据库)     private String jdbcURL = "jdbc:mysql://localhost:3306/sdjyy";     private String jdbcUsername = "root";     private String jdbcPassword = "asd123";      protected void doPost(HttpServletRequest request, HttpServletResponse response)             throws ServletException, IOException {         HttpSession session = request.getSession();         String idname = (String) session.getAttribute("idname");          if (idname != null) {             // 如果成功获取到 idname,可以继续处理逻辑             // 在这里可以根据 idname 进行数据库查询或者其他业务逻辑              Connection conn = null;             PreparedStatement stmt = null;             ResultSet rs = null;              try {                 conn = DriverManager.getConnection(jdbcURL, jdbcUsername, jdbcPassword);                  String sql = "SELECT * FROM users WHERE idname = ?";                 stmt = conn.prepareStatement(sql);                 stmt.setString(1, idname);                  rs = stmt.executeQuery();                  if (rs.next()) {                     // 从结果集中获取其他信息或者执行其他操作                     String username = rs.getString("idname");                     System.out.println("Username retrieved: " + username);                      // 将用户名存储到 session 中(如果需要的话)                     session.setAttribute("username", username);                      // 转发到 shopping.jsp 页面或者其他需要的页面                     RequestDispatcher dispatcher = request.getRequestDispatcher("/shopping.jsp");                     dispatcher.forward(request, response);                 } else {                     // 如果未能从数据库中找到对应的记录,处理逻辑(例如跳转到错误页面)                     response.sendRedirect("/denglu.jsp");                 }              } catch (SQLException se) {                 se.printStackTrace();                 response.getWriter().println("数据库连接错误");             } finally {                 // 关闭资源                 try {                     if (rs != null) rs.close();                     if (stmt != null) stmt.close();                     if (conn != null) conn.close();                 } catch (SQLException se) {                     se.printStackTrace();                 }             }         } else {             // 如果未能成功取 idname,处理逻辑(例如跳转到登录页面或者错误页面)             response.sendRedirect("/denglu.jsp");         }     } }
      1. Servlet基本信息

        • 这是一个名为 ShoppingServlet 的Servlet类,继承自 HttpServlet,用于处理POST请求。
      2. 数据库连接信息

        • 定义了三个私有变量 jdbcURLjdbcUsernamejdbcPassword,分别存储了MySQL数据库的URL、用户名和密码。这些信息用于与数据库建立连接。
      3. doPost方法

        • doPost 方法接收 HttpServletRequest 和 HttpServletResponse 对象作为参数,处理用户的POST请求。
        • 首先从会话中获取 idname,这通常是用户登录后存储在会话中的用户名或标识。
      4. 会话检查

        • 检查 idname 是否为null。如果成功获取到 idname,表示用户已经登录,可以继续处理业务逻辑;否则,重定向到登录页面(这里是 /denglu.jsp)。
      5. 数据库操作

        • 使用 DriverManager 建立数据库连接。
        • 准备SQL语句并执行查询,查询条件为 idname,以获取与之对应的用户信息。
        • 如果查询到结果,从结果集中获取用户名等信息,并将用户名存储到会话中(如果需要的话)。
        • 将请求转发到 shopping.jsp 页面或其他需要的页面,这里使用 RequestDispatcher 实现转发。
      6. 异常处理和资源释放

        • 在操作数据库过程中可能会发生 SQLException,在 catch 块中打印异常信息,并向响应中写入错误信息。
        • 在 finally 块中关闭数据库连接、语句和结果集,确保资源被正确释放。
      7. 未找到用户处理

        • 如果未从数据库中找到与 idname 对应的记录,可能是因为用户不存在或其他错误,将响应重定向到登录页面

      更多的,这个服务层的代码是为了解决

      将登陆成功的信息传到session中,如果在登录页面显示登录成功的话,就会把用户名存进去,然后再在这个地方拿出来,显示“你好,xxx”


      web-xml

               Shopping         Servlet.ShoppingServlet                   Shopping         /Shopping     

      相关内容

      热门资讯

      三分钟细节!德州微扑克辅助神器... 三分钟细节!德州微扑克辅助神器app,(wePOKE)一般真的有挂,曝光教程(有挂插件)-哔哩哔哩1...
      9分钟黑科技!wepoke是机... 9分钟黑科技!wepoke是机器发牌(透视辅助)外挂透明挂辅助工具(2025已更新)(哔哩哔哩)1、...
      发现玩家(咪咪扑克)的确是有挂... 发现玩家(咪咪扑克)的确是有挂的(软件透明挂)外挂透明挂辅助透视(2023已更新)(哔哩哔哩)进入游...
      7分钟理解!wepoke是机器... 7分钟理解!wepoke是机器发牌(德扑ai智能)本来真的有挂(2020已更新)(哔哩哔哩)1、许多...
      4分钟黑科技!wepoke管理... 4分钟黑科技!wepoke管理员(透视)外挂透明挂辅助软件(2024已更新)(哔哩哔哩)在进入wep...
      7分钟科研!微扑克有后台控制,... 7分钟科研!微扑克有后台控制,(来玩德州app)就是真的有挂,安装教程(有挂安装)-小红书1、微扑克...
      盘点一款(wepOke)果然真... 盘点一款(wepOke)果然真的有挂(黑科技)外挂透明挂辅助软件(2020已更新)(哔哩哔哩)1、点...
      7分钟精通!aapoker透明... 7分钟精通!aapoker透明挂多久被封(wepoke黑科技)一直真的有挂(2023已更新)(哔哩哔...
      五分钟黑科技!德扑平台机器人(... 五分钟黑科技!德扑平台机器人(辅助挂)外挂透明挂辅助神器(2020已更新)(哔哩哔哩)1、让任何用户...
      6分钟技巧!德扑之星,(we辅... 6分钟技巧!德扑之星,(we辅助poker)本来真的有挂,2025教程(有挂工具)-百度知乎1、让任...