大项目之网上书城(六)——个人页面和书页面Demo

目录

  • 大项目之网上书城(六)——个人页面和书页面Demo

    • 主要改动
    • 1.user.jsp
      • 代码
      • 效果图
    • user.js
      • 代码
    • 3.shu.jsp
      • 代码
      • 效果图
    • 4.其他小改动
      • LoginServlet
      • LogoutServlet
      • BookService
      • XinShuMingServlet
    • 5.新增
      • FindPageByIdServlet
      • ShuImgByIdServlet
    • 总结

大项目之网上书城(六)——个人页面和书页面Demo

主要改动

今天时间依旧不是很多,,主要是今天思路不够丰富。勉强给个人页面设计了个banner,显示了下昵称。然后加了个浏览历史和推荐书籍。就没思路了。浏览历史通过cookie来完成,这个弄了超久!一直在想为啥明明是名字相同的cookie,为啥获取的值不一样,然后在浏览器上看了下Application里的cookies,才知道,原来他俩的path不同。。。然后果断改成功啦!

1.user.jsp

代码

浏览历史的cookie会在用户登录的时候产生,初始为0#0#0#0#0

以及本来还打算加个头像来着,想想还要改表,算了算了。。。同样被毙掉的还有昵称。

<%@page import="cn.edu.bdu.mc.utils.CookieUtil"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<title>个人信息</title>
<script type="text/javascript" src="${pageContext.request.contextPath}/jquery-3.3.1/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/client/js/user.js"></script>
<style type="text/css">
    .inc{
        float:left;
        margin-left:3%;
        margin-top:1%;
        width:16%;
        height:90%;
        background-color:rgba(160,128,255,0.8);
    }
</style>
</head>
<body style="background-color:#bbb">
<c:if test="${user==null }">
    <jsp:forward page="login.jsp"></jsp:forward>
</c:if>
<!-- 是否退出? -->
<div style="position:absolute;left:46%;top:46%;height:100px;width:200px;display:none;background-color:rgba(145, 162, 196, 0.9);border:1px;text-align:center;"id="quit1">
    <h3>是否要退出?</h3><a class="btn btn-info" href="${pageContext.request.contextPath }/Logout">是</a>&nbsp;&nbsp;&nbsp;&nbsp;<button class="btn btn-info" id="no">否</button>
