jdbcExample.java
package cn.demo.jdbc.example;
import java.sql.*;
public class jdbcExample {
public static void main(String[] args) {
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
//1、注册数据库的驱动
try {
Class.forName("com.mysql.cj.jdbc.Driver");
//2、通过DriverManager获取数据库链接
String url = "jdbc:mysql://localhost:3306/jspone";
String username = "root";
String password = "root12345";
conn = DriverManager.getConnection(url,username,password);
System.out.println("conn"+conn);
//3、通过Connection对象获取statement对象
stmt = conn.createStatement();
//4、使用statement执行SQL语句
String sql = "select * from user";
rs = stmt.executeQuery(sql);
//5、操作ResultSet结果集
System.out.println(" id | name | password ");
while(rs.next()) {
String name = rs.getString("username");
String pwd = rs.getString("password");
String hobby = rs.getString("hobby");
System.out.println(" "+name+" | "+pwd+" | "+hobby);
}
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Cart.java
package cn.demo.shopcar;
public class Cart {
private String name;
private double price;
private int num;//购买数量
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
Goods.java
package cn.demo.shopcar;
public class Goods {
private String name;
private double price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
index.jsp
<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="java.util.ArrayList" %>
<%@ page import="cn.demo.shopcar.Goods" %>
<%!
static ArrayList goodslist=new ArrayList(); //用来存储商品
static{ //静态代码块
String[] names={"苹果","香蕉","梨","橘子"}; //商品名称
double[] prices={2.8,3.1,2.5,2.3}; //商品价格
for(int i=0;i<4;i++){ //初始化商品信息列表
//定义一个GoodsSingle类对象来封装商品信息
Goods goods=new Goods();
goods.setName(names[i]); //封装商品名称信息
goods.setPrice(prices[i]); //封装商品价格信息
//goods.setNum(1); //封装购买数量信息
goodslist.add(i,goods); //保存商品到goodslist集合对象中
}
}
%>
<%
session.setAttribute("goodslist",goodslist); //保存商品列表到session中
response.sendRedirect("show.jsp"); //跳转到show.jsp页面显示商品
%>
show.jsp
<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="java.util.ArrayList" %>
<%@ page import="cn.demo.shopcar.Goods" %>
<% ArrayList goodslist=(ArrayList)session.getAttribute("goodslist"); %>
<table border="1" width="450" rules="none" cellspacing="0" cellpadding="0">
<tr height="50"><td colspan="3" align="center">提供商品如下</td></tr>
<tr align="center" height="30" bgcolor="lightgrey">
<td>名称</td>
<td>价格(元/斤)</td>
<td>购买</td>
</tr>
<% if(goodslist==null||goodslist.size()==0){ %>
<tr height="100"><td colspan="3" align="center">没有商品可显示!</td></tr>
<%
}
else{
for(int i=0;i<goodslist.size();i++){
Goods goods=(Goods)goodslist.get(i);
%>
<tr height="50" align="center">
<td><%=goods.getName()%></td>
<td><%=goods.getPrice()%></td>
<td><a href="do_car.jsp?action=buy&id=<%=i%>">购买</a></td> <!-- id表示商品在集合中的序号 -->
</tr>
<%
}
}
%>
<tr height="50">
<td align="center" colspan="3"><a href="shopcar.jsp">查看购物车</a></td>
</tr>
</table>
do_car.jsp
<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="java.util.ArrayList" %>
<%@ page import="cn.demo.shopcar.*"%>
<%
ArrayList<Cart> cartlist = (ArrayList<Cart>)session.getAttribute("cartlist");
String action=request.getParameter("action");
if(action==null)
action="";
if(action.equals("buy")){ //购买商品
ArrayList goodslist=(ArrayList)session.getAttribute("goodslist");
int id =Integer.parseInt(request.getParameter("id")) ;
Goods good=(Goods)goodslist.get(id);
Cart cart = new Cart();
cart.setName(good.getName());
cart.setPrice(good.getPrice());
cart.setNum(1);
if(cartlist==null){//第一次添加的时候,集合还不存在的时候
cartlist = new ArrayList<Cart>();
}
boolean hasCart = false;
for(Cart c : cartlist){
if(c.getName().equals(cart.getName())){//购买相同的商品的时候
c.setNum(c.getNum()+cart.getNum());
hasCart = true;
break;
}
}
if(!hasCart)
cartlist.add(cart);
session.setAttribute("cartlist", cartlist);
response.sendRedirect("shopcar.jsp");
}
else if(action.equals("remove")){ //移除商品
String name=request.getParameter("name"); //获取商品名称
for(int i = 0 ; i < cartlist.size() ; i++){
Cart c = cartlist.get(i);
if(c.getName().equals(name)){
cartlist.remove(i);
break;
}
}
response.sendRedirect("shopcar.jsp");
}
else if(action.equals("clear")){ //清空购物车
cartlist.clear();
response.sendRedirect("shopcar.jsp");
}
else if(action.equals("append")){ //加商品
String name = request.getParameter("name");
for(Cart c : cartlist){
if(c.getName().equals(name)){
c.setNum(c.getNum()+1);
break;
}
}
response.sendRedirect("shopcar.jsp");
}
else if(action.equals("minus")){ //减商品
String name = request.getParameter("name");
for(int i = 0 ; i < cartlist.size() ; i++){
Cart c = cartlist.get(i);
if(c.getName().equals(name)){
if(c.getNum()>1){
c.setNum(c.getNum()-1);
break;
}else if(c.getNum()==1){
cartlist.remove(i);
}
}
}
response.sendRedirect("shopcar.jsp");
}
/*
else{
response.sendRedirect("show.jsp");
}
*/
%>
shopcar.jsp
<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="java.util.ArrayList" %>
<%@ page import="cn.demo.shopcar.*" %>
<!-- 通过动作标识,获取ShopCar类实例 -->
<%
ArrayList<Cart> cartlist = (ArrayList<Cart>)session.getAttribute("cartlist"); //获取实例中用来存储购买的商品的集合
double total=0; //用来存储应付金额
%>
<table border="1" width="450" rules="none" cellspacing="0" cellpadding="0">
<tr height="50"><td colspan="5" align="center">购买的商品如下</td></tr>
<tr align="center" height="30" bgcolor="lightgrey">
<td width="25%">名称</td>
<td>价格(元/斤)</td>
<td>数量</td>
<td>总价(元)</td>
<td>移除</td>
</tr>
<% if(cartlist==null||cartlist.size()==0){ %>
<tr height="100"><td colspan="5" align="center">您的购物车为空!</td></tr>
<%
}
else{
for(int i=0;i<cartlist.size();i++){
Cart cart=(Cart)cartlist.get(i);
String name=cart.getName(); //获取商品名称
double price=cart.getPrice(); //获取商品价格
int num=cart.getNum(); //获取购买数量
double money=((int)((price*num+0.05)*10))/10.0; //计算当前商品总价
total+=(int)(money*10)/10.0; //计算应付金额
%>
<tr align="center" height="50">
<td><%=name%></td>
<td><%=price%></td>
<td>
<a href="do_car.jsp?action=append&name=<%=name%>"><input type="button"style="width:14px"value="+"/></a>
<%=num%>
<a href="do_car.jsp?action=minus&name=<%=name%>"><input type="button"style="width:14px"value="-"/></a>
</td>
<td><%=money%></td>
<td>
<a href="do_car.jsp?action=remove&name=<%=cart.getName() %>">移除</a>
</td>
</tr>
<%
}
}
%>
<tr height="50" align="center"><td colspan="5">应付金额:<%=total%></td></tr>
<tr height="50" align="center">
<td colspan="2"><a href="show.jsp">继续购物</a></td>
<td colspan="3"><a href="do_car.jsp?action=clear">清空购物车</a></td>
</tr>
</table>