博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
尚硅谷ajax视频教程2
阅读量:6616 次
发布时间:2019-06-24

本文共 10745 字,大约阅读时间需要 35 分钟。

7、7. 尚硅谷_佟刚_Ajax_典型应用_验证用户名是否可用

整个项目的目录路径如下所示

我们首先新建立一个web工程,在webroot下面新建立一个script的文件夹,导入jquer文件

接下来我们编写index.jsp文件,通过ajax的方式校验该用户名是否在后台已经被注册

index.jsp文件内容如下所示:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>        

查询用户名是否被注册

在后台我们编写一个servlet用于处理客户端的请求

package com.weiyuan.test;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class UserNameServlet extends HttpServlet {    /**     * Constructor of the object.     */    public UserNameServlet() {        super();    }    /**     * Destruction of the servlet. 
*/ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet.
* * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } /** * The doPost method of the servlet.
* * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); //首先获得客户端请求过来传递的参数 String username = request.getParameter("username"); System.out.println("username :"+username); String result = ""; if(username != null){ if("aaa".equalsIgnoreCase(username) || "bbb".equalsIgnoreCase(username)){ result= "该用户名已经被注册 * * @throws ServletException if an error occurs */ public void init() throws ServletException { // Put your code here }}

该servlet需要在web.xml中配置映射路径,web.xml配置文件如下所示

TestAjax
This is the description of my J2EE component
This is the display name of my J2EE component
UserNameServlet
com.weiyuan.test.UserNameServlet
UserNameServlet
/UserNameServlet
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp

我们来看看程序运行的效果

相当的经典。

 8、8. 尚硅谷_佟刚_Ajax_典型应用_添加商品

现在我们要实现购物车中,当用户点击某条购物项的时候,页面不发生跳转能够自动的发生变化

当点击某个菜单项的数据的增删的时候总的书的数量和总价会自动的发生变化,我们采用ajax的方式来实现,页面不发生跳转

这里主要是后台实现比较复杂

这里的页面是由每一个购物车的菜单项构成的,由多个菜单项。一个菜单项应该包括:当前购买书的类型,当前购买的数量,以及当前购买书数量的价格

然后遍历每个菜单项就可以获得当前购物车总的数量和价格了

我们首先定义一个商品的实体类

package cn.itcast.shop.product.beans;import java.util.Date;/** * 商品的实体对象 * @author 传智.郭嘉 * */public class Product {    private Integer pid;    //商品的名称    private String pname;    //商品的市场价格    private Double market_price;    //商品的现场价格    private Double shop_price;    //商品的图片地址    private String image;    //商品的具体描述    private String pdesc;    //是否是热门商品    private Integer is_hot;    //商品的上传日期    private Date pdate;      public Integer getPid() {        return pid;    }    public void setPid(Integer pid) {        this.pid = pid;    }    public String getPname() {        return pname;    }    public void setPname(String pname) {        this.pname = pname;    }    public Double getMarket_price() {        return market_price;    }    public void setMarket_price(Double market_price) {        this.market_price = market_price;    }    public Double getShop_price() {        return shop_price;    }    public void setShop_price(Double shop_price) {        this.shop_price = shop_price;    }    public String getImage() {        return image;    }    public void setImage(String image) {        this.image = image;    }    public String getPdesc() {        return pdesc;    }    public void setPdesc(String pdesc) {        this.pdesc = pdesc;    }    public Integer getIs_hot() {        return is_hot;    }    public void setIs_hot(Integer is_hot) {        this.is_hot = is_hot;    }    public Date getPdate() {        return pdate;    }    public void setPdate(Date pdate) {        this.pdate = pdate;    }    }

 

第二步我们新建立一个购物车的菜单项,里面包括弄购物的商品,购买当前商品的数量,购物车由多个购物项构成

package cn.itcast.shop.cart.beans;import cn.itcast.shop.product.beans.Product;/** * 购物项对象 * @author 传智.郭嘉 * */public class CartItem {    private Product product;    // 购物项中商品信息    private int count;            // 购买某种商品数量    private double subtotal;    // 购买某种商品小计    public Product getProduct() {        return product;    }    public void setProduct(Product product) {        this.product = product;    }    public int getCount() {        return count;    }    public void setCount(int count) {        this.count = count;    }    // 小计自动计算的.    public double getSubtotal() {        return count * product.getShop_price();    }    /*public void setSubtotal(double subtotal) {        this.subtotal = subtotal;    }    */    }

 

第三步:我们封装购物车对象,对购物车进行操作包括购物车的增删改查操作

package cn.itcast.shop.cart.beans;import java.io.Serializable;import java.util.Collection;import java.util.LinkedHashMap;import java.util.Map;/** * 购物车对象 *  * @author 传智.郭嘉 *  */public class Cart implements Serializable{    // 购物车属性    // 购物项集合:Map的key就是商品pid,value:购物项    private Map
map = new LinkedHashMap
(); // Cart对象中有一个叫cartItems属性. public Collection
getCartItems(){ return map.values(); } // 购物总计: private double total; public double getTotal() { return total; } // 购物车的功能: // 1.将购物项添加到购物车 public void addCart(CartItem cartItem) { // 判断购物车中是否已经存在该购物项: /* * * 如果存在: * * 数量增加 * * 总计 = 总计 + 购物项小计 * * 如果不存在: * * 向map中添加购物项 * * 总计 = 总计 + 购物项小计 */ // 获得商品id. Integer pid = cartItem.getProduct().getPid(); // 判断购物车中是否已经存在该购物项: if(map.containsKey(pid)){ // 存在 CartItem _cartItem = map.get(pid);// 获得购物车中原来的购物项 _cartItem.setCount(_cartItem.getCount()+cartItem.getCount()); }else{ // 不存在 map.put(pid, cartItem); } // 设置总计的值 total += cartItem.getSubtotal(); } // 2.从购物车移除购物项 public void removeCart(Integer pid) { // 将购物项移除购物车: CartItem cartItem = map.remove(pid); // 总计 = 总计 -移除的购物项小计: total -= cartItem.getSubtotal(); } // 3.清空购物车 public void clearCart() { // 将所有购物项清空 map.clear(); // 将总计设置为0 total = 0; }}

 

这里需要注意的是在购物车的Cart类中封装了一个方法

// Cart对象中有一个叫cartItems属性.    public Collection
getCartItems(){ return map.values(); }

 

将购物车的购物项封装成一个set集合,这样在jsp页面的时候就可以对cartItems集合进行遍历,相当于在Cart类之后定义一个cartItems成员变量,提供了外界可以访问的get方法

如下图片所示

 

现在我们写一个简单的页面,通过ajax模拟下面的操作获得对应总的数量和操作

package com.weiyuan.test;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import cn.itcast.shop.cart.beans.Cart;import cn.itcast.shop.cart.beans.CartItem;import cn.itcast.shop.product.beans.Product;public class ProductServlet extends HttpServlet {    /**     * Constructor of the object.     */    public ProductServlet() {        super();    }    /**     * Destruction of the servlet. 
*/ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } /** * The doPost method of the servlet.
* * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //默认都是添加操作 //首先获得你添加进来的商品的id和商品的价格 String product_id = request.getParameter("product_id"); String product_proce = request.getParameter("product_price"); System.out.println("product_id:"+product_id); System.out.println("product_price"+product_proce); //将字符串转化成id类型 int id = Integer.parseInt(product_id); Double shop_price = Double.parseDouble(product_proce); Product product = new Product(); if(id == 1){ //说明是java对象 product.setPid(1); product.setPname("java"); product.setShop_price(shop_price); } if(id == 2){ //说明是mysql对象 product.setPid(2); product.setPname("mysql"); product.setShop_price(shop_price); } //创建一个购物车菜单项将购物车添加到菜单项中 CartItem cartItem = new CartItem(); cartItem.setProduct(product); //默认每次都是购买一本 cartItem.setCount(1); //然后获得购物车 Cart cart = (Cart) request.getSession().getAttribute("cart"); if (cart == null) { cart = new Cart(); request.getSession().setAttribute("cart", cart); } //cartItem添加到购物车中 cart.addCart(cartItem); //获得购物车中总的购买的商品和价格返回给客户端 //我们采用字符串 } /** * 获得购物车的方法:从session中获得购物车. * @return */ private Cart getCart() { return cart;}

 

转载于:https://www.cnblogs.com/kebibuluan/p/8886844.html

你可能感兴趣的文章
阿里云中间件技术 促进互联网高速发展
查看>>
Fusion-io: 全闪存超大规模数据中心时代的到来
查看>>
LSI针对富士通服务器推出高密度SAS存储设备
查看>>
XtremIO推第二代设备 在块存储上增加文件特性
查看>>
什么是高可用性(HA)?HA是什么
查看>>
82岁成都“极客”老人将族谱“上云” 还想去杭州云栖大会见马云
查看>>
智能时代悄然到来 物联网称王将引爆传感器产业
查看>>
Palo Alto Networks推出云应用框架
查看>>
物理隔离计算机被USB蜜蜂刺破 数据通过无线信号泄露
查看>>
大数据安全分析成未来方向 360市场份额第一
查看>>
利用一点机器学习来加速你的网站
查看>>
安天研究报告:白象的舞步——来自南亚次大陆的网络攻击
查看>>
中国域名现状:应用水平较低,安全仍存隐患
查看>>
Java中HashMap的原理分析
查看>>
React Native入门项目与解析
查看>>
云计算:大势所趋 你准备好了么?
查看>>
看行业观察家和技术专家对大数据在2017年的发展预测
查看>>
可将Windows 10 ISO转为安装U盘的小工具汇总介绍
查看>>
做不好消息推送的摄像头,怎么好意思叫“智能”?
查看>>
OpenStack更新:最小化风险和停机时间
查看>>