UserServlet.java

package com.aff.bookstore.servlet;

import java.io.IOException;
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 com.aff.bookstore.domain.User;
import com.aff.bookstore.service.UserService; @WebServlet("/userServlet")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L; private UserService userService = new UserService(); protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取username 请求参数的值
String username = request.getParameter("username");
// 调用UserService 的 getUser(username) 获取 User对象, 要求 trade 是被装配好的 , 而且
// 每一个trade 对象的items
User user = userService.getUserWithTrades(username); // 把User 对象方法放reuest 中
if (user == null) {
response.sendRedirect(request.getServletPath()+"errror-1.jsp");
return;
}
request.setAttribute("user", user); // 转发页面到/WEB-INF/pages/trades.jsp
request.getRequestDispatcher("/WEB-INF/pages/trades.jsp").forward(request, response);; } }

users.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="/commons/common.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body> <center>
<br><br> <form action="userServlet" method="post">
username: <input type="text" name="username"/>
<input type="submit" value="Submit">
</form> </center>
</body>
</html>

trades.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="/commons/common.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<center>
<br><br>
<h3>User: ${user.username}</h3>
<br><br> <table>
<c:forEach items="${user.trades }" var="trade">
<tr>
<td>
<table border="1" cellpadding="10" cellspacing="0">
<tr>
<td colspan="3">TradeTime:${trade.tradeTime }</td> </tr>
<c:forEach items="${trade.items }" var="item">
<tr>
<td>${item.book.title }</td>
<td>${item.book.price }</td>
<td>${item.quantity }</td>
</tr>
</c:forEach> </table>
<br>
</td>
</tr> </c:forEach> </table>
</center> </body>
</html>

TradeDAOImpl.java
package com.aff.bookstore.dao.impl;

import java.util.LinkedHashSet;
import java.util.Set; import com.aff.bookstore.dao.TradeDAO;
import com.aff.bookstore.domain.Trade; public class TradeDAOImpl extends BaseDAO<Trade> implements TradeDAO { @Override
public void insert(Trade trade) {
String sql = "insert into trade(userid,tradetime) values(?,?)";
long tradeId = insert(sql, trade.getUserId(),trade.getTradeTime());
trade.setTradeId((int)tradeId); } @Override
public Set<Trade> getTradesWithUserId(Integer userId) {
String sql = "select tradeId,userId, tradeTime from trade where userId = ? order by tradeTime desc";
return new LinkedHashSet<>
(queryForList(sql, userId));
}

}

 效果如下

解决相对路径问题:

common.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<base href="${pageContext.request.scheme }://${pageContext.request.serverName }:${pageContext.request.serverPort }${pageContext.request.contextPath}/">

在需要的jsp中添加<%@ include file="/commons/common.jsp" %>

如下:empty.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="/commons/common.jsp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body> <h4>您的购物车为空</h4> <a href="index.jsp">继续购物</a> </body>
</html>

整个目录

(九)显示交易记录 &解决相对路径问题的更多相关文章

  1. 关于EasyUI 1.5版Datagrid组件在空数据时无法显示"空记录"提示的BUG解决方法

    问题:jQuery easyUI中Datagrid,在表格数据加载无数据的时候,如何显示"无记录"的提示语? 解决jQuery EasyUI 1.5.1版本的Datagrid,在处 ...

  2. 基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录

    最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...

  3. jQuery Tags Input 插件显示选择记录

    利用jQuery Tags Input 插件显示选择记录 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采 ...

  4. HTML中的select下拉框内容显示不全的解决办法

    HTML中的select下拉框内容显示不全的解决办法 今天,我遇到这样一个问题:查询栏中的下拉框中的内容过长,导致部分被覆盖了. 查询了一些资料,有的说用函数控制,有的说用事件控制,有的看不懂,有的实 ...

  5. 剥开比原看代码16:比原是如何通过/list-transactions显示交易信息的

    作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchai ...

  6. git status 显示中文和解决中文乱码

    目录 git status 显示中文和解决中文乱码 解决git status不能显示中文 解决git bash 终端显示中文乱码 通过修改配置文件来解决中文乱码 git status 显示中文和解决中 ...

  7. request.getContextPath是为了解决相对路径的问题,可返回站点的根路径

    假定你的web application 名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp 则执行下面向行代码后打印出如下结果 ...

  8. (转)基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录

    http://www.cnblogs.com/wuhuacong/p/3667703.html 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开 ...

  9. myeclipse中svn图标状态不显示问题的解决办法

    myeclipse中svn图标状态不显示问题的解决办法 博客分类: svn SVNMyeclipse工作WindowsC  myeclipse中使用 svn 插件,原本正常,未作任何更改,突然有一天, ...

随机推荐

  1. 洛谷P1771 方程的解

    P1771 方程的解 都知道这个题可以用隔板法做 把这个\(g(x)\)想象为.....\(g(x)\)个苹果? 因为解是正整数,所以给这些"苹果"分组的时候每组最少有一个 然后我 ...

  2. python(If 判断)

    一.if判断 如果 条件满足,才能做某件事情, 如果 条件不满足,就做另外一件事情,或者什么也不做 注意: 代码的缩进为一个 tab 键,或者 4 个空格 在 Python 开发中,Tab 和空格不要 ...

  3. linux上github的简单使用

    Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目前,包括Rubinius ...

  4. MySQL如何安装-教程

    1.先从官网上下载Mysql压缩包https://dev.mysql.com/downloads/mysql/2.解压出来的mysql压缩包是没有图片中的data文件夹和my.ini 如图所示: 3. ...

  5. Pika源码学习--pika的通信和线程模型

    pika的线程模型有官方的wiki介绍https://github.com/Qihoo360/pika/wiki/pika-%E7%BA%BF%E7%A8%8B%E6%A8%A1%E5%9E%8B,这 ...

  6. Java中常用的获取从当前月开始的前第i个月、取结束时间与开始时间相差多少个月份等的方法

    @RunWith(SpringRunner.class) @SpringBootTest public class DateTest { @Test public void test(){ DateF ...

  7. Unix的I/O模型

    对于一次I/O操作(以read为例),数据首先被拷贝到内核的某个缓冲区,然后再从内核缓冲区拷贝到应用进程缓冲区. 因此,一次I/O操作通常包含两个阶段: (1) 等待数据准备好 (2) 从内核向进程复 ...

  8. 软件——IDEA 超实用使用技巧分享

    前言 工欲善其事 ​必先利其器 最近受部门的邀请,给入职新人统一培训IDEA,发现有很多新人虽然日常开发使用的是IDEA,但是还是很多好用的技巧没有用到,只是用到一些基本的功能,蛮浪费IDEA这个优秀 ...

  9. 随笔 - B树算法实现

    写代码之前,再回顾一下B树是什么,满足什么样的规则 B树规则: 排序方式:所有节点关键字是按递增次序排列,并遵循左小右大原则 子节点数:非叶节点的子节点数>1,且<=M ,且M>=2 ...

  10. 【Kafka】数据分区策略

    数据分区策略 四种策略 一.指定分区号,数据会直接发送到所指定的分区 二.没有指定分区号,指定了数据的key,可以通过key获取hashCode决定数据发送到哪个分区 三.都没有指定的话,会采取rou ...