MVC模式+DAO+MySQL+jsp+servlet 简单的购物车案例

题外话

购物车案例需求核心系统组成

Javaweb项目框架基本思想

核心代码DaoBookDao

listenerSessionListener

servletAddServletInitServletRemoveServlet

voBook

.jspbuyForm.jspshowAllBook.jspshowCart.jsp

targetpom.xml

WEB-INFweb.xml

lib运行

简单的购物车案例)

题外话

项目支持的教材 :Java web程序设计(第3版)微课视频版 主编郭克华老师······ 教材的实训部分有好几个应用,这里主要是将私信很多提到的教材中讲到的【购物系统】这一实训核心代码进行整合。 展示结果也属于简单的购物车(复杂一点的购物车后续讲解,先把基本的增删查改了解清楚,美化展示的jsp界面也就不是什么问题)

购物车案例需求

本项目基于MVC模式制作的一个购物程序(简易),可以供用户在网页上订购教材。需要用到数据库,过滤器,监听器。

核心

1.将数据库查询的代码写在DAO内,然后用jsp调用DAO。DAO通过查询得到相应的结果,返回给用户。 2.将VO(value object)配合DAO来使用,在DAO中可以每查询到一条记录就将其封装为ursert对象,该对象属于VO。最后将所有实例化的VO 存放在集合内返回。这样就可以实现层次分开,降低耦合度。

注:数据库需要MySQL来检查图书信息以及后续选购等的调用。 MySQL下载配置好后,可以直接在编辑器(我这里用的IDE,eclipse也可以)如下图建立并连接数据库进行编辑。当然也可以在MySQL里面建好架构,然后建表编辑数据也可以。

系统组成

本系统主要是3个页面组成: 1.运行系统,出现显示所有书本的界面。本界面中,标题是“欢迎选购图书”。界面上显示所有图书及价格,同时每种图书后面都有一个“购买”链接。

2.点击“购买”链接,会跳转到购买界面。(数量是手工输入)

3.输入购买数量并提交,能将所购买的书存入购物车。存入后跳转带显示购物车所有内容的界面。

Javaweb项目框架

基本思想

(1)基于MVC模式。思想步骤主要是: 用户在表单中输入,将表单提交给servlet,servlet验证输入,然后实例化Javabean。 Javabean查询数据库,查询结果暂存在Javabean中。 Servlet跳转到jsp,jsp使用Javabean,得到它里面的查询结果,并显示出来。 (2)本项目需要一个DAO来查询图书,一个VO来封装某一种图书信息。 购物车中的图书用集合来存储,这里使用HashMap来保存图书,可以进行比较方便地删除和访问。HashMap以key-value形式保存数据,这样可以将图书的key值设置成该图书的编号,在访问时候可以直接通过key值定位。 (3)设计一个listener监听器来使用户访问网站时购物车就可以进行初始化,也就是对session的内容进行初始化。 (4)用户先访问的是InitServlet,负责查询所有图书,然后跳转到showAllBook.jsp页面。若不先访问InitServlet,直接去访问showAllBook.jsp,会抛出异常。

核心代码

Dao

BookDao

负责查询图书,验证用户的合法身份:

package Dao;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

import java.util.HashMap;

import vo.Book;

public class BookDao {

private Connection conn = null;

public HashMap getAllBook() throws Exception{

HashMap hm = new HashMap();

this.initConnection();

Statement stat = conn.createStatement();

String sql =

"SELECT BOOKNO,BOOKNAME,BOOKPRICE FROM T_BOOK";

ResultSet rs = stat.executeQuery(sql);

while(rs.next()){

Book book = new Book();

book = new Book();

book.setBookno(rs.getString("bookno"));

book.setBookname(rs.getString("bookname"));

book.setBookprice(rs.getFloat("bookprice"));

hm.put(book.getBookno(),book);

}

this.closeConnection();

return hm;

}

public void initConnection() throws Exception{

Class.forName("com.mysql.cj.jdbc.Driver");

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/webdatabase?characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false", "root", "123456");

}

public void closeConnection() throws Exception{

conn.close();

}

}

listener

SessionListener

监听器,负责对session内容进行初始化:

package listener;

import java.util.HashMap;

import javax.servlet.http.HttpSession;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

public class SessionListener implements HttpSessionListener{

public void sessionCreated(HttpSessionEvent event) {

HttpSession session = event.getSession();

//初始化购物车

HashMap books = new HashMap();

session.setAttribute("books",books);

//初始化总钱数

session.setAttribute("money",0F);

}

public void sessionDestroyed(HttpSessionEvent arg0) {}

}

servlet

AddServlet

将购买的图书存入购物车,跳转到showCart.jsp页面:

package servlet;

import java.io.IOException;

import java.util.HashMap;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import vo.Book;

@WebServlet("/AddServlet")

