JSP培训(14)——购物车实例(上)

jsp购物车(session版) 目录 一、要用到的 js 和 css 文件 二、数据库表+实体类+Dao类 1、数据库表 2、实体类 3、Dao类方法(GoodsDao) 四、商品主页面(index.jsp) 1、代码分析 2、完整代码 五、购物车页面(spcar.jsp) 1、代码分析 2、完整代码 3、删除方法(dodelete.jsp) session为每个浏... 阅读详情

目标:
l         掌握购物车的信息如何存储;
l         掌握购物车常用功能的实现。
主要内容:
l         首先分析用户上网购物的一般过程;
l         介绍采用什么样的数据结构存储购物信息;
l         编写购物界面;
l         完成向购物车添加物品的功能。
1、 用户上网购物的一般过程
在浏览物品的过程中如果对某件物品感兴趣,会添加到购物车(购物篮)中,随时可以查看购物车中的信息,如果不想要某件物品的话,可以删除,或者修改某种物品的数量,或者整个清空购物车,可以继续选择物品向购物车中添加。最后用户可以购物这些物品,经过输入个人的送货地址信息和设定交易方式之后,可以生成订单。网站的管理员可以对订单进行管理。
本实例模拟这个过程,但是进行了简化:只能在物品列表中选择物品向购物车中添加。确定购买后,不需要设置交易方式以及付款等。实际处理过程,可以使用我们前面介绍的功能完成。
2、 购物车信息组织
因为在用户访问网站的整个过程中都可以访问购物车信息,所以购物车对象应该存放在session中。
因为用户购买的物品的种类和数量都不确定,所以需要使用一个合适的数据结构存储,我们选择ArrayList。
每一种物品都涉及数量,需要进行封装,把物品和数量封装成购物项,使用Item,每个Item对应一种物品以及该种物品的数量。
需要编写物品类表示物品的基本信息。
参考代码如下:
2.1 物品类
    该类中包含两个与分页显示相关的方法。其中用到的DBBean是前面介绍的。
package javabean;
 
import java.util.ArrayList;
import java.sql.*;
 
public class Goods
{
   private String goodsid;
   private String goodsname;
   private float price;
   // 物品编号
   public void setGoodsid(String goodsid)
   {
      this.goodsid = goodsid;
   }
 
   public String getGoodsid()
   {
      return goodsid;
   }
 
   // 物品名称
   public void setGoodsname(String goodsname)
   {
      this.goodsname = goodsname;
  }
 
   public String getGoodsname()
   {
      return goodsname;
   }
 
   // 物品价格
   public void setPrice(float price)
   {
      this.price = price;
   }
 
   public float getPrice()
   {
      return price;
   }
 
       public ArrayList getGoodsByPage(int pageNo) {
              int number = 10;
              // 每一页显示的记录数
 
              int begin = (pageNo * number) - 9;
              int end = pageNo * number;
              int index = 1;
             
              DBBean db = new DBBean();
              // 要返回的结果对象
              ArrayList goods = new ArrayList();
             
              String sql = "select * from goods";
              ResultSet rs;
              try{
                     rs = db.executeQuery(sql,null);
                     while (rs.next()) {
                            // 在begin之前的记录是不显示的
                            if (index < begin) {
                                   index++;
                                   continue;
                            }
 
                            // 在end之后的记录也不显示
                            if (index > end)
                                   break;
 
                            index++;
 
                            String goodsid = rs.getString(1);
                            String goodsname = rs.getString(2);
                            float price = rs.getFloat(3);
 
                            Goods g = new Goods();
                            g.setGoodsid(goodsid);
                            g.setGoodsname(goodsname);
                            g.setPrice(price);
                            goods.add(g);
                     }
              }catch(Exception e){
                     e.printStackTrace();
              }finally{
                     db.close();
              }
              return goods;
       }
       public Goods findGoodsById(String goodsid)
        {
           try {
    
             // 编写查询数据库信息的SQL语句
             String sql = "select * from goods where goodsid=?";
             
              DBBean db = new DBBean();
             
              ArrayList params = new ArrayList();
              params.add(goodsid);
             
              ResultSet rs = db.executeQuery(sql,params);
              if(rs.next())
              {
                  //String goodsid =rs.getString(1);
                  String goodsname = rs.getString(2);
                  float price = rs.getFloat(3);
                  Goods temp = new Goods();
                  temp.setGoodsid(goodsid);
                  temp.setGoodsname(goodsname);
                  temp.setPrice(price);
                  db.close();
                  return temp;
              }else{
                  return null;
              }
          } catch (Exception e) {
             System.out.println(e.toString());
             return null;
        }
     }
       public int getPageCount() {
 
              try {
 
 
                     // 编写查询数据库信息的SQL语句
                     String sql = "select count(*) from goods";
 
                           DBBean db = new DBBean();
                        ResultSet rs=db.executeQuery(sql,null);
                        int number=0;
                        if(rs.next())
                           number = rs.getInt(1);
                        db.close();
                     return (number - 1) / 10 + 1;
                       
              } catch (Exception e) {
                     return 0;
              }
       }
}
2.2 Item类
package javabean;
 