</div>
<!-- 调用头部页面 -->
<div style="width:100%;height:100px;float:left">
<jsp:include page="/client/head.jsp"></jsp:include>
</div>
<!-- 通用内容体大小 -->
<div style="width:70%;height:720px;float:left;margin-left:15%;">
    <div style="width:100%;height:250px;float:left;background-image:url(img/banner.png);background-size:100% 100%;">
        <div style="margin-top:200px;margin-left:40px;float:left;width:300px">
            <font style="float:left">欢迎您,<a>${user.username }</a>!</font>
            <font style="float:left"><a href="#" id="quit">退出登录</a></font>
        </div>
    </div>
    <div style="width:100%;height:470px;float:left">
        <div style="width:100%;height:10%;text-align:center;line-height:45px;background-color:rgba(85,107,47,0.8)">
            <font color="#ddd" style="font-size:20px;">您看过的书籍</font>
        </div>
        <div style="width:100%;height:40%;text-align:center;line-height:45px;background-color:rgba(85,139,84,0.8)">
        <% String[] list = CookieUtil.findCookieByName(request.getCookies(), "bookHistory").getValue().split("#"); %>
            <div class="inc" style="margin-left:4%">
                <%if(!list[0].equals("0")){ %>
                    <img alt="图书" src="${pageContext.request.contextPath}/ShuImgById?book_id=<%=list[0] %>" style="width:100%;height:100%" id="history1"/>
                <%}else{ %>
                    <img alt="图书" style="width:100%;height:100%"/>
                <%} %>
            </div>
            <div class="inc">
                <%if(!list[1].equals("0")){ %>
                    <img alt="图书" src="${pageContext.request.contextPath}/ShuImgById?book_id=<%=list[1] %>" style="width:100%;height:100%" id="history1"/>
                <%}else{ %>
                    <img alt="图书" style="width:100%;height:100%"/>
                <%} %>
            </div>
            <div class="inc">
                <%if(!list[2].equals("0")){ %>
                    <img alt="图书" src="${pageContext.request.contextPath}/ShuImgById?book_id=<%=list[2] %>" style="width:100%;height:100%" id="history1"/>
                <%}else{ %>
                    <img alt="图书" style="width:100%;height:100%"/>
                <%} %>
            </div>
            <div class="inc">
                <%if(!list[3].equals("0")){ %>
                    <img alt="图书" src="${pageContext.request.contextPath}/ShuImgById?book_id=<%=list[3] %>" style="width:100%;height:100%" id="history1"/>
                <%}else{ %>
                    <img alt="图书" style="width:100%;height:100%"/>
                <%} %>
            </div>
            <div class="inc">
                <%if(!list[4].equals("0")){ %>
                    <img alt="图书" src="${pageContext.request.contextPath}/ShuImgById?book_id=<%=list[4] %>" style="width:100%;height:100%" id="history1"/>
                <%}else{ %>
                    <img alt="图书" style="width:100%;height:100%"/>
                <%} %>
            </div>
        </div>
        <div style="width:100%;height:10%;text-align:center;line-height:45px;background-color:rgba(85,107,47,0.8)">
            <font color="#ddd" style="font-size:20px;">为您推荐书籍</font>
        </div>
        <div style="width:100%;height:40%;text-align:center;line-height:45px;background-color:rgba(85,139,84,0.8)">
            <div class="inc" style="margin-left:4%">
                <img alt="图书" src="${pageContext.request.contextPath}/XinShuImg?shu=1" style="width:100%;height:100%" id="re1"/>
            </div>
            <div class="inc">
                <img alt="图书" src="${pageContext.request.contextPath}/XinShuImg?shu=2" style="width:100%;height:100%" id="re2"/>
            </div>
            <div class="inc">
                <img alt="图书" src="${pageContext.request.contextPath}/XinShuImg?shu=3" style="width:100%;height:100%" id="re3"/>
            </div>
            <div class="inc">
                <img alt="图书" src="${pageContext.request.contextPath}/XinShuImg?shu=4" style="width:100%;height:100%" id="re4"/>
            </div>
            <div class="inc">
                <img alt="图书" src="${pageContext.request.contextPath}/XinShuImg?shu=5" style="width:100%;height:100%" id="re5"/>
            </div>
        </div>
    </div>
</div>
<!-- 调用底部页面 -->
<div style="width:100%;height:60px;float:left">
<jsp:include page="/client/foot.jsp"></jsp:include>
</div>
</body>
</html>

效果图

点击退出账号后,

user.js

代码

$(function(){
    $("#quit").click(function(){
        $("#quit1").css("display","block");
    });
    $("#no").click(function(){
        $("#quit1").css("display","none");
    });
    $("#re1").click(function(){
        $.post("../XinShuMing?shu=1",function(data){
            window.location.href=data.split("@")[2];
        });
    });
    $("#re2").click(function(){
        $.post("../XinShuMing?shu=2",function(data){
            window.location.href=data.split("@")[2];
        });
    });
    $("#re3").click(function(){
        $.post("../XinShuMing?shu=3",function(data){
            window.location.href=data.split("@")[2];
        });
    });
    $("#re4").click(function(){
        $.post("../XinShuMing?shu=4",function(data){
            window.location.href=data.split("@")[2];
        });
    });
    $("#re5").click(function(){
        $.post("../XinShuMing?shu=5",function(data){
            window.location.href=data.split("@")[2];
        });
    });
    $("#history1").click(function(){
        var book_id=$(this)[0].src.split("=")[1];
        if(book_id!=0){
            $.post("../FindPageById?book_id="+book_id,function(data){
                window.location.href=data;
            });
        }
    });
    $("#history2").click(function(){
        var book_id=$(this)[0].src.split("=")[1];
        if(book_id!=0){
            $.post("../FindPageById?book_id="+book_id,function(data){
                window.location.href=data;
            });
        }
    });
    $("#history3").click(function(){
        var book_id=$(this)[0].src.split("=")[1];
        if(book_id!=0){
            $.post("../FindPageById?book_id="+book_id,function(data){
                window.location.href=data;
            });
        }
    });
    $("#history4").click(function(){
        var book_id=$(this)[0].src.split("=")[1];
        if(book_id!=0){
            $.post("../FindPageById?book_id="+book_id,function(data){
                window.location.href=data;
            });
        }
    });
    $("#history5").click(function(){
        var book_id=$(this)[0].src.split("=")[1];
        if(book_id!=0){
            $.post("../FindPageById?book_id="+book_id,function(data){
                window.location.href=data;
            });
        }
    });
});

