api
数据库连接池配置文件
<?xml version="1.0" encoding="UTF-8"?> <!-- 阿里 druid 数据库连接池 --> <bean id = "dataSource" class = "com.alibaba.druid.pool.DruidDataSource" destroy-method = "close" > <!-- 数据库基本信息配置 --> <property name = "url" value = "${url}" /> <property name = "username" value = "${username}" /> <property name = "password" value = "${password}" /> <property name = "driverClassName" value = "${driverClassName}" /> <property name = "filters" value = "${filters}" /> <!-- 最大并发连接数 --> <property name = "maxActive" value = "${maxActive}" /> <!-- 初始化连接数量 --> <property name = "initialSize" value = "${initialSize}" /> <!-- 配置获取连接等待超时的时间 --> <property name = "maxWait" value = "${maxWait}" /> <!-- 最小空闲连接数 --> <property name = "minIdle" value = "${minIdle}" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name = "timeBetweenEvictionRunsMillis" value ="${timeBetweenEvictionRunsMillis}" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name = "minEvictableIdleTimeMillis" value ="${minEvictableIdleTimeMillis}" /> <property name = "validationQuery" value = "${validationQuery}" /> <property name = "testWhileIdle" value = "${testWhileIdle}" /> <property name = "testOnBorrow" value = "${testOnBorrow}" /> <property name = "testOnReturn" value = "${testOnReturn}" /> <property name = "maxOpenPreparedStatements" value ="${maxOpenPreparedStatements}" /> <!-- 打开 removeAbandoned 功能 --> <property name = "removeAbandoned" value = "${removeAbandoned}" /> <!-- 1800 秒,也就是 30 分钟 --> <property name = "removeAbandonedTimeout" value ="${removeAbandonedTimeout}" /> <!-- 关闭 abanded 连接时输出错误日志 --> <property name = "logAbandoned" value = "${logAbandoned}" /> </ bean >
driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/taobao?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true username=root password=666 filters=stat initialSize=2 maxActive=300 maxWait=60000 timeBetweenEvictionRunsMillis=60000 minEvictableIdleTimeMillis=300000 validationQuery=SELECT 1 testWhileIdle=true testOnBorrow=false testOnReturn=false poolPreparedStatements=false maxPoolPreparedStatementPerConnectionSize=200
DbPoolConnection
package org.ljh.taobao.api.config; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; /** * @Author: Mo * @Date: 2021/3/26 14:10 */ public class DbPoolConnection { private static DbPoolConnection databasePool = null; private static DataSource dataSource = null; static { Properties properties = new Properties(); try { InputStream inputStream=DbPoolConnection.class.getClassLoader().getResourceAsStream("druid.properties"); properties.load(inputStream); } catch (IOException e) { e.printStackTrace(); } try { dataSource = DruidDataSourceFactory.createDataSource(properties); } catch (Exception e) { e.printStackTrace(); } } private DbPoolConnection() { } public static synchronized DbPoolConnection getInstance() { if (null == databasePool) { databasePool = new DbPoolConnection(); } return databasePool; } public Connection getConnection() throws SQLException { return dataSource.getConnection(); } }
日志配置文件
<?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL--> <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出--> <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数--> <configuration status="INFO" monitorInterval="30"> <!--先定义所有的appender--> <appenders> <!--这个输出控制台的配置--> <console name="Console" target="SYSTEM_OUT"> <!--输出日志的格式--> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> </console> <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用--> <File name="log" fileName="${sys:user.home}/logs/test.log" append="false"> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </File> <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--> <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"> <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> </RollingFile> <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"> <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 --> <DefaultRolloverStrategy max="20"/> </RollingFile> <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log"> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> </RollingFile> </appenders> <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--> <loggers> <!-- <!–过滤掉spring和mybatis的一些无用的DEBUG信息–>--> <!-- <logger name="org.springframework" level="INFO"></logger>--> <!-- <logger name="org.mybatis" level="INFO"></logger>--> <root level="INFO"> <appender-ref ref="Console"/> <appender-ref ref="RollingFileInfo"/> <appender-ref ref="RollingFileWarn"/> <appender-ref ref="RollingFileError"/> </root> </loggers> </configuration>
Dao
GoodsDaoImpl
package org.ljh.taobao.dao.impl; import org.ljh.taobao.api.entity.Goods; import org.ljh.taobao.api.utils.DruidConnectionUtils; import org.ljh.taobao.dao.IGoodsDao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; /** * @Author: Mo * @Date: 2021/4/16 11:46 */ public class GoodsDaoImpl implements IGoodsDao { DruidConnectionUtils druidConnectionUtils= new DruidConnectionUtils(); @Override public List<Goods> listGoods(Connection connection) { List<Goods> listGoods = new ArrayList<>(); Goods good1 = null; String sql = "select * from goods;"; PreparedStatement preparedStatement = null; try { preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement.executeQuery(); while (resultSet.next()) { Integer goodId = resultSet.getInt("goodID"); String goodsName = resultSet.getString("goodsName"); Integer prices = resultSet.getInt("price"); good1 = new Goods(goodId, goodsName, prices); listGoods.add(good1); } return listGoods; } catch (SQLException e) { System.out.println("商品查询失败"); e.printStackTrace(); return null; } finally { druidConnectionUtils.closeConnection(connection, preparedStatement, null); } } @Override public Goods getgood(List listgoods) { return null; } }
OrderDaoImpl
package org.ljh.taobao.dao.impl; import org.ljh.taobao.api.entity.Order; import org.ljh.taobao.api.utils.DruidConnectionUtils; import org.ljh.taobao.dao.IOrderDao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; /** * @Author: Mo * @Date: 2021/4/13 21:05 */ public class OrderDaoImpl implements IOrderDao { DruidConnectionUtils druidConnectionUtils = new DruidConnectionUtils(); @Override public boolean insertOrder(Connection connection, Order order) { String sql = "insert into `order` (userId,goods,numb) values(?,?,?);"; PreparedStatement preparedStatement = null; try { preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, order.getUserId()); preparedStatement.setString(2, order.getGoods()); preparedStatement.setString(3, order.getNumb()); preparedStatement.executeUpdate(); } catch (SQLException e) { System.out.println("订单添加失败"); e.printStackTrace(); return false; } finally { try { if (preparedStatement != null) { preparedStatement.close(); } } catch (SQLException e) { System.out.println("资源关闭失败"); e.printStackTrace(); return false; } finally { druidConnectionUtils.closeConnection(connection, preparedStatement, null); return true; } } } @Override public Order getOrder(Connection connection, List order) { return null; } @Override public List<Order> listOrder(Connection connection, String userId) { List<Order> listOrder = new ArrayList<>(); Order order1 = null; ResultSet resultSet = null; String sql = "select * from `order` where userId = ? ;"; PreparedStatement preparedStatement = null; try { preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, userId); resultSet = preparedStatement.executeQuery(); System.out.println("try执行了"); while (resultSet.next()) { String good = resultSet.getString("goods"); String numb = resultSet.getString("numb"); order1 = new Order(userId, good, numb); listOrder.add(order1); } return listOrder; } catch (SQLException e) { System.out.println("传入的用户名为"+userId+sql); System.out.println("购物车查询失败"); e.printStackTrace(); return null; } finally { druidConnectionUtils.closeConnection(connection, preparedStatement, null); } } @Override public boolean deleteOrder(Connection connection, String userId, String goods) { String sql = "delete from `order` where userId = ? and goods = ? ;"; PreparedStatement preparedStatement = null; try { preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1,userId); preparedStatement.setString(1,goods); preparedStatement.executeUpdate(); return true; } catch (SQLException e) { System.out.println("订单删除失败"); e.printStackTrace(); return false; } finally { try { if (preparedStatement != null) { preparedStatement.close(); } } catch (SQLException e) { System.out.println("资源关闭失败"); e.printStackTrace(); return false; } finally { druidConnectionUtils.closeConnection(connection, preparedStatement, null); } } } }
UserDaoImpl
package org.ljh.taobao.dao.impl; import org.ljh.taobao.api.entity.User; import org.ljh.taobao.api.utils.DruidConnectionUtils; import org.ljh.taobao.dao.IUserDao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * @Author: Re * @Date: 2021/3/26 14:15 */ public class UserDaoImpl implements IUserDao { DruidConnectionUtils druidConnectionUtils = new DruidConnectionUtils(); @Override public boolean insertUser(Connection connection, User user) { String sql = "insert into `user` (userName,userPassword) values(?,?);"; PreparedStatement preparedStatement = null; try { preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, user.getUserName()); preparedStatement.setString(2, user.getUserPassword()); preparedStatement.executeUpdate(); } catch (SQLException e) { System.out.println("用户添加失败"); e.printStackTrace(); return false; } finally { try { if (preparedStatement != null) { preparedStatement.close(); } } catch (SQLException e) { System.out.println("资源关闭失败"); e.printStackTrace(); return false; } finally { druidConnectionUtils.closeConnection(connection, preparedStatement, null); return true; } } } @Override public User loginUser(Connection connection, User user) { String sql = "select * from `user` where username = ? and userPassword = ? ;"; PreparedStatement preparedStatement = null; ResultSet resultSet = null; User user2 = null; try { preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, user.getUserName()); preparedStatement.setString(2, user.getUserPassword()); resultSet = preparedStatement.executeQuery(); if (resultSet.next()) { String userId = String.valueOf(resultSet.getInt("id")); String userName = resultSet.getString("userName"); String userPassword = resultSet.getString("userPassword"); user2 = new User(resultSet.getInt("id"),resultSet.getString("userName"),resultSet.getString("userPassword")); System.out.println(userName+"使用密码"+userPassword+"登录"); return user2; } } catch (SQLException throwables) { throwables.printStackTrace(); } finally { druidConnectionUtils.closeConnection(connection,preparedStatement,resultSet); } return null; } @Override public boolean deleteUser(Connection connection, String myusername) { String sql = "delete from `user` where userName = ? ;"; PreparedStatement preparedStatement = null; try { preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1,myusername); preparedStatement.executeUpdate(); return true; } catch (SQLException e) { System.out.println("用户删除失败"); e.printStackTrace(); return false; } finally { try { if (preparedStatement != null) { preparedStatement.close(); } } catch (SQLException e) { System.out.println("资源关闭失败"); e.printStackTrace(); return false; } finally { druidConnectionUtils.closeConnection(connection, preparedStatement, null); } } } }
Service
GoodsServiceImpl
package org.ljh.taobao.service; import org.ljh.taobao.api.IGoodsService; import org.ljh.taobao.api.entity.Goods; import org.ljh.taobao.api.utils.DruidConnectionUtils; import org.ljh.taobao.dao.IGoodsDao; import org.ljh.taobao.dao.impl.GoodsDaoImpl; import java.sql.Connection; import java.util.List; /** * @Author: Mo * @Date: 2021/4/15 23:03 */ public class GoodsServiceImpl implements IGoodsService { IGoodsDao iGoodsDao = new GoodsDaoImpl(); DruidConnectionUtils druidConnectionUtils=new DruidConnectionUtils(); public List<Goods> listGoods() { return iGoodsDao.listGoods(druidConnectionUtils.getConnection()); } public Goods getGood(List Listgoods) { return iGoodsDao.getgood(Listgoods); } }
OrderServiceImpl
package org.ljh.taobao.service; import org.ljh.taobao.api.IOrderService; import org.ljh.taobao.api.entity.Order; import org.ljh.taobao.api.entity.User; import org.ljh.taobao.api.utils.DruidConnectionUtils; import org.ljh.taobao.dao.IOrderDao; import org.ljh.taobao.dao.IUserDao; import org.ljh.taobao.dao.impl.OrderDaoImpl; import org.ljh.taobao.dao.impl.UserDaoImpl; import java.util.List; /** * @Author: Mo * @Date: 2021/4/13 21:17 */ public class OrderServiceImpl implements IOrderService { IOrderDao iOrderDao=new OrderDaoImpl(); DruidConnectionUtils druidConnectionUtils=new DruidConnectionUtils(); public boolean insertOrder(Order order) { return iOrderDao.insertOrder(druidConnectionUtils.getConnection(),order); } public List<Order> listOrder(String userId) { return iOrderDao.listOrder(druidConnectionUtils.getConnection(),userId); } public boolean deleteOrder(String userId, String goods) { return iOrderDao.deleteOrder(druidConnectionUtils.getConnection(),userId,goods); } public Order order(Order order) { return null; } public Order Order(List orders) { return iOrderDao.getOrder(druidConnectionUtils.getConnection(),orders); } }
UserServiceImpl
package org.ljh.taobao.service; import org.ljh.taobao.api.IUserService; import org.ljh.taobao.api.entity.User; import org.ljh.taobao.api.utils.DruidConnectionUtils; import org.ljh.taobao.dao.IUserDao; import org.ljh.taobao.dao.impl.UserDaoImpl; /** * @Author: Re * @Date: 2021/3/26 19:15 */ public class UserServiceImpl implements IUserService { IUserDao iUserDao=new UserDaoImpl(); DruidConnectionUtils druidConnectionUtils=new DruidConnectionUtils(); public boolean insertUser(User user) { return iUserDao.insertUser(druidConnectionUtils.getConnection(),user); } public User loginUser(User user) { return iUserDao.loginUser(druidConnectionUtils.getConnection(),user); } public boolean deleteUser(String myusername) { return iUserDao.deleteUser(druidConnectionUtils.getConnection(),myusername); } }
Controler
DeleteUserServlet
package org.ljh.taobao.controller; import org.ljh.taobao.api.IUserService; import org.ljh.taobao.api.entity.User; import org.ljh.taobao.service.UserServiceImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 java.io.IOException; /** * @Author: Mo * @Date: 2021/4/14 23:57 */ @WebServlet("/deleteUser") public class DeleteUserServlet extends HttpServlet { private static final Logger logger = LoggerFactory.getLogger(DeleteUserServlet.class); @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;utf-8"); HttpSession session = req.getSession(); String myusername = (String) session.getAttribute("myusername"); IUserService iUserService = new UserServiceImpl(); boolean judgment=iUserService.deleteUser(myusername); if (judgment == true){ req.getRequestDispatcher("/index.jsp").forward(req,resp); } else { req.setAttribute("zx","注销失败"); } } }
ListGoodsServlet
package org.ljh.taobao.controller; import org.ljh.taobao.api.IGoodsService; import org.ljh.taobao.api.entity.Goods; import org.ljh.taobao.service.GoodsServiceImpl; 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 java.io.IOException; import java.sql.Connection; import java.util.List; /** * @Author: Mo * @Date: 2021/4/15 19:15 */ @WebServlet("/listGoods") public class ListGoodsServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;utf-8"); IGoodsService iGoodsService=new GoodsServiceImpl(); List <Goods> goodsList = iGoodsService.listGoods(); HttpSession session = req.getSession(); session.setAttribute("goodsList",goodsList); req.getRequestDispatcher("shopping.jsp").forward(req, resp); } }
InsertOrderServlet
package org.ljh.taobao.controller; import org.ljh.taobao.api.IOrderService; import org.ljh.taobao.api.IUserService; import org.ljh.taobao.api.entity.Order; import org.ljh.taobao.api.entity.User; import org.ljh.taobao.service.OrderServiceImpl; import org.ljh.taobao.service.UserServiceImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 java.io.IOException; /** * @Author: Mo * @Date: 2021/4/13 21:42 */ @WebServlet("/insertOrder") public class InsertOrderServlet extends HttpServlet { private static final Logger logger = LoggerFactory.getLogger(InsertUserServlet.class); @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;utf-8"); HttpSession session = req.getSession(); String userId = (String) session.getAttribute("myusername"); String goods = req.getParameter("goods"); String numb = req.getParameter("numb"); Order order = new Order(userId,goods,numb); logger.info(order.toString()); if (goods == "") { req.setAttribute("msg","请输入商品名"); } else if (numb == null) { req.setAttribute("msg", "请输入购买数量"); } else { IOrderService iOrderService=new OrderServiceImpl(); boolean judgment=iOrderService.insertOrder(order); if (judgment) { req.setAttribute("msg", "购买成功"); req.getRequestDispatcher("shoppingSuccess.jsp").forward(req,resp); } else { req.setAttribute("msg", "购买失败"); } } req.getRequestDispatcher("shopping.jsp").forward(req,resp); } }
InsertUserServlet
package org.ljh.taobao.controller; import org.ljh.taobao.api.IUserService; import org.ljh.taobao.api.entity.User; import org.ljh.taobao.service.UserServiceImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 java.io.IOException; /** * @Author: Mo * @Date: 2021/3/26 19:24 */ @WebServlet("/insertUser") public class InsertUserServlet extends HttpServlet { private static final Logger logger = LoggerFactory.getLogger(InsertUserServlet.class); @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;utf-8"); String userName = req.getParameter("userName"); String userPassword = req.getParameter("userPassword"); User user = new User(userName,userPassword); logger.info(user.toString()); if (userName == "") { req.setAttribute("msg","请输入用户名"); } else if (userPassword == "") { req.setAttribute("msg", "请输入密码"); } else { IUserService iUserService=new UserServiceImpl(); boolean judgment=iUserService.insertUser(user); if (judgment) { req.setAttribute("msg", "注册成功"); req.getRequestDispatcher("insertSuccess.jsp").forward(req,resp); } else { req.setAttribute("msg", "注册失败"); } } req.getRequestDispatcher("index.jsp").forward(req,resp); } }
LoginUserServlet
package org.ljh.taobao.controller; import com.sun.org.apache.bcel.internal.generic.Select; import org.ljh.taobao.api.IUserService; import org.ljh.taobao.api.entity.User; import org.ljh.taobao.service.UserServiceImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 java.io.IOException; /** * @Author: Mo * @Date: 2021/3/26 19:24 */ @WebServlet("/loginUser") public class LoginUserServlet extends HttpServlet { private static final Logger logger = LoggerFactory.getLogger(LoginUserServlet.class); @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;utf-8"); String userName = req.getParameter("userName"); String userPassword = req.getParameter("userPassword"); User user = new User(userName,userPassword); logger.info(user.toString()); IUserService iUserService=new UserServiceImpl(); User judgment2=iUserService.loginUser(user); if (userName == "") { req.setAttribute("msg","请输入用户名"); } else if (userPassword == "") { req.setAttribute("msg", "请输入密码"); } else if (judgment2 != null){ HttpSession session = req.getSession(); session.setAttribute("myusername",judgment2.getUserName()); req.setAttribute("msg","登录成功"); req.getRequestDispatcher("loginSuccess.jsp").forward(req,resp); return; } else { req.setAttribute("msg","登录失败"); } req.getRequestDispatcher("denglu.jsp").forward(req,resp); } }
Webapp
deletUser.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%-- Created by IntelliJ IDEA. User: HP Date: 2021/4/14 Time: 18:17 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>注意</title> <link href="index.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="banner"><h1>账号注销后不可恢复,是否确认注销?</h1> <form action="/deleteUser" method="post" > <div><button type="submit">确认注销</button></div> </form> <a href="index.jsp"> <button>退出登录</button></a> <span style="color: red; font-size: 15px">${zx}</span> </div> </body> </html>
denglu.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html> <title></title> <link href="index.css" rel="stylesheet" type="text/css" /> <head> <title>登录</title> </head> <body> <div id="banner"> <form action="/loginUser" method="post" > <h4 id="denglu">登录栏</h4> <input type="text" name="userName">姓名<br> <input type="text" name="userPassword">密码<br> <button type="submit">提交</button> <span style="color: red; font-size: 15px">${msg}</span> </form> </div> </body> </html>
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html> <title>注册</title> <link href="index.css" rel="stylesheet" type="text/css" /> <body> </body> <div id="banner"> <div> <form action="/insertUser" method="post" > <h4 id="zhuce">注册栏</h4> <input type="text" name="userName">姓名<br> <input type="text" name="userPassword">密码<br> <button type="submit">提交</button> <span style="color: red; font-size: 15px">${msg}</span> </form> </div><a href="denglu.jsp" > <button>登录</button > </a> </div> </html>
insertSuccess.jsp
<%-- Created by IntelliJ IDEA. User: Re --%> <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html> <head> <title>注册成功</title> <link href="index.css" rel="stylesheet" type="text/css" /> </head > <body> <div id="banner"> <h1>${msg}</h1> <a href="denglu.jsp"><button>点击登录</button></a> </div> </body> </html>
loginSuccess.jsp
<%-- Created by IntelliJ IDEA. User: HP Date: 2021/4/11 Time: 17:44 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><html> <head> <title>登录成功</title> <link href="index.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="banner"> <div>${msg}</div> <form action="/listGoods" method="post"> <button type="submit">荣耀商店</button> </form> <form action="/listOrders" method="post"> <button type="submit">购物车</button> </form> <a href="deletUser.jsp"><button>注销账号</button></a> </div> </body> </html>
order.jsp
<%-- Created by IntelliJ IDEA. User: HP Date: 2021/4/15 Time: 10:52 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><html> <html> <html> <head> <title>购物车</title> <link href="index.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="banner"> <form action="/listOrders" method="post"> <table> <tr height="50"> <td colspan="3" align="center" ><h1>订单列表</h1></td> </tr> <tr align="center" height="30" bgcolor="lightgrey"> <th>商品名称</th> <th>数量</th> <th>移出购物车</th> </tr> <c:forEach items="${ordersList}" var="orders"> <tr> <td>${orders.goods}</td> <td>${orders.numb}</td> <td><button type="submit" name="out" value="${orders.userId}">移出购物车</button> </td> </tr> </c:forEach> </table> </form> </div> </body> </html>
shopping.jsp
<%@ page import="org.ljh.taobao.api.entity.Goods" %> <%@ page import="java.util.ArrayList" %><%-- Created by IntelliJ IDEA. User: HP Date: 2021/4/12 Time: 20:59 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html> <head> <title>购物</title> <link href="index.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="banner"> <form action="/listGoods" method="post"> <table> <tr height="50"> <td colspan="3" align="center" ><h1 id=>商品列表</h1></td> </tr> <tr align="center" height="30" bgcolor="lightgrey"> <th>名称</th> <th>价格</th> <th>加入购物车</th> </tr> <c:forEach items="${goodsList}" var="good"> <tr> <td>${good.goodsName}</td> <td>${good.price}</td> <td><button type="submit" name="collect" value="${good.goodID}">加入购物车</button> </td> </tr> </c:forEach> </table> </form> <form action="/insertOrder" method="post"> <h4 id="buying"></h4> <input type="text" name="goods">商品名<br> <input type="text" name="numb">数量<br> <button type="submit">提交</button> <span style="color: red; font-size: 15px">${msg}</span> </form> </div> </body> </html>
shoppingSuccess.jsp
<%-- Created by IntelliJ IDEA. User: HP Date: 2021/4/14 Time: 12:27 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><html> <html> <head> <title>请合理消费</title> <link href="index.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="banner"> <div><h1>购买成功</h1></div> <a href="shopping.jsp"><button>继续购买</button></a> </div> </body> </html>
CSS文件
body{font-size: large; font-color:#919892; background: white url(/images/back.png) no-repeat center; ext-align:center; } #banner{ color:#919892; margin-top: 240px; margin-left: 350px; } #denglu{margin-bottom: 0} #zhuce{margin-bottom: 0}
pom文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.lyl</groupId> <artifactId>taobao</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <modules> <module>taobao-api</module> <module>taobao-dao</module> <module>taobao-service</module> <module>taobao-controller</module> </modules> <repositories> <!--阿里云仓库--> <repository> <id>aliyun</id> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </repository> </repositories> <properties> <!-- jar包版本设置 --> <slf4j.version>1.7.21</slf4j.version> <log4j.version>2.8.2</log4j.version> </properties> <dependencies> <!-- 导入slf4j的接口包以及对应日志框架的驱动包 --> <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <!--用于slf4j与log4j2保持桥接 --> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <scope>runtime</scope> <version>${log4j.version}</version> </dependency> <!-- 导入日志框架核心包与接口包 --> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <scope>runtime</scope> <version>${log4j.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${log4j.version}</version> </dependency> <!--用于解决web环境下关闭服务器时可能出现的log4j线程无法及时关闭的warn,web工程需要包含log4j-web,非web工程不需要 --> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-web --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-web</artifactId> <scope>runtime</scope> <version>${log4j.version}</version> </dependency> <!--使用log4j2的AsyncLogger时需要包含disruptor --> <!-- https://mvnrepository.com/artifact/com.lmax/disruptor --> <dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> <scope>runtime</scope> <version>3.4.2</version> </dependency> </dependencies> </project>