// 购物项
public class Item
{
   private Goods goods;
   private int quantity;
 
   public Item(Goods d,int quantity)
   {
      this.goods = d;
      this.quantity = quantity;
   }
   public void setGoods(Goods goods){
      this.goods = goods;
   }
 
   public Goods getGoods()
   {
      return goods;
   }
 
   public void setQuantity(int quantity)
   {
      this.quantity = quantity;
   }
   public int getQuantity()
   {
       return quantity;
   }
}
3、 物品信息显示功能
采用MVC模式,考虑视图部分,不需要输入界面,只需要显示信息的界面。
模型部分,在前面的代码中已经实现。
控制器部分,需要编写GetAllGoods.java。
参考代码分别如下:
3.1 界面代码
文件名:goodslist.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 
<c:if test="${pageNo!=1}">
       <a href="getAllGoods?pageNo=1">第一页</a>
       <a href="getAllGoods?pageNo=${pageNo-1}">上一页</a>
</c:if>
<c:if test="${pageNo!=pageCounter}">
       <a href="getAllGoods?pageNo=${pageNo+1}">下一页</a>
       <a href="getAllGoods?pageNo=${pageCounter}">最后一页</a>
</c:if>
<br>
<table width="200" border="1" height="56">
       <tbody>
              <tr>
                     <td>
                            物品编号
                     </td>
                     <td>
                            物品名称
                     </td>
                     <td>
                            物品价格
                     </td>
              </tr>
              <c:forEach var="g" items="${goods}">
                     <tr>
                            <td>
                                   ${g.goodsid}
                            </td>
                            <td>
                                   ${g.goodsname}
                            </td>
                            <td>
                                   ${g.price}
                            </td>
                            <td>
                                   <a href="addToCart?goodsid=${g.goodsid}">添加到购物车</a>
                            </td>
                     </tr>
              </c:forEach>
       </tbody>
</table>
3.2 控制器代
package servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javabean.*;
import java.util.*;
 
public class GetAllGoods extends HttpServlet
{
   public void doGet(HttpServletRequest request,HttpServletResponse response)
     throws IOException,ServletException
   {
      //response.setContentType("text/html;charset=gb2312");
      //PrintWriter out = response.getWriter();
        
      // 第一步:获取用户的输入信息
      String pageNo=request.getParameter("pageNo");
      int iPageNo=1;
      if(pageNo!=null)
      {
          iPageNo = Integer.parseInt(pageNo);
      }
 
      // 第二步:调用JavaBean
      Goods g = new Goods();
      ArrayList goods=null;
      goods = g.getGoodsByPage(iPageNo);
      int pageCount=g.getPageCount();
     
      // out.println("记录数:"+users.size());
      // out.println("当前页码:"+iPageNo);
      // out.println("总页码:"+pageCount);
     
 
      // 第三步:传值
      request.setAttribute("goods",goods);
      request.setAttribute("pageNo",new Integer(iPageNo));
      request.setAttribute("pageCounter",new Integer(pageCount));
 
      // 第四步:选择一个界面对用户进行响应
      String forward="goodslist.jsp";
 
      RequestDispatcher rd = request.getRequestDispatcher(forward);
      rd.forward(request,response);
 
   }
   public void doPost(HttpServletRequest request,HttpServletResponse response)
     throws IOException,ServletException
   {
      doGet(request,response);
   }
}
4、 显示购物车中信息
该功能直接从session中获取购物车信息,所以不需要控制器和模型部分,只需要编写显示购物车信息的JSP文件即可,文件名为cart.jsp,参考代码如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 
购物车中的信息<br>
<table border=1>
   <tr>
      <td>物品编号</td>
      <td>物品名称</td>
      <td>价格</td>
      <td>数量</td>
   </tr>