public class AddServlet extends HttpServlet {

@Override

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// TODO Auto-generated method stub

request.setCharacterEncoding("gb2312");

HttpSession session = request.getSession();

HashMap books = (HashMap) session.getAttribute("books");

// 获取提交的内容

String bookno = request.getParameter("bookno");

String bookname = request.getParameter("bookname");

String strBookprice = request.getParameter("bookprice");

String strBooknumber = request.getParameter("booknumber");

// 存入购物车

Book book = new Book();

book.setBookno(bookno);

book.setBookname(bookname);

float bookprice = Float.parseFloat(strBookprice);

book.setBookprice(bookprice);

int booknumber = Integer.parseInt(strBooknumber);

book.setBooknumber(booknumber);

books.put(bookno, book);

// 总钱数增加

float money = (Float) session.getAttribute("money");

money = money + bookprice * booknumber;

session.setAttribute("money", money);

response.sendRedirect("showCart.jsp");

}

}

InitServlet

查询所有图书,然后跳转到showAllBook.jsp页面:

package servlet;

import java.io.IOException;

import java.util.HashMap;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import Dao.BookDao;

import vo.Book;

@WebServlet("/InitServlet")

public class InitServlet extends HttpServlet {

@Override

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

BookDao bdao = new BookDao();

HashMap allbook = null;

try {

allbook = bdao.getAllBook();

} catch (Exception e) {

e.printStackTrace();

}

request.getSession().setAttribute("allbook", allbook);

response.sendRedirect("showAllBook.jsp");

}

}

RemoveServlet

从购物车中删除某种图书,并跳转到showCart.jsp页面:

package servlet;

import java.io.IOException;

import java.util.HashMap;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import vo.Book;

@WebServlet("/RemoveServlet")

public class RemoveServlet extends HttpServlet {

@Override

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding("gb2312");

String bookno = request.getParameter("bookno");

HttpSession session = request.getSession();

HashMap books = (HashMap)session.getAttribute("books");

Book book = (Book)books.get(bookno);

//总钱数减少

float money = (Float)session.getAttribute("money");

money = money - book.getBooknumber()*book.getBookprice();

session.setAttribute("money", money);

//移除相应图书

books.remove(bookno);

response.sendRedirect("showCart.jsp");

}

}

vo

Book

VO类封装图书的信息:

package vo;

public class Book {

private String bookno;

private String bookname;

private float bookprice;

private int booknumber;

public String getBookno() {

return bookno;

}

public void setBookno(String bookno) {

this.bookno = bookno;

}

public String getBookname() {

return bookname;

}

public void setBookname(String bookname) {

this.bookname = bookname;

}

public float getBookprice() {

return bookprice;

}

public void setBookprice(float bookprice) {

this.bookprice = bookprice;

}

public int getBooknumber() {

return booknumber;

}

public void setBooknumber(int booknumber) {

this.booknumber = booknumber;

}

}

.jsp

buyForm.jsp

显示买书页面:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

<%@page import="vo.Book"%>

buyForm

<%

String bookno = request.getParameter("bookno");

HashMap allbook = (HashMap)session.getAttribute("allbook");

Book book = (Book)allbook.get(bookno);

%>

欢迎购买:<%=book.getBookname()%>

书本价格:<%=book.getBookprice()%>

数量:

showAllBook.jsp

显示所有图书:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

<%@page import="vo.Book"%>

欢迎选购图书

<%

HashMap allbook = (HashMap)session.getAttribute("allbook");

Set set = allbook.keySet();

Iterator ite = set.iterator();

while(ite.hasNext()){

String bookno = (String)ite.next();

Book book = (Book)allbook.get(bookno);

%>

<%} %>

书本名称书本价格购买
<%=book.getBookname()%><%=book.getBookprice()%>购买

查看购物车

showCart.jsp

显示购物车中所有内容:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

<%@page import="vo.Book"%>

<%

HashMap books = (HashMap)session.getAttribute("books");

Set set = books.keySet();

Iterator ite = set.iterator();

while(ite.hasNext()){

String bookno = (String)ite.next();

Book book = (Book)books.get(bookno);

%>

<%

}

%>

书本名称书本价格数量删除
<%=book.getBookname()%><%=book.getBookprice()%><%=book.getBooknumber()%>删除

现金总额:<%=session.getAttribute("money")%>


继续买书

target

pom.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

https://maven.apache.org/maven-v4_0_0.xsd">

4.0.0

com.companyname.bank

consumerBanking

jar

1.0-SNAPSHOT

consumerBanking

https://maven.apache.org

junit

junit

3.8.1

test

mysql

mysql-connector-java

5.1.38

javax.servlet.jsp.jstl

jstl-api

1.2

taglibs

standard

1.1.2

WEB-INF

web.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

version="4.0"

metadata-complete="true">

Welcome to Tomcat

Welcome to Tomcat

listener.SessionListener

This is the description of my J2EE component

This is the display name of my J2EE component

InitServlet

servlet.InitServlet

InitServlet

/InitServlet

This is the description of my J2EE component

This is the display name of my J2EE component

AddServlet

servlet.AddServlet

AddServlet

/AddServlet

This is the description of my J2EE component

This is the display name of my J2EE component

RemoveServlet

servlet.RemoveServlet

RemoveServlet

/RemoveServlet

buyForm.jsp

showAllBook.jsp

showCart.jsp

lib

需要的lib包请在Tomcat下的lib包里复制,没有的去网上下载。

运行

注 URL:http://localhost:8080/InitServlet

(用户首先访问的是InitServlet)

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: