一、图书查找

1.案例演示

搜索框输入java,点击搜索到购物车页面
menu_search.jsp
在这里插入图片描述
info.jsp
在这里插入图片描述

2.实现步骤

2.1 menu_search.jsp

<form action="${pageContext.request.contextPath }/selectBooksServlet" id="searchform">
	<table width="100%" border="0" cellspacing="0">
		<tr>
			<td style="text-align:right; padding-right:220px">
				Search 
				<input type="text" name="bookname" class="inputtable" id="textfield" value="请输入书名"
				onmouseover="this.focus();"
				onclick="my_click(this, 'textfield');"
				onBlur="my_blur(this, 'textfield');"/>
				<a href="#">
					<img src="${pageContext.request.contextPath}/client/images/serchbutton.gif" border="0" style="margin-bottom:-4px"
						 onclick="search()"/>
				</a>
			</td>
		</tr>
	</table>
</form>

2.1 selectBooksServlet

@WebServlet(name = "selectBooksServlet", value = "/selectBooksServlet")
public class selectBooksServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
        //由书名查找书
            String name=request.getParameter("bookname");
            BooksDao bd=new BooksDao();
            Books b=new Books();
            b.setName(name);
            Books books=bd.select(b);
            request.getSession().setAttribute("p",books);
            request.getRequestDispatcher("/client/info.jsp").forward(request,response);
    }
}