<c:forEach var="item" items="${cart}">
   <tr>
      <td>${item.goods.goodsid}</td>
      <td>${item.goods.goodsname}</td>
      <td>${item.goods.price}</td>
      <td>${item.quantity}</td>
</c:forEach>
</table>
5、 向购物车中添加物品
采用MVC模式。
首先考虑输入和输出,添加物品的输入就是物品信息列表界面,输出应该是添加后的购物车信息界面(也可以重新回到物品信息界面),这两个界面都不需要编写。
考虑模型部分,需要编写购物车管理JavaBean,完成处理。
考虑控制器部分,需要获取用户选择的物品,然后添加到调用购物车管理Bean,完成添加。
下面是参考代码。
5.1 模型部分
文件名CartManager.java
package javabean;
 
import java.util.ArrayList;
 
public class CartManager
{
   // 表示购物车
   private ArrayList cart;
 
   public void setCart(ArrayList cart)
   {
      this.cart = cart;
   }
   public ArrayList getCart()
   {
      return cart;
   }
  
   // 添加的物品&数量
   public ArrayList addToCart(Goods g,int quantity)
   {
      if(cart==null){
         // 实例化购物车对象
         cart=new ArrayList();
 
         // 添加到购物车
         Item item = new Item(g,quantity);
         cart.add(item);
      }
      else
      {
         // 转换成数组
         Object items[] = cart.toArray();
 
         boolean find=false; // 表示是否查找到
         
         for(int i=0;i<items.length;i++)
         {
             Item temp = (Item)items[i];
             // 判断购物车中是否存在要添加的物品
             if(temp.getGoods().getGoodsid().equals(g.getGoodsid()))
             {
                temp.setQuantity(temp.getQuantity()+quantity);
                find=true;
                break;
             }
         }
         if(!find)
         {
            // 添加到购物车
            Item item = new Item(g,quantity);
            cart.add(item);
         }
      }
      return cart;
   }
}
5.2 控制器部分
文件名:AddToCart.java
package servlet;
 
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javabean.*;
import java.util.*;
 
public class AddToCart extends HttpServlet
{
   public void doGet(HttpServletRequest request,HttpServletResponse response)
     throws IOException,ServletException
   {
//       response.setContentType("text/html;charset=gb2312");
//       PrintWriter out = response.getWriter();
    try{
 
      // 得到要添加的物品的编号
      String goodsid = request.getParameter("goodsid");
 
 
      // 创建JavaBean对象
      CartManager cartManager=new CartManager();
      // 得到session对象
      HttpSession session = request.getSession(true);
      // 得到购物车对象
      ArrayList cart = (ArrayList)session.getAttribute("cart");
 
 
      // 用cart初始化cartManager
      cartManager.setCart(cart);
      // 构造物品对象
      Goods g = new Goods();
      g = g.findGoodsById(goodsid);
 
      // out.println(g.getGoodsid());
 
      cartManager.addToCart(g,1);
 
      // 先把购物车重新存到session
      session.setAttribute("cart",cartManager.getCart());
    }catch(Exception e){
      // out.println(e.toString());
    }
        response.sendRedirect("cart.jsp");     
   }
   public void doPost(HttpServletRequest request,HttpServletResponse response)
     throws IOException,ServletException
   {
      doGet(request,response);
   }
}
6、 Servlet的配置
web.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 
<servlet>
        <servlet-name>getAllGoods</servlet-name>
        <servlet-class>servlet.GetAllGoods</servlet-class>
</servlet>
 
<servlet-mapping>
        <servlet-name>getAllGoods</servlet-name>
        <url-pattern>/getAllGoods</url-pattern>
</servlet-mapping>
 
<servlet>
        <servlet-name>addToCart</servlet-name>
        <servlet-class>servlet.AddToCart</servlet-class>
</servlet>
 
<servlet-mapping>
        <servlet-name>addToCart</servlet-name>
        <url-pattern>/addToCart</url-pattern>
</servlet-mapping>
</web-app>
7、 运行
编译所有文件,然后先访问getAllGoods Servlet,然后在物品信息界面上选择物品添加到购物车,之后就可以看到购物车中的信息了。
参考教材:《Java Web程序设计基础教程》

JSP培训目录:

JSP培训(1)——概述
JSP培训(2)——运行原理、文档结构、简单输入输出
JSP培训(3)——客户端验证、常用输出方式、JSTL基本用法
JSP培训(4)——实例:登录功能、jsp:forward标签、jsp:include标签、include指令、EL、c:if
JSP培训(5)——使用JavaBean完成业务逻辑
JSP培训(6)——使用Servlet作为控制器实现MVC模式
JSP培训(7)——使用JDBC完成动态验证、采用MVC完成数据查询
JSP培训(8)——添加功能和分页显示
JSP培训(9)——使用MVC模式完成删除和修改功能
JSP培训(10)——使用JavaBean封装对数据库的访问、连接池的配置和使用
JSP培训(11)——Java Web中的安全控制
JSP培训(12)——Java Web应用国际化
JSP培训(13)——异常处理
JSP培训(14)——购物车实例(上)
JSP培训(15)——购物车实例(下)及小结
Android AVB 分析(十六)5 个例子彻底理解 FEC(Reed-Solomon) 的工作原理 关于 FEC 是如何工作的,一直是我 Android OTA 讨论群中的未解话题,大家基本上都不清楚 Android 上面的 FEC 是如何工作的,为什么在 OTA 升级的最后阶段,FEC 的编码计算会消耗大量的 IO 资源,并持续很长时间。接下来的几篇,我会从一个程序员的角度,演示基于里德所罗门编码的 FEC 到底是如何工作的。 阅读详情

相关推荐

光模块基础知识【快速入门】02

光模块是用于交换机与设备之间传输的载体,是光纤通信系统中的核心器件。主要作用是发射端将设备的电信号转换成光信号。 光纤通道光模块和以太网光模块 光纤通道光模块 光纤通道(FC, Fiber Channel)是一种高速网络数据传输协议。光纤通道协议可以有序无损地传输原始数据,它主要用于在数据中心、电脑服务器、交换机与存储网络中进行数据传输。 FC光模块遵循FC协议,充当着光纤通道系统之间的接口,也是光纤存储网络设备间的接口。它们主要用于数据中心的光纤通道存储网络链接中。 FC光模块具有小型化和低.

Jin Hanquan的博客 3万+

Java Web购物车-JSP实现

登录注册功能 login.jsp &amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot; pageEncoding=&quot;UTF-8&quot;%&amp;gt; &amp;lt;html&amp;gt; &amp;lt;head&amp;gt; &a

Co_zy的博客 3万+

【Hypermesh】TetraMesh Panel 常用选项详解

结合Hypermesh 2020 帮助文档和自己的一点使用经验,整理了这个博客。

qgm1702的博客 3679

jsp设计简单的购物车应用案例

接着,使用 `out.print()` 方法将 `str` 变量的值输出到页面上,并在输出的字符串末尾添加一个 `` 标签,以使得输出的内容能够在页面上换行显示。通过 `request.getParameter()` 方法获取表单中名为 `c1`、`c2` 和 `c3` 的参数的值,并将它们保存到会话对象中,分别使用 `session.setAttribute()` 方法将这些值存储到会话中的 `s1`、`s2` 和 `s3` 属性中。接着定义了一个字符串变量 `str`,并初始化为空字符串。

