`

j2ee:servlet练习鲜花项目(购物车、分页、ajax、iframe弹出层、jquery、json(计算小计、总计)、map集合高级遍历、图片上传)

    博客分类:
  • j2ee
 
阅读更多
第一:概念
购物车全过程的理解:
 1.新建一个购物车类,这样,这个类里面就可以封装商品对象和商品数量了。
 2.每种商品都是一个购物车
 3.把所有的购物车放在一起,也就是放在一个map集合中,这样也就是购买多个商品(一个或者多个),商品放在后一起提交订单。
 4.重点:每次添加商品其实就是往map集合中添加一个购物车对象(购物车对象是根据购物车这个实体类创建的)
 5.重点:购物完成之后把这个map集合放在sesison域中
 6.也就是说第一次购买商品的时候创建一个map集合,第一次购买某个商品的时候创建一个购物车对象car。把每个商品car都放在集合map中。最终把集合放在session中
 7.为什么要使用集合存放购物车?因为集合是长度可变的数组,因此可以完成商品的添加和移除。
 
第二:代码
1.购物车类
package com.entity;
//购物车类
public class CarItem {
 private Flower flower;
 private int count;
 public Flower getFlower() {
  return flower;
 }
 public void setFlower(Flower flower) {
  this.flower = flower;
 }
 public int getCount() {
  return count;
 }
 public void setCount(int count) {
  this.count = count;
 }
 
}
2:购物车的实现、json计算小计和总计
package com.action;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.comm.FormatDate;
import com.dao.FlowerDao;
import com.dao.impl.FlowerDaoImpl;
import com.entity.CarItem;
import com.entity.Flower;
import com.entity.Orders;
import com.entity.UserInfo;
import com.google.common.collect.Iterables;
public class FlowerServlet extends HttpServlet{
 FlowerDao fdao= new FlowerDaoImpl();
 @SuppressWarnings("unused")
 @Override
 protected void service(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
   req.setCharacterEncoding("gbk");
   String op=req.getParameter("op");
   if(op==null){
    this.IndexFlower(req, resp);
   }else
   if(op.equals("searchoneflower")){
    this.DetailsFlower(req, resp);
   }else
   if(op.equals("addflower")){
    this.ShopFlower(req, resp);
   }else
   if(op.equals("kong")){
    ClearCart(req,resp);
   }else
   if(op.equals("tj")){
    TjCart(req,resp);
   }else
   if(op.equals("clearone")){
    this.ClearOne(req, resp);
   }else
   if(op.equals("updateCount")){
    this.UpdateCount(req, resp);
   }else
   if(op.equals("SearcAll")){
    SearchPage(req,resp);
   }else
  if(op.equals("AdminSearchAll")){
   AdminSearchAll(req,resp);
   }
  
   /*if(op.equals("SearcAll")){
    SearcAll(req,resp);
   }*/
 }
 
 @SuppressWarnings("unchecked")
 protected void IndexFlower(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  //req.setCharacterEncoding("utf-8");
  FlowerDao fdao = new FlowerDaoImpl();
  //1.首页鲜花
    ArrayList<Flower> flist=(ArrayList<Flower>)fdao.SearchFlower(); 
  //2.首页蛋糕
    ArrayList<Flower> fclist=(ArrayList<Flower>)fdao.findCake(); 
  //3.查找新礼蓝
    ArrayList<Flower> fllist=(ArrayList<Flower>)fdao.findLiLan();
  //4.判断
    if(flist!=null&&flist.size()>0&&fclist!=null&&fclist.size()>0&&fllist!=null&&fllist.size()>0){
     HttpSession session=req.getSession();
     session.setAttribute("flist", flist);
     session.setAttribute("fclist", fclist);
     session.setAttribute("fllist", fllist);
     resp.sendRedirect("index.jsp");
    }else{
     resp.sendRedirect("error.jsp");
    }
 }
 
 
 
   
 //1.在首页查询鲜花详情
 protected void DetailsFlower(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  String flowerId=req.getParameter("flowerId");
  Flower flower=fdao.DetailsFlower(Integer.parseInt(flowerId));
  if(flower!=null){
   HttpSession session=req.getSession();
   session.setAttribute("flower", flower);
   resp.sendRedirect("details.jsp");
  }else{
   resp.sendRedirect("flowerServlet");
  } 
 }
 
 //2.把鲜花添加到购物车
 @SuppressWarnings("unused")
 protected void ShopFlower(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  HttpSession session=req.getSession();
  //1.判断是否已经登陆
  Object obj=session.getAttribute("u");
  if(obj==null){
   System.out.println("没有登陆成功,没有用户");
   resp.sendRedirect("login.jsp");
   return;
  }
  //2.进行添加到购物车的操作
  CarItem car=null;
  int flowerId=Integer.parseInt(req.getParameter("flowerId"));
  Flower flower=(Flower) session.getAttribute("flower");
  Map mycart=(Map)session.getAttribute("mycart");//创建map结合当做购物车,并把session容器中的内容放在map容器中。这里已经不是第一次购买了。
  if(mycart==null){//第一次购购物,购物车为空
   mycart=new HashMap();//第一次购物的时候给他一个购物
   System.out.println("第一次使用购物车");
  }
    
  if(mycart.keySet().contains(flowerId)){//如果这次添加的商品在购物车里出现过
   System.out.println("重复购买该商品");
   car=(CarItem) mycart.get(flower.getFlowerId());
   car.setCount(car.getCount()+1);  
  }else{//第一次买
   System.out.println("第一次购买该商品");
   car = new CarItem();
   car.setFlower(flower);
   car.setCount(1);
  }
   
  
  mycart.put(flowerId, car);//每个商品对象都是购物车里的一员。该商品对象必须包含商品的主键和数量,因此创建一个新的实体类
  System.out.println("种类:"+mycart.size());;
  session.setAttribute("mycart", mycart);//此session用于保存商品对象
  resp.sendRedirect("shopCart.jsp");
  
 }
 
 
 //3.清空购物车
 protected void ClearCart(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  HttpSession session=req.getSession();
  session.removeAttribute("mycart");
  resp.sendRedirect("flowerServlet");
 }
  
 //4.提交购物车
 protected void TjCart(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  HttpSession session=req.getSession();
  //1.判断当前是否登陆
  Object obj=session.getAttribute("u");
  if(obj==null){
   resp.sendRedirect("login.jsp");
   return;
  }
  //2.判断购物车是否有商品
  Object obj2=session.getAttribute("mycart");
  if(obj2==null){
   PrintWriter out=resp.getWriter();
   out.print("<script>alert('请先去首页添加商品');location.href='flowerServlet'</script>");
   return;
  }
  //3.提交购物车
  resp.sendRedirect("order.jsp");
 }
 
 
/* //5.清除点单中的某个商品,清除mycart这个session容器里的某一个值。
 protected void ClearOne(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  String flowerId=req.getParameter("flowerId");
  HttpSession session=req.getSession();
  Map map=(Map) session.getAttribute("mycart");//用map集合接收购物车
  Set set=map.keySet();
  Map map1=new HashMap();//新建一个map1集合用于接收筛选后的map集合
  Object[] arr= set.toArray();
  for(int x=0;x<arr.length;x++){
   if(arr[x].toString().equals(flowerId)){
    map.remove(arr[x]);//如果是要删除的就删除
   }else{
    map1.put(arr[x], map.get(arr[x]));//如果不是要删除的就把内容从map集合存到map1集合中
   }
  }
  session.setAttribute("mycart", map1);//键不变,还是原来购物车的那个键,值变成新的了。
  if(map!=null&&map.size()>0){
    resp.sendRedirect("shopCart.jsp");//如果map集合不为空说明该订单里还有商品,因此显示该订单里的商品
  }else{
    resp.sendRedirect("flowerServlet");//如果map集合为空说明该订单下没有商品了,就直接跳到首页 
  }
  }
 */
 
 ///5.注意:这里是对上面的删除购物车里某个商品的功能的改进,也就是使用另一种思路写的该方法。
 //清除点单中的某个商品,清除mycart这个session容器里的某一个值。
 protected void ClearOne(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  String flowerId=req.getParameter("flowerId");
  HttpSession session=req.getSession();
  Map mycart=(Map) session.getAttribute("mycart");//mycart是存放所有购物车的
     CarItem car= (CarItem) mycart.get(Integer.parseInt(flowerId));//这是要删除的某个具体的购物车
    // System.out.println("输出:"+car.getFlower()+"  "+mycart.size());
     mycart.remove(Integer.parseInt(flowerId));
     //System.out.println("输出:"+car.getFlower()+"  "+mycart.size());
    // session.setAttribute("mycart", mycart);不许要写这句话。因为我们只是修改了里面的值
     if(mycart!=null&&mycart.size()>0){
      resp.sendRedirect("shopCart.jsp");
     }else{
      resp.sendRedirect("flowerServlet");
      
     }
    
  }
 
/* //6.修改购物车中某商品的数量
 protected void UpdateCount(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  String flowerId=req.getParameter("flowerId");
  HttpSession session=req.getSession();
  Map mycart=(Map) session.getAttribute("mycart");
  CarItem car=(CarItem) mycart.get(Integer.parseInt(flowerId));//通过键找值
  String count=req.getParameter("count");
  //System.out.println("数量:"+count);
  if(count.equals("0")){
   mycart.remove(Integer.parseInt(flowerId));
  }else{
   car.setCount(Integer.parseInt(count));
  } 
  session.setAttribute("mycart", mycart);
  resp.sendRedirect("shopCart.jsp");  
 }*/
 //6.修改购物车中某商品的数量,并按照老师的思路,修改数量的同时修改了小计和总计
 protected void UpdateCount(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  String flowerId=req.getParameter("flowerId");
  HttpSession session=req.getSession();
  Map<String,CarItem>  mycart=(Map) session.getAttribute("mycart");
  CarItem car=(CarItem) mycart.get(Integer.parseInt(flowerId));//通过键找值
  String count=req.getParameter("count");
  //System.out.println("数量:"+count);
  if(count.equals("0")){
   mycart.remove(Integer.parseInt(flowerId));
  }else{
   car.setCount(Integer.parseInt(count));
  } 
  session.setAttribute("mycart", mycart);
  
  double xj=car.getCount()*car.getFlower().getCurrentPrice();//小计
  double zj=0;//总计
  for(Entry<String,CarItem> e:mycart.entrySet())
  {
   //xj=e.getValue().getCount()*e.getValue().getFlower().getCurrentPrice();
   zj=zj+(e.getValue().getCount()*e.getValue().getFlower().getCurrentPrice());
  }
  
  /*PrintWriter out=resp.getWriter();
  System.out.println("修改了数量:"+car.getCount());
  out.print(car.getCount());*/
  PrintWriter out =resp.getWriter();
  String json="[{\"xj\":"+xj+",\"zj\":"+zj+"}]";
  System.out.println(json);
  out.print(json);
 }
 
 //没使用分页的查询鲜花
 protected void SearcAll(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  String typeId=req.getParameter("type");
  ArrayList<Flower> flowerList=(ArrayList<Flower>) fdao.SearcAll(Integer.parseInt(typeId));
  if(flowerList!=null&&flowerList.size()>0){
   HttpSession session=req.getSession();
   session.setAttribute("flowerList", flowerList);
   resp.sendRedirect("flower.jsp");
  }else{
   resp.sendRedirect("error.jsp");
  }
 }
 
 //使用分页查询鲜花
 protected void SearchPage(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  String typeId=req.getParameter("type");
  //实现分页中的上一页和下一页
  int pageNum=0;//初始化当前页
  int pageSize=0;//初始化页大小
  String pn=req.getParameter("pn");
  if(pn==null){
   pageNum=1;
   pageSize=10;
  }
  else{
   pageNum=Integer.parseInt(pn); 
   pageSize=10;
  }
  ArrayList<Flower> flowerList=(ArrayList<Flower>) fdao.searchPage(pageNum, pageSize,(pageNum-1)*pageSize,Integer.parseInt(typeId));
  //实现末页
  int toatlpage=fdao.getTotalPage(pageSize,Integer.parseInt(typeId));
  //System.out.println("总页数:"+toatlpage);
  //跳转
  if(flowerList!=null&&flowerList.size()>0){
   HttpSession session=req.getSession();
   session.setAttribute("flowerList", flowerList);
   session.setAttribute("pageNum", pageNum);
   session.setAttribute("pageSize", pageSize);
   session.setAttribute("toatlpage", toatlpage);
   if(Integer.parseInt(typeId)==0)
   {
    resp.sendRedirect("flower.jsp");
   }
   else if(Integer.parseInt(typeId)==1)
   {
    resp.sendRedirect("cake.jsp");
   }
   else if(Integer.parseInt(typeId)==2)
   {
    resp.sendRedirect("gift.jsp");
   }
   else if(Integer.parseInt(typeId)==3)
   {
    resp.sendRedirect("lvZhiHuaHui.jsp");
   }
   else if(Integer.parseInt(typeId)==4)
   {
    resp.sendRedirect("shangWu.jsp");
   }
  }else{
   resp.sendRedirect("error.jsp");
  }
 }
 protected void AdminSearchAll(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
  //实现分页中的上一页和下一页
  int pageNum=0;//初始化当前页
  int pageSize=0;//初始化页大小
  String pn=req.getParameter("pn");
  if(pn==null){
   pageNum=1;
   pageSize=10;
  }
  else{
   pageNum=Integer.parseInt(pn); 
   pageSize=10;
  }
  ArrayList<Flower> flowerList=(ArrayList<Flower>) fdao.AdminsearchPage(pageNum, pageSize);
  int toatlpage=fdao.AdmingetTotalPage(pageSize);
  if(flowerList!=null&&flowerList.size()>0){
   HttpSession session=req.getSession();
   session.setAttribute("flowerList", flowerList);
   session.setAttribute("pageNum", pageNum);
   session.setAttribute("pageSize", pageSize);
   session.setAttribute("toatlpage", toatlpage);
   resp.sendRedirect("Admin/flowerList.jsp");
  }else{
   resp.sendRedirect("error.jsp");
  }
 }
}
 3.分页
<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'orderList.jsp' starting page</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
  <script type="text/javascript">
    function go(){
     var p=document.getElementById("p").value;
     var maxpage=document.getElementById("maxpage").value;//注意:开始想写个隐藏域,但是js中不支持隐藏域。注意这里通过id获得值不支持使用type="hidde"
     //alert("设计出:"+p+" "+maxpage);
     if(p>maxpage){
     alert("你输入的页数过大,请重写输入");
      //window.history.back();
      return;
     }else{
     window.location.href="../orderServlet?op=AdminfindOrdersPage&pn="+p;
     }
    }
    </script>
 
<link href="CSS/style.css" rel="stylesheet" type="text/css">
    <link href="../CSS/style.css" rel="stylesheet" type="text/css">
  </head>
  <script type="text/javascript" src="JS/amdinDivControl.js"></script>
  <body>
  <br>
  <form name="form1" method="post" action="DeleteServlet?type=order">
    <table width="605" height="102" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#84C1C1">
      <tr>
        <td width="76" height="35" align="center" bgcolor="#84C1C1" class="font"><input type="submit" name="Submit" value="删除" onClick="deleteE()"></td>
        <td width="105" align="center" bgcolor="#84C1C1" class="font">订单编号</td>
        <td width="106" align="center" bgcolor="#84C1C1" class="font">订单人</td>
        <td width="110" align="center" bgcolor="#84C1C1" class="font">订单总价</td>
        <td width="133" align="center" bgcolor="#84C1C1" class="font">订单状态</td>
        <td width="198" align="center" bgcolor="#84C1C1" class="font">订单时间</td>
      </tr>
      <c:forEach items="${orderList}" var="order">
      <tr>
        <td height="33" align="center" bgcolor="#FFFFFF" class="font"><input type="checkbox" name="checkbox" value="${order.orderId}"></td>
        <td align="center" bgcolor="#FFFFFF" class="font">${order.orderCode }</td>
        <td align="center" bgcolor="#FFFFFF" class="font">${order.userName }</td>
        <td align="center" bgcolor="#FFFFFF" class="font">${order.total }</td>
        <td align="center" bgcolor="#FFFFFF" class="font">${order.orderStatus==1?"正在处理":"完成交易"}</td>
        <td align="center" bgcolor="#FFFFFF" class="font">${order.orderTime}</td>
      </tr>
      </c:forEach>
      <tr>
        <td height="29" colspan="6" align="right" bgcolor="#FFFFFF" class="font">
        <c:choose>
      <c:when test="${pageNum eq 1}">
         <a href="orderServlet?op=AdminfindOrdersPage&pn=${pageNum+1}" style="text-decoration: none;">下一页</a>
         <a href="orderServlet?op=AdminfindOrdersPage&pn=${toatlpage}" style="text-decoration: none;">末页</a>  
      </c:when>
      <c:when test="${pageNum eq toatlpage}">
      <a href="orderServlet?op=AdminfindOrdersPage&pn=${pageNum-1 }"style="text-decoration: none;">上一页</a>
      <a href="orderServlet?op=AdminfindOrdersPage&pn=1" style="text-decoration: none;">首页</a>                       
      </c:when>
      <c:otherwise>
           <a href="orderServlet?op=AdminfindOrdersPage&pn=${pageNum+1}" style="text-decoration: none;">下一页</a>
        <a href="orderServlet?op=AdminfindOrdersPage&pn=${pageNum-1 }"style="text-decoration: none;">上一页</a>
        <a href="orderServlet?op=AdminfindOrdersPage&pn=1" style="text-decoration: none;">首页</a>
        <a href="orderServlet?op=AdminfindOrdersPage&pn=${toatlpage}" style="text-decoration: none;">末页</a>             
      </c:otherwise>
  </c:choose> 
           当前页:<input type="text" value="${pageNum }" readonly="readonly" size="4">&nbsp; 
           共<input type="text" value="${toatlpage }" id="maxpage" readonly="readonly" size="4">页    
           <input type="text" size="4" id="p" value="${pageNum}">           
           <a href="javascript:go()">go</a> 
        </td>
      </tr>
    </table>
  </form>
  </body>
</html>
 
分享到:
评论

相关推荐

    j2ee:servlet练习短信项目,包含过滤器的使用、EL表达式和JSTL标准标签库的使用

    标题 "j2ee:servlet练习短信项目,包含过滤器的使用、EL表达式和JSTL标准标签库的使用" 描述了一个基于J2EE平台的短信服务项目的实践,其中涵盖了多个关键的Java Web开发技术。这个项目不仅涉及到Servlet的编程,还...

    J2EE JSP 购物车 源代码

    J2EE JSP SERVLET 网上商城 购物车 源代码,J2EE JSP SERVLET 网上商城 购物车 源代码,J2EE JSP SERVLET 网上商城 购物车 源代码,J2EE JSP SERVLET 网上商城 购物车 源代码,J2EE JSP SERVLET 网上商城 购物车 源...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...

    j2ee视频servlet视频教程

    资源名称:j2ee视频servlet视频教程资源目录:【】j2ee视频servlet第0讲开山【】j2ee视频实战教程servlet第1讲初识【】j2ee视频实战教程servlet第2讲(上集)【】j2ee视频实战教程servlet第2讲(下集)【】j2ee视频实战...

    ajax分页案例1-j2ee

    【标题】"Ajax分页案例1-j2ee"是一个典型的Web开发中的技术应用,主要涉及到JavaScript、Ajax、JSP和Servlet等技术。Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的...

    J2EE中JSONJquery_AJAX应用中文PDF版

    资源名称:J2EE中JSON Jquery_AJAX应用 中文PDF版内容简介:本文档主要讲述的是J2EE中JSON Jquery_AJAX应用;主要是描述使用JSON JQuery_AJAX实现页面动态加载与页面表单数据的异步保存。首先页面通过调用JQuery_...

    非常简单的J2EE购物车

    在这个购物车项目中,Servlet可能是用来处理用户请求,如添加商品、删除商品等操作的核心组件。 3. **JSP(JavaServer Pages)**:JSP是动态网页技术,用于生成HTML或XML响应。在J2EE购物车应用中,JSP页面通常用于...

    j2ee17:servlet01:jsp结束,servlet的配置和生命周期

    在本文中,我们将深入探讨J2EE 1.7中的Servlet技术,特别是在Servlet与JSP交互方面的知识。Servlet是Java平台上的一个核心组件,用于处理HTTP请求并生成动态响应。在"Servlet01:jsp结束,servlet的配置和生命周期...

    j2ee22:json

    综上所述,J2EE中的JSON应用涉及到后端Servlet处理、Ajax请求、JSON数据的序列化和反序列化、前端的分页实现以及RESTful API设计等多个方面,是一个涉及全栈开发的关键技能。在实际项目中,理解和掌握这些知识点有助...

    ajax假分页(J2ee)

    **Ajax假分页技术在J2EE环境中的应用** 在J2EE开发中,分页是一种常见的用户界面设计策略,用于处理大量数据的显示。传统的分页方式会通过服务器端处理,每次请求新页时都会刷新整个页面。然而,随着前端技术的发展...

    J2EE中JSON+Jquery_AJAX应用

    在"J2EE中JSON+Jquery_AJAX应用"的示例中,可能涉及到的场景包括动态表格更新、表单验证、分页加载、实时搜索等。例如,用户在搜索框输入关键词时,页面可以通过AJAX发送请求到服务器,服务器返回匹配的JSON数据,...

    J2EE 基于servlet项目的邮箱项目

    在J2EE项目中,Servlet扮演着核心角色,负责接收客户端请求,处理业务逻辑,并将结果返回给客户端。 本项目的重点在于实现邮件服务的基本功能。以下是一些关键知识点: 1. **用户登录与注册**:登录和注册功能是...

    J2EE&Servlet API 帮助文档

    **J2EE&Servlet API 帮助文档详解** J2EE(Java 2 Platform, Enterprise Edition)是Java平台的企业版,它为构建分布式、多层的企业级应用程序提供了全面的框架和服务。J2EE的核心是Java Servlet API,它是用于开发...

    J2EE JAR包(J2EE1.3 J2EE1.4 J2EE5.0 )

    Java 企业版(Java 2 Platform, Enterprise Edition,简称 J2EE)是 Sun Microsystems 推出的用于构建分布式、多层企业级应用的框架。它为开发者提供了多种服务和组件模型,包括Java Servlets、JavaServer Pages ...

    j2ee_servlet_api.zip免费下载

    【标题】"j2EE Servlet API" 在Java世界中,J2EE(Java 2 Platform, Enterprise Edition)是一个用于开发和部署企业级应用程序的框架。Servlet API是J2EE核心组件之一,它提供了服务器端编程的能力,使得开发者可以...

    J2EE中JSON+Jquery_AJAX应用.pdf

    JSON+jQuery AJAX 在 J2EE 项目中的应用是现代 Web 开发中常见的一种技术组合,主要用来实现页面的动态加载和表单内容的异步提交,以提高用户体验和交互性能。下面将详细介绍这一技术的各个关键点。 1. **概述** ...

Global site tag (gtag.js) - Google Analytics