3.shu.jsp

代码

<%@page import="cn.edu.bdu.mc.utils.CookieUtil"%>
<%@page import="cn.edu.bdu.mc.services.impls.BookServiceImpl"%>
<%@page import="cn.edu.bdu.mc.services.BookService"%>
<%@page import="cn.edu.bdu.mc.beans.Book"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<title>空白</title>
</head>
<body style="background-color:#bbb">
<!-- 调用头部页面 -->
<div style="width:100%;height:100px;float:left">
<jsp:include page="/client/head.jsp"></jsp:include>
</div>
<!-- 通用内容体大小 -->
<div style="width:70%;height:886px;float:left;margin-left:15%;">
    <!-- 二级导航 -->
    <jsp:include page="/client/head2.jsp"></jsp:include>
    <!-- 通用界面 -->
    <% BookService bookService = new BookServiceImpl();
    int er_id = Integer.parseInt(request.getParameter("er_id"));
    Book book = bookService.findBookByClazzAndEr_id("clothing",er_id);
    Cookie[] cookies = request.getCookies();
    Cookie cookie = CookieUtil.findCookieByName(cookies, "bookHistory");
    cookie.setValue(book.getBook_id()+"#"+cookie.getValue());
    cookie.setPath("/bookstore");
    if(cookie.getValue().split("#").length>5){
        cookie.setValue(cookie.getValue().substring(0,cookie.getValue().lastIndexOf("#")));
    }
    response.addCookie(cookie);
    %>
    <div style="width:100%;height:800px;float:left;margin-top:2%;background-color:#ccc;">
        书的通用界面,具体怎么显示再说吧。。。<br/>
        书名:<%=book.getBook_name() %><br/>
        价格:<%=book.getPrice() %><br/>
        类别:<%=book.getClazz() %><br/>
        点击量:<%=book.getClick_num() %><br/>
        购买量:<%=book.getBuy_num() %><br/>
        热度:<%=book.getRe_du() %><br/>
        剩余数量:<%=book.getCount() %><br/>
    </div>
</div>
<!-- 调用底部页面 -->
<div style="width:100%;height:60px;float:left">
<jsp:include page="/client/foot.jsp"></jsp:include>
</div>
</body>
</html>

效果图

4.其他小改动

LoginServlet