m0_63064861的博客 2038

Cilium动手实验室: 精通之旅---5.Mutual Authentication with Cilium

在Cilium 入门实验室中,您将在受《星球大战》启发的场景中实施高级第 3-7 层网络策略。在实验结束时,您将实施强大的网络策略,并通过微分段保护 Empire 免受来自叛乱的攻击。在本实验中,您将重新部署《星球大战》演示应用程序,但除了网络策略之外,您还将了解如何在工作负载之间实施相互身份验证。

Q先生 1400

linux v3h平台开发系列详解(GMSL摄像头篇):1.11 解串器MIPI 1.5G高速率特殊deskew配置

解串器max96712 deskew配置

xian18809311584的博客 1777

【购物车项目】代码+页面+连接数据库

主界面 个人中心界面 , 数据库表设计 就不多说,直接上代码 他们的顺序是register.jsp→login.jsp→index.jsp→dogwc.jsp→index.jsp register.jsp和doregister.jsp <%@ page language="java" contentType="text/html; charse...

全栈 8789

Python爬虫实战:扒取专利数据库核心信息,我用这招搞定反爬+数据结构化(附完整可运行代码)

这套爬虫方案从「实际需求」出发,解决了专利数据库抓取的核心痛点:反爬突破、数据结构化、标题创作。核心价值不在于代码多复杂,而在于「实用」——我用这套代码半天就抓取了800+条Python爬虫相关专利,比手动效率提升了几十倍。最后想说:爬虫技术的核心是「解决问题」,而不是炫技。专利数据能帮我们快速了解行业技术趋势,尤其是程序员,从专利中扒出的核心逻辑,远比零散的博客文章更系统。希望这篇实战分享能帮到有需要的小伙伴,也欢迎在评论区交流专利爬虫的更多技巧!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2129

基于Java、Jsp实现购物车的功能

先看效果图: 实现代码: index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </he..

有没有料,进来看看就知道! 4895

OpenCV实战之人脸美颜美型(八)——大眼(上)

从大众审美的角度来看,眼睛适当的“变大”会让人显得更加年轻。因此美型中就有一项大眼功能,其效果就是让眼睛适当变大,这章内容就围绕着大眼算法展开。

On my way 1211

【数据分享】1985-2023 年中国 30m 生长季 NDVI 数据集:刘小平团队力作,Landsat 无缝融合无云产品

中山大学刘小平团队发布1985-2023年中国30m分辨率生长季Landsat NDVI数据集,解决了传统数据的三大痛点:无缝拼接、时间连续和质量可靠。该数据集基于5-9月生长季Landsat影像,通过云检测、多景融合等技术生成,已在GEE平台开放共享。其高分辨率、长时序特性为植被动态监测、LUCC研究等提供重要支撑,在农业、生态保护等领域具有广泛应用价值。

国科大硕士在读,分享Python/GEE/Matlab/R专业代码实践,涵盖数据分析、算法开发与应用技巧等,以代码会友。 1513

培训目录

李绪成的一亩三分地 1595

【人工智能】AI驱动值班巡检Agent(Hermes)

传统运维值班巡检场景中,存在四大核心痛点:本项目基于 Agent+Skills+浏览器自动化 架构,构建了具备自我进化能力的AI值班员,核心逻辑流如下:

奶爸的编程之路,也就一周冷个三天 178

JavaWeb(JSP+Servlet)视频课程-刘英杰-专题视频课程

通过Session实现购物车 EL表达式 JSTL标签 过滤器 监听器

l363130002的专栏 256

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

视频教程-JSP+Servlet实战视频课程-Java

JSP+Servlet实战视频课程 Java讲师,多年培训经验,曾参与开发过...

weixin_27079161的博客 438

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

视频教程-IDEA版JavaWeb从入门到精通之项目第六、七阶段第14天-Java

