《学习内容》:
//========学习内容=========
购物系统练习
自己扩展了内容
《知识点—笔记》
//=========================
《代码内容》:
主要思路—->通过这个购物系统的项目,自己加上扩展了2给页面,可以在最后结算的时候,在下面加了一个
button按钮,然后把当前的总金额存在request对象作用域中,请求转发到付款页面,上面是接收结算的金额
下方是自己的微信二维码。
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %><html lang="en"><head><title>购物系统登录</title><script type="text/javascript">window.onload = function () {var regist = document.getElementById("regist")regist.onclick = function () {window.location.href = "regist.html";}}</script></head><%String loginResult = (String)session.getAttribute("loginResult");if (loginResult != null){out.write(loginResult+"<br>");}%><body><H2>购物系统 请您登录!</H2><table><form action="login" method="post"><tr><td>用户名:</td><td><input type="text" name="uname" value=""></td></tr><tr><td>密码:</td><td><input type="password" name="upassword" value=""></td></tr><tr><td><input type="submit" value="登录"></td><td><input type="button" id="regist" value="注册" ></td></tr></form></table></body></html>
LoginCont**roller**
package com.atanmo.gwxt.controller;import com.atanmo.gwxt.service.UserService;import com.atanmo.gwxt.util.MySpring;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 java.io.IOException;public class LoginController extends HttpServlet {private static UserService service = MySpring.getBean("com.atanmo.gwxt.service.UserService");protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//拿到账号 密码 调用业务层 判断登录request.setCharacterEncoding("UTF-8");String uname = request.getParameter("uname");String loginResult = service.login(uname, request.getParameter("upassword"));//把登录的结果 是否成功存进一次请求中request.setAttribute("loginResult",loginResult);if ("登录成功".equals(loginResult)){//将用户名 存入一次会话中HttpSession session = request.getSession();session.setAttribute("uname",uname);//重定向发起请求response.sendRedirect("selectAllKind");}else {request.getRequestDispatcher("login.jsp").forward(request,response);}}}
kind.jsp
<%@ page import="java.util.ArrayList" %><%@ page import="com.atanmo.gwxt.domain.Kind" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>购物系统-选择商品类别</title><script type="text/javascript">window.onload = function () {var KindSelect = document.getElementById("KindSelect");KindSelect.onchange = function () {window.location.href = "selectCommodity?kid="+this.value}}</script></head><body><h2>欢迎来到---不坑死你才怪---购物系统</h2><select id="KindSelect" name="kid"><option>===请选择===</option><%ArrayList<Kind> arrayList = (ArrayList<Kind>) session.getAttribute("allKind");for (Kind kind : arrayList){out.write("<option value='"+kind.getKID()+"'>"+kind.getKNAME()+"</option>");}%></select></body></html>
CloseMoney.js**p**
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>付款</title></head><body><table border="5" align="center" width="40%" height="40%"><tr fo><th>请付款 总计:<%=session.getAttribute("sumMoney")%></th></tr><tr><th><img src="static/img/closeMoneyjpg.jpg"></th></tr></table></body></html>
ShowClose.js**p**
<%@ page import="java.util.ArrayList" %><%@ page import="com.atanmo.gwxt.domain.Commodity" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>购物账单结算</title><script>window.onload = function () {var closeButton = document.getElementById("close")closeButton.onclick = function () {window.location.href = "closeMoney"}}</script></head><body><form action="closeShopping" method="post"><table border="6" align="center" width="60%" height="30"><tr><th>商品名称</th><th>商品价格</th></tr><%Float sumMoney = 0f;ArrayList<Commodity> shoppingCar = (ArrayList<Commodity>)session.getAttribute("shoppingCar");for (Commodity commodity : shoppingCar) {out.write("<tr>");out.write("<td>"+commodity.getCNAME()+"</td>");out.write("<td>"+commodity.getCPRINCE()+"</td>");out.write("</tr>");sumMoney += commodity.getCPRINCE();session.setAttribute("sumMoney",sumMoney);}%><tr><th>总计:</th><th><%=sumMoney%></th></tr></table><table border="1" align="center"><tr><td><input align="center" type="button" id="close" value="结算"></td></tr></table><input type="hidden" name="sumMoney" value="<%=sumMoney%>"></form></body></html>
showCommodi**tys.jsp**
<%@ page import="java.util.ArrayList" %><%@ page import="com.atanmo.gwxt.domain.Commodity" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>商品列表</title><style>td{text-align: center;}</style><script>window.onload = function () {var buttons = document.getElementsByClassName("countinueButton")for (var i = 0;i<buttons.length;i++){buttons[i].onclick = function () {var hidden = document.getElementById("hidden")hidden.value = this.valuevar submitForm = document.getElementById("submitForm")submitForm.submit();}}}</script></head><body><form id= 'submitForm' action="saveSelectedCommodity" method="post"><table border="5" align="center" width="60%" height="60%"><tr><th>已选商品</th><th>商品名称</th><th>商品单价</th></tr><%ArrayList<Commodity> commodities = (ArrayList<Commodity>) request.getAttribute("commodities");for (Commodity commodity : commodities){out.write("<tr>");out.write("<td><input type= 'checkbox' name='cid' value='"+commodity.getCID()+"'></td>");out.write("<td>"+commodity.getCNAME()+"</td>");out.write("<td>"+commodity.getCPRINCE()+"</td>");out.write("</tr>");}%><tr><td colspan="3"><input class= "countinueButton" type="button" value="继续购物"> || <input class="countinueButton" type="button" value="结算清单"></td></tr></table><input id='hidden' type="hidden" name="buttonValue" value=""></form></body></html>
CloseMoneyCon**troller**
package com.atanmo.gwxt.controller;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;public class CloseMoneyController extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");String sumMoney = request.getParameter("sumMoney");request.getRequestDispatcher("CloseMoney.jsp").forward(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}}
SaveSelectedComm**oditysController**
package com.atanmo.gwxt.controller;import com.atanmo.gwxt.domain.Commodity;import com.atanmo.gwxt.service.CommodityService;import com.atanmo.gwxt.util.MySpring;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 java.io.IOException;import java.util.ArrayList;public class saveSelectedCommodityController extends HttpServlet {private static CommodityService service = MySpring.getBean("com.atanmo.gwxt.service.CommodityService");protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");//获取前端的参数是 继续购物 还是 结算String buttonValue = request.getParameter("buttonValue");//获取前端的已选商品的参数String[] cids = request.getParameterValues("cid");HttpSession session = request.getSession();//到session中去拿这个集合ArrayList<Commodity> shoppingCar = (ArrayList<Commodity>)session.getAttribute("shoppingCar");if (shoppingCar == null){//调用service方法来通过shoppingCar = service.getSelectedCommodityList(cids);session.setAttribute("shoppingCar",shoppingCar);}//到此为止,已经把用户选择的商品全部存入了集合中 那么我们来判断他点的是继续购物还是 结算if ("继续购物".equals(buttonValue)){request.getRequestDispatcher("kind.jsp").forward(request,response);}else {request.getRequestDispatcher("ShowClose.jsp").forward(request,response);}System.out.println(buttonValue);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}}
SelectAllkindCon**troller**
package com.atanmo.gwxt.controller;
import com.atanmo.gwxt.domain.Kind;
import com.atanmo.gwxt.service.KindService;
import com.atanmo.gwxt.util.MySpring;
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 java.io.IOException;
import java.util.ArrayList;
public class SelectAllKindController extends HttpServlet {
private static KindService kindService = MySpring.getBean("com.atanmo.gwxt.service.KindService");
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//调用业务层方法 查询全部的类别
ArrayList<Kind> allKind = kindService.selectAllKind();
HttpSession session = request.getSession();
session.setAttribute("allKind",allKind);
request.getRequestDispatcher("kind.jsp").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
SelectCommodityCont**roller**
package com.atanmo.gwxt.controller;
import com.atanmo.gwxt.dao.CommodityDao;
import com.atanmo.gwxt.domain.Commodity;
import com.atanmo.gwxt.service.CommodityService;
import com.atanmo.gwxt.util.MySpring;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
public class SelectCommodityController extends HttpServlet {
private static CommodityService service = MySpring.getBean("com.atanmo.gwxt.service.CommodityService");
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String kid = request.getParameter("kid");
//调用业务层去给我找这个kid对应的全部商品
ArrayList<Commodity> commodities = service.selectAllCommmodity(Integer.parseInt(kid));
request.setAttribute("commodities",commodities);
request.getRequestDispatcher("showCommoditys.jsp").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
CommodityD**ao**
package com.atanmo.gwxt.dao;
import com.atanmo.gwxt.domain.Commodity;
import com.atanmo.gwxt.domain.Kind;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
@SuppressWarnings("all")
public class CommodityDao {
private String driver = "com.mysql.cj.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/shopping?serverTimezone=CST&characterEncoding=UTF-8";
private String username = "root";
private String password = "at123123";
public ArrayList<Commodity> selectAllCommodity(Integer kid) {
ArrayList<Commodity> kidOrmCommodity = new ArrayList<>();
Kind kind = null;
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);
String sql = "SELECT CID,CNAME,CPRINCE,KID FROM T_COMMODITY WHERE KID = ?";
PreparedStatement pstat = conn.prepareStatement(sql);
pstat.setInt(1,kid);
ResultSet rst = pstat.executeQuery();
while (rst.next()){
Commodity commodity = new Commodity(
rst.getInt("CID"),
rst.getString("CNAME"),
rst.getFloat("CPRINCE"),
kind = new Kind()
);
kind.setKID(kid);
kidOrmCommodity.add(commodity);
}
} catch (Exception e) {
e.printStackTrace();
}
return kidOrmCommodity;
}
public Commodity selectSelectedCommoditys(Integer cid) {
Commodity commodity = null;
Kind kind = new Kind();
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);
String sql = "SELECT CID,CNAME,CPRINCE,KID FROM T_COMMODITY WHERE CID = ?";
PreparedStatement pstat = conn.prepareStatement(sql);
pstat.setInt(1,cid);
ResultSet rst = pstat.executeQuery();
if (rst.next()){
kind.setKID(rst.getInt("KID"));
commodity = new Commodity(
rst.getInt("CID"),rst.getString("CNAME"),
rst.getFloat("CPRINCE"),kind);
}
} catch (Exception e) {
e.printStackTrace();
}
return commodity;
}
}
KindD**ao**
package com.atanmo.gwxt.dao;
import com.atanmo.gwxt.domain.Kind;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
public class KindDao {
private String driver = "com.mysql.cj.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/shopping?serverTimezone=CST&characterEncoding=UTF-8";
private String username = "root";
private String password = "at123123";
public ArrayList<Kind> selectAllKind() {
ArrayList<Kind> kindMap = new ArrayList<>();
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url,username,password);
String sql = "SELECT KID,KNAME FROM T_KIND";
PreparedStatement pstat = conn.prepareStatement(sql);
ResultSet rst = pstat.executeQuery();
while (rst.next()){
Kind kind = new Kind(rst.getInt("KID"), rst.getString("KNAME"));
kindMap.add(kind);
}
} catch (Exception e) {
e.printStackTrace();
}
return kindMap;
}
}
UserDa**o**
package com.atanmo.gwxt.dao;
import com.atanmo.gwxt.domain.User;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class UserDao {
private String driver = "com.mysql.cj.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/shopping?serverTimezone=CST&characterEncoding=UTF-8";
private String username = "root";
private String password = "at123123";
public User checkLoginResult(String uname){
User user = null;
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);
String sql = "SELECT * FROM T_USER WHERE UNAME = ?";
PreparedStatement pstat = conn.prepareStatement(sql);
if (uname != null) {
pstat.setString(1, uname);
ResultSet rst = pstat.executeQuery();
if (rst.next()) {
user = new User();
user.setUID(rst.getInt("UID"));
user.setUNAME(rst.getString("UNAME"));
user.setUPASSWORD(rst.getString("UPASSWORD"));
user.setYULIU1(rst.getString("YULIU1"));
user.setYULIU2(rst.getString("YULIU2"));
}
}else {
return user;
}
} catch (Exception e) {
e.printStackTrace();
}
return user;
}
}
Commo**dity**
package com.atanmo.gwxt.domain;
public class Commodity {
private Integer CID;
private String CNAME;
private Float CPRINCE;
private Kind kind;
public Commodity() {}
public Commodity(Integer CID, String CNAME, Float CPRINCE, Kind kind) {
this.CID = CID;
this.CNAME = CNAME;
this.CPRINCE = CPRINCE;
this.kind = kind;
}
public Integer getCID() {
return CID;
}
public void setCID(Integer CID) {
this.CID = CID;
}
public String getCNAME() {
return CNAME;
}
public void setCNAME(String CNAME) {
this.CNAME = CNAME;
}
public Float getCPRINCE() {
return CPRINCE;
}
public void setCPRINCE(Float CPRINCE) {
this.CPRINCE = CPRINCE;
}
public Kind getKind() {
return kind;
}
public void setKind(Kind kind) {
this.kind = kind;
}
@Override
public String toString() {
return "Commodity{" +
"CID=" + CID +
", CNAME='" + CNAME + '\'' +
", CPRINCE=" + CPRINCE +
", kind=" + kind +
'}';
}
}
Kind
package com.atanmo.gwxt.domain;
public class Kind {
private Integer KID;
private String KNAME;
public Kind() {}
public Kind(Integer KID, String KNAME) {
this.KID = KID;
this.KNAME = KNAME;
}
public Integer getKID() {
return KID;
}
public void setKID(Integer KID) {
this.KID = KID;
}
public String getKNAME() {
return KNAME;
}
public void setKNAME(String KNAME) {
this.KNAME = KNAME;
}
@Override
public String toString() {
return "Kind{" +
"KID=" + KID +
", KNAME='" + KNAME + '\'' +
'}';
}
}
Us**er**
package com.atanmo.gwxt.domain;
import java.util.PrimitiveIterator;
public class User {
private Integer UID;
private String UNAME;
private String UPASSWORD;
private String YULIU1;
private String YULIU2;
public User() {}
public User(Integer UID, String UNAME, String UPASSWORD, String YULIU1, String YULIU2) {
this.UID = UID;
this.UNAME = UNAME;
this.UPASSWORD = UPASSWORD;
this.YULIU1 = YULIU1;
this.YULIU2 = YULIU2;
}
public Integer getUID() {
return UID;
}
public void setUID(Integer UID) {
this.UID = UID;
}
public String getUNAME() {
return UNAME;
}
public void setUNAME(String UNAME) {
this.UNAME = UNAME;
}
public String getUPASSWORD() {
return UPASSWORD;
}
public void setUPASSWORD(String UPASSWORD) {
this.UPASSWORD = UPASSWORD;
}
public String getYULIU1() {
return YULIU1;
}
public void setYULIU1(String YULIU1) {
this.YULIU1 = YULIU1;
}
public String getYULIU2() {
return YULIU2;
}
public void setYULIU2(String YULIU2) {
this.YULIU2 = YULIU2;
}
@Override
public String toString() {
return "User{" +
"UID=" + UID +
", UNAME='" + UNAME + '\'' +
", UPASSWORD='" + UPASSWORD + '\'' +
", YULIU1='" + YULIU1 + '\'' +
", YULIU2='" + YULIU2 + '\'' +
'}';
}
}
Commodity**Service**
package com.atanmo.gwxt.service;
import com.atanmo.gwxt.dao.CommodityDao;
import com.atanmo.gwxt.domain.Commodity;
import com.atanmo.gwxt.util.MySpring;
import javax.swing.*;
import java.util.ArrayList;
public class CommodityService {
private static CommodityDao dao = MySpring.getBean("com.atanmo.gwxt.dao.CommodityDao");
public ArrayList<Commodity> selectAllCommmodity(Integer kid){
//调用dao去读写数据库
return dao.selectAllCommodity(kid);
}
public ArrayList<Commodity> getSelectedCommodityList(String[] cids) {
ArrayList<Commodity> commodities = new ArrayList<>();
//将前端获取的cid全部获取 然后通过cid去传给service方法来查出一组对象,放到集合中
for (String cid : cids){
//调用dao来查出全部的已选商品
commodities.add(dao.selectSelectedCommoditys(Integer.parseInt(cid)));
}
return commodities;
}
}
KindServi**ce**
package com.atanmo.gwxt.service;
import com.atanmo.gwxt.dao.KindDao;
import com.atanmo.gwxt.domain.Kind;
import com.atanmo.gwxt.util.MySpring;
import java.util.ArrayList;
public class KindService {
private static KindDao kindDao = MySpring.getBean("com.atanmo.gwxt.dao.KindDao");
public ArrayList<Kind> selectAllKind(){
//调用Dao查询全部的Kind类别
return kindDao.selectAllKind();
}
}
UserSe**rvice**
package com.atanmo.gwxt.service;
import com.atanmo.gwxt.dao.UserDao;
import com.atanmo.gwxt.domain.User;
import com.atanmo.gwxt.util.MySpring;
public class UserService {
private static UserDao userDao = MySpring.getBean("com.atanmo.gwxt.dao.UserDao");
public String login(String uname,String upasssword){
//调用dao查询一条记录
User user = userDao.checkLoginResult(uname);
System.out.println(user);
if (user != null && user.getUPASSWORD().equals(upasssword)){
return "登录成功";
}
return "用户名或密码错误";
}
}
MySp**ring**
package com.atanmo.gwxt.util;
import java.util.HashMap;
public class MySpring {
private static HashMap<String,Object> beanMap = new HashMap<>();
public static <T> T getBean(String className){
T obj = (T)beanMap.get(className);
if (obj == null){
try {
Class<?> clazz = Class.forName(className);
obj = (T)clazz.newInstance();
beanMap.put(className,obj);
} catch (Exception e) {
e.printStackTrace();
}
}
return obj;
}
}
学习总结:
学懂的:
我通过这次的购物系统的练习,觉得这不仅仅是锻炼了自己的面向独享思想,作用域对象的使用,
知识的巩固,更是提升编码能力和锻炼独立思维的练习
有问题的地方:
在saveSelectedCommodity中无法把选中的全部商品结算,我觉得是session对象的存储问题
正在排查.**