package cn.edu.bdu.mc.servlets;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.edu.bdu.mc.beans.User;
import cn.edu.bdu.mc.services.UserService;
import cn.edu.bdu.mc.services.impls.UserServiceImpl;
import cn.edu.bdu.mc.utils.CookieUtil;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/Login")
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            // TODO Auto-generated method stub
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            UserService userService = new UserServiceImpl();
            Object login = userService.login(username, password);
            if(login.equals("user")) {
                request.setAttribute("errorMsg", "用户名不存在");
                request.getRequestDispatcher("client/login.jsp").forward(request, response);
            }else if(login.equals("pass")) {
                request.setAttribute("errorMsg", "密码错误");
                request.getRequestDispatcher("client/login.jsp").forward(request, response);
            }else {
                User user = (User) login;
                Cookie[] cookies = request.getCookies();
                if(CookieUtil.findCookieByName(cookies,"bookHistory")==null) {
                    Cookie cookie = new Cookie("bookHistory","0#0#0#0#0");
                    //cookie存放3天。
                    cookie.setMaxAge(3*24*60*60);
                    response.addCookie(cookie);
                }
                request.getSession().setAttribute("user", user);
                response.sendRedirect("client/index.jsp");
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

LogoutServlet

package cn.edu.bdu.mc.servlets;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LogoutServlet
 */
@WebServlet("/Logout")
public class LogoutServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public LogoutServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.getSession().removeAttribute("user");
        Cookie cookie = new Cookie("bookHistory","");
        cookie.setMaxAge(0);
        response.addCookie(cookie);
        response.sendRedirect("client/index.jsp");
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

BookService

@Override
    public Book findBookByClazzAndEr_id(String clazz, int er_id) throws SQLException {
        // TODO Auto-generated method stub
        String sql = "select * from book where clazz = ? and second_id = ?";
        return queryRunner.query(sql, new BeanHandler<Book>(Book.class),clazz,er_id);
    }

XinShuMingServlet

加了一些方便我处理的返回值。

String html = "<a href='/bookstore/client/"+book.getClazz()+"/shu.jsp?er_id="+book.getSecond_id()+"' style='font-size:16px'>"+book.getBook_name()+"</a>@"+re_du+"@"+book.getClazz()+"/shu.jsp?er_id="+book.getSecond_id();
            response.getWriter().print(html);

5.新增

FindPageByIdServlet

package cn.edu.bdu.mc.servlets;

import java.io.IOException;
import java.sql.SQLException;

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 cn.edu.bdu.mc.beans.Book;
import cn.edu.bdu.mc.daos.BookDao;
import cn.edu.bdu.mc.daos.impls.BookDaoImpl;

/**
 * Servlet implementation class FindPageByIdServlet
 */
@WebServlet("/FindPageById")
public class FindPageByIdServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public FindPageByIdServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        try {
            int book_id = Integer.parseInt(request.getParameter("book_id"));
            BookDao bookDao = new BookDaoImpl();
            Book book = bookDao.findBookById(book_id);
            response.getWriter().print(book.getClazz()+"/shu.jsp?er_id="+book.getSecond_id());
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

ShuImgByIdServlet

package cn.edu.bdu.mc.servlets;

import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.SQLException;

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.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageDecoder;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

import cn.edu.bdu.mc.services.BookService;
import cn.edu.bdu.mc.services.impls.BookServiceImpl;

/**
 * Servlet implementation class ShuImgByIdServlet
 */
@WebServlet("/ShuImgById")
public class ShuImgByIdServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public ShuImgByIdServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        try {
            int book_id = Integer.parseInt(request.getParameter("book_id"));
            response.setContentType("image/jpeg;charset=GB2312");
            BookService bookService = new BookServiceImpl();
            InputStream is = bookService.getImgById(book_id);
            BufferedInputStream imageIn = new BufferedInputStream(is);
            OutputStream output = response.getOutputStream();

            JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);
            // 得到编码后的图片对象
            BufferedImage image = decoder.decodeAsBufferedImage();
            // 得到输出的编码器
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
            encoder.encode(image);// 对图片进行输出编码
            imageIn.close();// 关闭文件流
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

总结

我好像越来越懒得整理这个了。emmmmm,希望我能坚持下去吧,等到书城做完再歇一阵儿。。坚持!
哦对了,今天还给颜色整体改了改,就是把透明度都调了调,感觉显示效果稍微好了那么一点儿。

原文地址:https://www.cnblogs.com/zhangA/p/11055543.html

时间: 2024-07-29 23:20:52

大项目之网上书城(六)——个人页面和书页面Demo的相关文章

大项目之网上书城(二)——主页(上)

目录 大项目之网上书城(二)--主页(上) 1.主页 代码 效果图 2.head2.jsp 代码 效果图 3.二级页面的empty.jsp 代码 效果图 总结 WebContent图 大项目之网上书城(二)--主页(上) 实在是太复杂啦,弄了半天才调出来一个壳子.明天再继续吧... 1.主页 代码 值得一提的是,我把所以的路径都改成用${pageContext}来获取的了,这样就可以方便我在不同的地方复制粘贴同样的代码,能有同样的功效了.(甚至字体的url都改了23333) <%@ page l

大项目之网上书城(九)——订单Demo

目录 大项目之网上书城(九)--订单Demo 主要改动 1.OrderServiceImpl 代码 2.OrderDaoImpl 代码 3.OrderitemDaoImpl 代码 4.orderitem_insert触发器 代码 5.DelOrderServlet 代码 6.NewOrderServlet 代码 7.PayForServlet 代码 8.shouhuo.jsp 代码 效果图 9.order.jsp 代码 效果图 总结 大项目之网上书城(九)--订单Demo 主要改动 加了创建订单

大项目之网上书城(十二)——完成啦

目录 大项目之网上书城(十二)--完成啦 主要改动 新增代码 1.addCategory.jsp 效果图 2.bookManager.jsp 效果图 3.userManager.jsp 效果图 4.error404.jsp 效果图 5.error500.jsp 效果图 6.errorelse.jsp 效果图 7.web.xml 8.addFenLeiServlet 9.bookDao里的addFenLei 总结 github页面 bookstoreZhang 大项目之网上书城(十二)--完成啦

项目2——网上书城项目

这个项目是帮舍友做的毕设项目,舍友是个作家,写小说的,想做一个管理小说的系统,我就帮代劳了,如果做出来他看不上再花钱找别人那就不该我事了哈哈,我尽力给做的好一点吧,舍友需求还是挺简单的 首先进行需求分析 前台 1.用户模块: 注册 激活 登录 退出 2.分类模块: 查看所有分类 3.图书模块 查询所有图书 按分类查询图书 查询图书详细(按id查询) 4.购物车模块: 添加购物车条目 清空所有条目 删除指定条目 我的购物车(按用户查询购物车) 5.订单模块 生成订单 我的订单(按用户查询订单) 按

网上书城项目

实习就要结束了,最终要上交的是网上书城项目和一份文档.接下来简要介绍一下项目. 项目是根据三层架构来写,数据访问层(DAO层).系统业务逻辑控制处理层(servlet层).和界面层(jsp). 首先在DAO层构造好SQL语句,对数据库进行操作,在servlet层调用Dao层相关方法进行相应的逻辑处理,JSP负责构造界面以及显示数据. 下面贴出代码,仅供参考,一些功能的具体实现在功能说明时有所介绍,只贴一些比较重要的部分的代码,大家主要重在理解. 此次项目,我感觉比较困难的部分是 加入购物车 部分

网上书城项目总结(servlet_jsp+javaBean)

网上书城项目总结 1 项目大纲设计: 需求分析 系统设计 详细设计 权限设计 2 技术选型: Servlet+jsp+javaBean Listener+Filter+jstl+fileupload+c3p0+dbutils+mysql 3 开发顺序: 从dao层到service层再到web层 网上书城需求分析: 分别对管理员,普通用户,系统三个用户角色的各个功能的实现. 其中包括管理员对图书商城的后台图书以及图书的类别分类增删查改,以及订单的状态; 普通用户对于图书的选购,浏览,购物车的管理以

【SSH网上商城项目实战22】获取银行图标以及支付页面的显示

从上一节的小demo中我们搞清楚了如何跟易宝对接以及易宝的支付流程.这一节我们来做一下支付页面以及在页面中导入银行图标. 1. 存储银行图标 银行图标一般不会总是去加载,因为这些东西是死的,没必要每次进入支付页面就去加载银行图标,这样性能会受到一定的影响.这让我们联想到了之前的加载首页数据了,其实跟那个道理是一样的,我们可以在项目启动的时候就将银行图标资源加载到application中,后面用到了就直接在application域中取就行了.所以跟原来一样,我们在监听器中加载银行图标.  银行图标

网上书城+源码

经过一段时间的Java Web基础知识的学习,为了将整个知识点串联起来,自己写了一个简单的网上书城小项目.整个项目架构比较简单,适合像我这种Java Web初学者来学习参考,项目名称web_bookstore,是基于servlet/jsp和html/css/js实现的. 整个工程代码已push到Git,详见地址:web_bookstore. 整体架构 该网上书城项目分为前台和后台两大部分,前台部分包括会员注册.会员登录.购买书籍.添加购物车.结算等功能,后台部分包括查看会员.查看商品.添加商品等

项目经理的“三边六拍”

http://www.gogogogo.me/digest/xiangmu.html “三边”是指:边计划.边实施.边修改: “六拍”是指:拍脑袋.拍肩膀.拍胸口.拍桌子.拍屁股.拍大腿! 第一拍:拍脑袋 客户领导与软件公司领导在一起,“拍脑袋”确定了一个项目,于是项目马上就要开始了,你的麻烦马上就要来了. “拍脑袋”主要说明的问题是没有想清楚为什么要做这个项目,不怎样考虑可行性和最终效果,就冲动地让项目上马了. 第二拍:拍肩膀 领导安排项目工作给你时,往往是语重心长地说类似这样的话:这个项目对