IDEA版JavaWeb从入门到精通之项目第六、七阶段第14天 张长志技术全...

weixin_34502057的博客 161

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

基于JSP的网上甜品买卖系统的设计与实现

近年来,随着互联网的普及和电子商务的快速发展,越来越多的传统商业活动正在向线上转移。而在线上购买甜品这一传统商业活动也受到了影响。在这种背景下,开发一款基于JSP的网上甜品买卖系统,已经成为了刚需。 本文基于B/S结构的,主要对网上甜品买卖系统的构建流程进行介绍,其主要包括需求分析、详细设计、系统实现等重要部分组成,在此基础上构建的系统可应用到实际的网上甜品买卖系统业务中。本系统的主要特点在于将JSP应用到网上甜品买卖系统中,JSP的引入可提高系统开发效率,最终实现的系统具备运行稳定易用以及实用的特点。论文

yvonneking1118的博客 1174

大本营半年总结(115篇文章)

去年9月21日加入学生大本营,今天3月21日,刚好半年。 快啊! 有太多想说的话,......,下面是这些本年来文章的目录。   1、Java基础系列   Java基础:第四十一讲 this和super Java基础:第四十讲 向上转型和强制类型转换 Java基础:第三十九讲 多态 Java基础:第三十八讲 抽象类与抽象方法 Java基础:第三十七讲 成员方法的继承与覆盖 J...

李绪成的一亩三分地 2625

视频教程-JavaWeb外卖点餐系统典型模块开发-Java

JavaWeb外卖点餐系统典型模块开发 计算机软件理论硕士毕业,有十几年企业...

weixin_34667545的博客 552

【基于Web的网上书城——开题报告 分享(仅供参考呀)

面试一面会问很多基础问题,而这些基础问题基本上在网上搜索,面试题都会很多很多。最好把准备一下常见的面试问题,毕竟面试也相当与一次考试,所以找工作面试的准备千万别偷懒。面试就跟考试一样的,时间长了不复习,现场表现肯定不会太好。表现的不好面试官不可能说,我猜他没发挥好,我录用他吧。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】96道前端面试题:常用算法面试题:内容主要包括HTML,CSS,JavaScript,浏览器,性能优化。

2401_84434086的博客 722

java/jsp/ssm果蔬信息管理系统【2024年毕设】

根据以上对系统功能模块的划分和设计,可以得到系统功能模块图如图4-4所示,该图给出了详尽的模块划分和模块组织结构,能够直观展现系统的功能结构关系。springboot基于JEE平台springboot技术的订餐系统。springboot基于微信小程序的古诗词在线学习系统的设计与实现。springboot基于springboot的桌游信息管理系统。springboot基于微信小程序的Linda大学生竞赛平台。springboot基于JAVA技术的旅游信息交互系统。

光冯毕设程序 132

java/jsp/ssm疫情时期在线物资订购系统的实现【2024年毕设

管理员模块主要针对整个系统的管理进行设计,提高了管理的效率和标准。springboot基于springBoot+mybits的资源回收。springboot基于spring的物业管理系统的设计与实现。springboot基于数据可视化的云山川景点日推交流平台。springboot微信小程序的治安处罚法条查询系统。ssm基于微信小程序的涉疫人员信息系统的设计与实现。springboot基于MVVM的疫情物资管理系统。springboot基于安卓的校园周边美食汇。springboot学生综合成绩测评系统。

sheji229的博客 914

《Java Web程序设计基础教程》简介

本书是关于Java Web开发的基础教程,共分15章。第1章介绍如何构建Java Web应用;第2、3章介绍如何解决Java Web应用的输入和输出问题;第4~6章对登录功能进行了3次重构,这也是Java Web技术的3个发展阶段,并重点介绍了MVC模式;第7~10章进一步强化MVC模式的运用,并介绍了数据库的常用操作以及分页显示和连接池等内容;第11~13章介绍了Java Web应...

Java Web 开发教程 389
上一篇: JSP培训(13)——异常处理
下一篇: JSP培训(15)——购物车实例(下)及小结
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值