2.1 BooksDao

    //由书名查找书
    public Books select(Books book){
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        Books books=new Books();
        try {
            con = JDBCutils.getConnection();
            String sql="select *from books where name=?";
            pst=con.prepareStatement(sql);
            pst.setString(1,book.getName());
            rs=pst.executeQuery();
            if(rs.next()){
                books.setId(rs.getInt("id"));
                books.setName(rs.getString("name"));
                books.setPrice(rs.getDouble("price"));
                books.setCatagory(rs.getString("catagory"));
                books.setNum(rs.getInt("num"));
                books.setDescription(rs.getString("description"));
                books.setImgurl(rs.getString("imgurl"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return books;
    }

二、用户退出

1.案例演示

点击用户退出,返回到主页面
head.jsp
在这里插入图片描述
login.jsp
在这里插入图片描述

2.实现步骤

2.1 head.jsp

| <a href="${pageContext.request.contextPath}/client/logins?act=exit" onclick="javascript:return confirm_logout()">用户退出</a>
<br><br><br>欢迎您: ${user.username}
<% 	

2.2 UsersServlet

新版可以用value当做路径,旧版需要配置xml,这里UserServlet用映射路径client/logins

@WebServlet(name = "UsersServlet2", value = {"/UserServlet"})
public class UsersServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //前台所有servlet
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
        String act = request.getParameter("act");
        //用户退出
        if("exit".equals(act)){
            request.getSession().invalidate();
            response.sendRedirect(request.getContextPath()+"/client/login.jsp");
        }
    }
}

    <servlet>
        <servlet-name>UsersServlet2</servlet-name>
        <servlet-class>bookshop.servlet.UsersServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>UsersServlet2</servlet-name>
        <url-pattern>/client/logins</url-pattern>
    </servlet-mapping>

三、我的账户

1.案例演示

myAccount.jsp
在这里插入图片描述
modifyuserinfo.jsp
在这里插入图片描述
orderlist.jsp
在这里插入图片描述

2.实现步骤

2.1 myAccount.jsp

<table width="100%" border="0" cellspacing="0" style="margin-top:30px">
	<tr>
		<td class="listtitle">我的帐户</td>
	</tr>
	<tr>
		<td class="listtd">
			<img src="${pageContext.request.contextPath }/client/images/icon1.png" width="15" height="10" />
			&nbsp;&nbsp;&nbsp;&nbsp; 
			<a href="${pageContext.request.contextPath }/client/modifyuserinfo.jsp">用户信息修改</a>
		</td>
	</tr>
	<tr>
		<td class="listtd">
			<img src="${pageContext.request.contextPath }/client/images/icon2.png" width="15" height="10" />
			&nbsp;&nbsp;&nbsp;&nbsp; 
			<a href="${pageContext.request.contextPath}/client/logins?act=showorder">订单查询</a>
		</td>
	</tr>
	<tr>
		<td class="listtd">
			<img src="${pageContext.request.contextPath }/client/images/icon3.png" width="15" height="10" />
			&nbsp;&nbsp;&nbsp;&nbsp; 
			<a href="${pageContext.request.contextPath}/client/logins?act=exit" onclick="javascript:return confirm_logout()">用户退出</a>
		</td>
	</tr>
</table>

2.2 modifyuserinfo.jsp

//自己创建form表单,进行提交处理
<form action="${pageContext.request.contextPath}/client/logins?act=update&id=${user.id}" method="post">
	<table cellspacing="0" class="infocontent">
		<tr>
			<td>
				<table width="100%" border="0" cellspacing="2" class="upline">
					<tr>
						<td style="text-align:right; width:20%">会员邮箱:</td>
						<td style="width:40%; padding-left:20px">${user.email }</td>
						<td>&nbsp;</td>
					</tr>
					<tr>
						<td style="text-align:right">会员名:</td>
						<td style="padding-left:20px">${user.username }</td>
						<td>&nbsp;</td>
					</tr>
					<tr>
						<td style="text-align:right">修改密码:</td>
						<td><input type="password" class="textinput" /></td>
						<td><font color="#999999">密码设置至少6位,请区分大小写</font></td>
					</tr>
					<tr>
						<td style="text-align:right">重复密码:</td>
						<td><input name="password" type="password" class="textinput" /></td>
						<td>&nbsp;</td>
					</tr>
					<tr>
						<td style="text-align:right">性别:</td>
						<td colspan="2">&nbsp;&nbsp;
							<input type="radio" name="gender" value="男" ${user.gender=='男'?'checked':'' }/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
							<input type="radio" name="gender" value="女"  ${user.gender=='女'?'checked':'' }/></td>
					</tr>
					<tr>
						<td style="text-align:right">联系方式:</td>
						<td colspan="2">
							<input name="telephone" type="text" value="${user.telephone}" class="textinput" />
						</td>
					</tr>
					<tr>
						<td style="text-align:right">&nbsp;</td>
						<td>&nbsp;</td>
						<td>&nbsp;</td>
					</tr>
				</table>
<%--									<p style="text-align:center">--%>
<%--										<a href="success.html" >--%>
<%--											<img src="${pageContext.request.contextPath }/client/images/botton_gif_025.gif" border="0" width="140" height="35"/>--%>
<%--										</a>--%>
<%--									</p>--%>
//创建自己的提交图片
				<table width="70%" border="0" cellspacing="0">
					<tr>
						<td style="padding-top: 20px; text-align: center">
							<input type="image" src="${pageContext.request.contextPath }/client/images/botton_gif_025.gif" name="submit" border="0" width="140" height="35"/>
						</td>
					</tr>
				</table>
				<p style="text-align:center">&nbsp;</p>
			</td>
		</tr>
	</table>
</form>

2.2 UsersServlet

        //用户信息修改
        if("update".equals(act)){
            String id= request.getParameter("id");
            int bid=Integer.parseInt(id);
            UsersDao ud=new UsersDao();
            //实例化Users
            Users u=new Users();
            //设置修改的数值
            u.setId(bid);
            u.setPassword(request.getParameter("password"));
            u.setGender(request.getParameter("gender"));
            u.setTelephone(request.getParameter("telephone"));
            if(ud.updateuser(u)){
                response.getWriter().println("update success");
            }else {
                response.getWriter().println("update error");
            }
        }
         //订单查询(由user_id找到订单)
        if("showorder".equals(act)){
             OrderDao od=new OrderDao();
             Order o=new Order();
             Users user= (Users) request.getSession().getAttribute("user");
             o.setUser(user);
             List<Order> order=new ArrayList<Order>();
             order=od.selectid(o);
             request.getSession().setAttribute("orders",order);
             request.getRequestDispatcher("/client/orderlist.jsp").forward(request,response);
        }
        

2.2 UsersDao

    //用户内容修改
    public boolean updateuser(Users users){
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            con = user.utils.JDBCutils.getConnection();
            String sql="update users set password=?,gender=?,telephone=? where id=?";
            pst=con.prepareStatement(sql);
            pst.setString(1,users.getPassword());
            pst.setString(2,users.getGender());
            pst.setString(3, users.getTelephone());
            pst.setInt(4,users.getId());
            int i=pst.executeUpdate();
            if(i==1){
                return true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            user.utils.JDBCutils.close(con, pst, rs);
        }
        return false;
    }

2.2 OrderDao

    //由user_id找到订单
    public List selectid(Order order){
        List<Order> list=new ArrayList<Order>();
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            con = JDBCutils.getConnection();
            String sql="select *from orders,users where orders.user_id=users.id and user_id=?";
            pst=con.prepareStatement(sql);
            pst.setInt(1,order.getUser().getId());
            rs=pst.executeQuery();
            while (rs.next()){
                Order orders=new Order();
                Users users=new Users();
                orders.setId(rs.getInt("id"));
                orders.setReceiverName(rs.getString("receiverName"));
                orders.setReceiverAddress(rs.getString("receiverAddress"));
                orders.setReceiverPhone(rs.getString("receiverPhone"));
                orders.setMoney(rs.getInt("money"));
                orders.setPaystate(rs.getInt("paystate"));
                orders.setOrdertime(rs.getString("ordertime"));
                users.setUsername(rs.getString("username"));
                orders.setUser(users);
                list.add(orders);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }

四、我的账户中订单查询

1.案例演示

orderlist.jsp
在这里插入图片描述

点击查看到结算页面
orderInfo.jsp
在这里插入图片描述
跳转到支付页面
pay.jsp
在这里插入图片描述
点击支付回来发现已经支付
在这里插入图片描述

点击删除删除该订单发现已经删除
在这里插入图片描述

2.实现步骤

订单查看

2.1 orderlist.jsp

<td class="tableopentd03">
	<a href="${pageContext.request.contextPath}/client/logins?act=shower&id=${order.id}">查看</a>&nbsp;&nbsp;
	<c:if test="${order.paystate==0 }">
		<a href="${pageContext.request.contextPath}/client/logins?act=delete&id=${order.id}"  onclick="javascript:return o_del()">刪除</a>
	</c:if> 
	<c:if test="${order.paystate!=0 }">
		<a href="${pageContext.request.contextPath}/client/logins?act=delete?id=${order.id}&type=client" onclick="javascript:return o_del()">刪除</a>
	</c:if>
</td>

2.1 UsersServlet

查看

        //查看单个订单
        if("shower".equals(act)){
            //订单编号order id
            String id=request.getParameter("id");
            int sid= Integer.parseInt(id);
            //orders,users 查询
            Order o=new Order();
            OrderDao od=new OrderDao();
            List<Order> order=new ArrayList<Order>();
            order=od.show(sid);

            //books,orderItems 查询
            List<OrderItem> orderitems=new ArrayList<OrderItem>();
            orderitems=od.show2(sid);
            request.getSession().setAttribute("orderItems",orderitems);;
            request.getSession().setAttribute("order",order);
            request.getRequestDispatcher("/client/orderInfo.jsp").forward(request,response);
        }

在这里插入图片描述

2.1 OrderDao

    public List show(int id){
        List<Order> list=new ArrayList<Order>();
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        Users users=new Users();
        try {
            con = JDBCutils.getConnection();
            String sql="select orders.id,receiverName,receiverAddress,receiverPhone,money,paystate,ordertime,username from orders,users where orders.user_id=users.id and orders.id=?";
            pst=con.prepareStatement(sql);
            pst.setInt(1,id);
            rs=pst.executeQuery();
            if(rs.next()){
                Order orders=new Order();
                orders.setId(rs.getInt("id"));
                orders.setReceiverName(rs.getString("receiverName"));
                orders.setReceiverAddress(rs.getString("receiverAddress"));
                orders.setReceiverPhone(rs.getString("receiverPhone"));
                orders.setMoney(rs.getInt("money"));
                orders.setPaystate(rs.getInt("paystate"));
                orders.setOrdertime(rs.getString("ordertime"));
                users.setUsername(rs.getString("username"));
                orders.setUser(users);
                list.add(orders);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }
    //查询订单内容view.jsp中的buyname和books
    public List show2(int id){
        List<OrderItem> list=new ArrayList<OrderItem>();
        List<Books> list2=new ArrayList<Books>();
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        Users users=new Users();
        try {
            con = JDBCutils.getConnection();
            String sql="select * from books,orderItems where books.id=orderItems.book_id and order_id=?";
            pst=con.prepareStatement(sql);
            pst.setInt(1,id);
            rs=pst.executeQuery();
            if(rs.next()){
                Books p=new Books();
                OrderItem oi=new OrderItem();
                oi.setBuynum(rs.getInt("buynum"));
                p.setId(rs.getInt("book_id"));
                p.setName(rs.getString("name"));
                p.setPrice(rs.getDouble("price"));
                p.setCatagory(rs.getString("catagory"));
                p.setDescription(rs.getString("description"));
                p.setImgurl(rs.getString("imgurl"));
                oi.setP(p);
                list.add(oi);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }
订单支付

2.2 pay.jsp

在这里插入图片描述

2.2 UsersServlet

        //支付订单
        if("pay".equals(act)){
            //订单编号order id
            String id=request.getParameter("id");
            int sid= Integer.parseInt(id);
            OrderDao od=new OrderDao();
            if(od.pay(sid)){
                response.getWriter().println("pay success");
            }else {
                response.getWriter().println("pay error");
            }
        }

2.2 OrderDao

    //由订单编号修改支付状态
    public boolean pay(int id){
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            con = JDBCutils.getConnection();
            String sql="update orders set paystate=1 where id=?";
            pst=con.prepareStatement(sql);
            pst.setInt(1,id);
            System.out.println(pst);
            int i=pst.executeUpdate();
            if(i==1){
                return true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCutils.close(con, pst, rs);
        }
        return false;
    }
订单删除

2.3 UsersServlet

删除

        //删除我的订单
        if("delete".equals(act)){
            String id=request.getParameter("id");
            int sid= Integer.parseInt(id);
            OrderDao od=new OrderDao();
            if(od.delete2(sid)){
                if(od.delete(sid)){
                    response.getWriter().println("delete success");
                }else {
                    response.getWriter().println("delete error");
                }
            }else {
                response.getWriter().println("delete error");
            }
        }

2.3 OrderDao

    //删除我的订单orderItems
    public boolean delete2(int id){
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            con = JDBCutils.getConnection();
            String sql="delete from orderItems where order_id=?";
            pst=con.prepareStatement(sql);
            pst.setInt(1,id);
            System.out.println(pst);
            int i=pst.executeUpdate();
            if(i==1){
                return true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCutils.close(con, pst, rs);
        }
        return false;
    }
    //删除我的订单orders
    public boolean delete(int id){
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            con = JDBCutils.getConnection();
            String sql="delete from orders where id=?";
            pst=con.prepareStatement(sql);
            pst.setInt(1,id);
            System.out.println(pst);
            int i=pst.executeUpdate();
            if(i==1){
                return true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCutils.close(con, pst, rs);
        }
        return false;
    }

五、报错解决方式

在这里插入图片描述

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