action 选择

package cn.itcast.estore.web.servlet;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.IOUtils;

import cn.itcast.estore.domain.Product;
import cn.itcast.estore.service.ProductService;
import cn.itcast.estore.utils.FileUploadUtils;
import cn.itcast.estore.utils.PicUtils;

public class ProductServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String action = request.getParameter("action");

        if ("addProduct".equals(action)) {

            // 将数据封装到Product中
            Product product = new Product();

            Map<String, String> map = null;
            try {
                map = getProductMap(request);
                BeanUtils.populate(product, map);

                // 生成缩略图
                String source_imgurl = map.get("imgurl");
                PicUtils picUtils = new PicUtils(this.getServletContext()
                        .getRealPath("/uploadImages") + source_imgurl);
                // 以高度为基准,等比例缩放图片
                // picUtils.resizeByHeight(picUtils.getSrcHeight());
                // 设置自定义宽、高缩放图片
                picUtils.resize(55, 55);
                // 调用service完成数据插入
                ProductService service = new ProductService();
                service.addProduct(product);

                // 重定向到add_product_success.jsp
                request.getRequestDispatcher("/index.jsp").forward(request,
                        response);
                return;
            } catch (FileUploadException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else if ("findAllProduct".equals(action)) {
            // 调用service完成数据查询
            ProductService service = new ProductService();
            try {
                List<Product> ps = service.findAddProduct();

                // 将ps保存在request中,转发到home.jsp
                request.setAttribute("ps", ps);
                request.getRequestDispatcher("/index.jsp").forward(request,
                        response);
                return;
            } catch (SQLException e) {
                e.printStackTrace();

            }
        }
    }

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

    // 封装上传商品信息
    public Map<String, String> getProductMap(HttpServletRequest request)
            throws FileUploadException, FileNotFoundException, IOException {
        // 封装商品数据信息
        Map<String, String> map = new HashMap<String, String>();

        // 封装商品id
        String UUid = UUID.randomUUID().toString();
        map.put("id", UUid);

        // 1.创建 DiskFileItemFactory
        DiskFileItemFactory factory = new DiskFileItemFactory();
        // 2.创建ServletFileUpload
        ServletFileUpload upload = new ServletFileUpload(factory);
        // 解决上传文件中文名称乱码
        upload.setHeaderEncoding("utf-8");

        // 3.底层通过request获取数据,进行解析,将解析的数据封装到List<FileItem>
        List<FileItem> items = upload.parseRequest(request);
        // 4.循环遍历
        for (FileItem item : items) {
            // 判断是否是上传组件
            if (item.isFormField()) {
                // 非上传组件

                String fileName = item.getFieldName();
                String context = item.getString();
                context = new String(context.getBytes("iso-8859-1"), "utf-8");

                // 封装非组件数据
                map.put(fileName, context);
            } else {
                // 上传组件

                // 获取上传文件名称
                String filename = item.getName();
                filename = FileUploadUtils.getRealName(filename);
                // 获取随机文件名
                String randomName = FileUploadUtils.getUUIDFileName(filename);
                // 获取uploadImages发布后的绝对磁盘路径
                String parentPath = this.getServletContext().getRealPath(
                        "uploadImages");
                // 获取随机目录
                String randomDir = FileUploadUtils
                        .getRandomDirectory(randomName);

                File rd = new File(parentPath, randomDir);
                // 如果目录不存在,就创建
                if (!rd.exists()) {
                    rd.mkdirs();
                }
                // 复制上传文件
                IOUtils.copy(item.getInputStream(), new FileOutputStream(
                        new File(rd, randomName)));
                // 封装imgUrl
                map.put("imgurl", "/uploadImages" + randomDir + "/"
                        + randomName);
            }
        }
        return map;
    }
}
 

add_product.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>增加商品</title>
</head>
<body>
    <form
        action="${pageContext.request.contextPath }/product?action=addProduct"
        method="post" enctype="multipart/form-data">
        <table border="2px" align="center">
            <tr>
                <td>商品名称:</td>
                <td><input type="text" name="pname"></td>
            </tr>
            <tr>
                <td>价钱:</td>
                <td><input type="text" name="price"></td>
            </tr>
            <tr>
                <td>类别:</td>
                <td><select name="category">
                        <option>----请选择类别-----</option>
                        <option value="日常用品">日常用品</option>
                        <option value="生活用户">生活用户</option>
                        <option value="美颜">美颜</option>
                </select></td>
            </tr>
            <tr>
                <td>数量:</td>
                <td><input type="text" name="num"></td>
            </tr>
            <tr>
                <td>描述:</td>
                <td><textarea rows="5" cols="20" name="desc"></textarea></td>
            </tr>
            <tr>
                <td>图片:</td>
                <td><input type="file" name="imgurl"></td>
            </tr>
            <tr>
                <td><input type="submit" value="提交"></td>
                <td><input type="reset" value="取消"></td>
            </tr>
        </table>
    </form>
</body>
</html>

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

</head>

<body>
    <jsp:forward page="/home.jsp"></jsp:forward>
</body>
</html>

home.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<!--
    Created by Artisteer v2.6.0.35446
    Base template (without user's data) checked by http://validator.w3.org : "This page is valid XHTML 1.0 Transitional"
    -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Estore购物商城</title>

<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
<!--[if IE 6]><link rel="stylesheet" href="style.ie6.css" type="text/css" media="screen" /><![endif]-->
<!--[if IE 7]><link rel="stylesheet" href="style.ie7.css" type="text/css" media="screen" /><![endif]-->

<script type="text/javascript" src="script.js"></script>
<script type="text/javascript">
    var focus_width = 632;
    var focus_height = 320;
    var picPath;
    var linkUrl = "";
    var swfPath = "adImage.swf";
    var sp = "|";
    var banners = new Array("images/screen1.jpg", "images/screen2.jpg",
            "images/screen3.jpg", "images/screen4.jpg", "images/screen5.jpg",
            "images/screen6.jpg");
    var links = new Array("#", "#", "#", "#", "#", "#");

    for (var i = 0; i < banners.length; i++) {
        if (i == banners.length - 1) {
            sp = "";
        }
        picPath += banners[i] + sp;
        var index = picPath.indexOf("undefined");
        if (index != -1) {
            picPath = picPath.substr(index + 9, picPath.length);
        }
        linkUrl += links[i] + sp;
    }
    window.onload = function() {
        var username = document.getElementById("username");
        //username.value = window.decodeURI("${cookie.remember.value}");
        username.value = window.decodeURIComponent("${cookie.remember.value}",
                "utf-8");
    }
</script>
</head>
<body>
    <div id="art-main">
        <div class="art-sheet">
            <div class="art-sheet-tl"></div>
            <div class="art-sheet-tr"></div>
            <div class="art-sheet-bl"></div>
            <div class="art-sheet-br"></div>
            <div class="art-sheet-tc"></div>
            <div class="art-sheet-bc"></div>
            <div class="art-sheet-cl"></div>
            <div class="art-sheet-cr"></div>
            <div class="art-sheet-cc"></div>
            <div class="art-sheet-body">
                <div class="art-header">
                    <div class="art-header-png"></div>
                    <div class="art-header-jpeg"></div>
                    <div class="art-logo">
                        <h1 id="name-text" class="art-logo-name">
                            <a href="#">Estore购物商城</a>
                        </h1>
                        <div id="slogan-text" class="art-logo-text">快乐的购物天堂...</div>
                    </div>
                </div>
                <div class="art-nav">
                    <div class="l"></div>
                    <div class="r"></div>
                    <ul class="art-menu">
                        <li><a href="#" class="active"><span class="l"></span><span
                                class="r"></span><span class="t">主页</span> </a></li>
                        <li><a href="#"><span class="l"></span><span class="r"></span><span
                                class="t">商品分类</span> </a>
                            <ul>
                                <li><a href="#">图书、电子书刊、音像</a></li>
                                <li><a href="#">电子数码</a>
                                    <ul>
                                        <li><a href="#">家用电器</a></li>
                                        <li><a href="#">手机数码</a></li>
                                        <li><a href="#">电脑、办公</a></li>
                                    </ul></li>
                                <li><a href="#">家居、家具、家装、厨具</a></li>
                            </ul></li>
                        <li><a href="#"><span class="l"></span><span class="r"></span><span
                                class="t">关于我们</span> </a></li>
                        <c:if test="${not empty existUser}">
                            <li>当前用户:${existUser.username }</li>
                            <li><a href="${pageContext.request.contextPath }/logout">注销</a>
                            </li>
                        </c:if>
                        <c:if test="${empty existUser }">
                            <li>未登录</li>
                        </c:if>

                    </ul>
                </div>
                <div class="art-content-layout">
                    <div class="art-content-layout-row">
                        <div class="art-layout-cell art-content">
                            <div class="art-post">
                                <div class="art-post-tl"></div>
                                <div class="art-post-tr"></div>
                                <div class="art-post-bl"></div>
                                <div class="art-post-br"></div>
                                <div class="art-post-tc"></div>
                                <div class="art-post-bc"></div>
                                <div class="art-post-cl"></div>
                                <div class="art-post-cr"></div>
                                <div class="art-post-cc"></div>
                                <div class="art-post-body">
                                    <div class="art-post-inner art-article">
                                        <div class="art-postmetadataheader">
                                            <h2 class="art-postheader">商品促销信息</h2>
                                        </div>
                                        <div class="art-postcontent">
                                            <!-- article-content -->
                                            <script type="text/javascript" src="mutilpleFlash.js"></script>
                                            <!-- /article-content -->
                                        </div>
                                        <div class="cleared"></div>
                                    </div>

                                    <div class="cleared"></div>
                                </div>
                            </div>

                            <div class="art-post">
                                <div class="art-post-tl"></div>
                                <div class="art-post-tr"></div>
                                <div class="art-post-bl"></div>
                                <div class="art-post-br"></div>
                                <div class="art-post-tc"></div>
                                <div class="art-post-bc"></div>
                                <div class="art-post-cl"></div>
                                <div class="art-post-cr"></div>
                                <div class="art-post-cc"></div>
                                <div class="art-post-body">

                                    <div class="art-post-inner art-article">
                                        <div class="art-postmetadataheader">
                                            <h2 class="art-postheader">热卖商品销售中</h2>
                                        </div>
                                        <div class="art-postcontent">
                                            <!-- article-content -->
                                            <p>
                                                <span class="art-button-wrapper"> <span class="l">
                                                </span> <span class="r"> </span> <a class="art-button"
                                                    href="${pageContext.request.contextPath}/product?action=findAllProduct">更多商品...</a>
                                                </span>
                                            </p>


                                            <div class="cleared"></div>
                                            <div class="art-content-layout overview-table">
                                                <div class="art-content-layout-row">
                                                    <c:forEach items="${ps}" var="p" varStatus="vs">
                                                        <div class="art-layout-cell">
                                                            <div class="overview-table-inner">
                                                                <h4>${p.pname }</h4>
                                                                <a
                                                                    href="${pageContext.request.contextPath}/findProductId?id=${p.id}"><img
                                                                    src="${pageContext.request.contextPath }${p.imgurl}"
                                                                    width="55px" height="55px" alt="an image" class="image" />
                                                                </a>
                                                                <p>价格: ¥${p.price}</p>
                                                                <p>
                                                                    <a
                                                                        href="${pageContext.request.contextPath}/findProductId?id=${p.id}">速速抢购</a>
                                                                </p>
                                                            </div>
                                                        </div>
                                                        <c:if test="${vs.count%6==0 and !(vs.last)}">
                                                            <!-- 判断当前已经有6个商品且不是最后一个元素,则这一行结束,重新开启一行  -->
                                                </div>
                                                <div class="art-content-layout-row">
                                                    </c:if>

                                                    </c:forEach>

                                                </div>
                                                <!-- end row -->
                                                <!-- forEach结束之后是否需要在关闭行标签,加入最后一行不够6个时行标签是开着的 -->
                                            </div>
                                            <!-- end table -->
                                        </div>
                                        <!-- /article-content -->


                                        <div class="cleared"></div>
                                    </div>

                                    <div class="cleared"></div>
                                </div>
                            </div>
                        </div>
                        <div class="art-layout-cell art-sidebar1">
                            <div class="art-vmenublock">
                                <div class="art-vmenublock-body">
                                    <div class="art-vmenublockheader">
                                        <div class="l"></div>
                                        <div class="r"></div>
                                        <div class="t">导航菜单</div>
                                    </div>
                                    <div class="art-vmenublockcontent">
                                        <div class="art-vmenublockcontent-tl"></div>
                                        <div class="art-vmenublockcontent-tr"></div>
                                        <div class="art-vmenublockcontent-bl"></div>
                                        <div class="art-vmenublockcontent-br"></div>
                                        <div class="art-vmenublockcontent-tc"></div>
                                        <div class="art-vmenublockcontent-bc"></div>
                                        <div class="art-vmenublockcontent-cl"></div>
                                        <div class="art-vmenublockcontent-cr"></div>
                                        <div class="art-vmenublockcontent-cc"></div>
                                        <div class="art-vmenublockcontent-body">
                                            <!-- block-content -->
                                            <ul class="art-vmenu">
                                                <li><a href="page.html?i1"><span class="l"></span><span
                                                        class="r"></span><span class="t">主页</span> </a></li>
                                                <li><a
                                                    href="${pageContext.request.contextPath }/add_product.jsp"><span
                                                        class="l"></span><span class="r"></span><span class="t">添加商品</span>
                                                </a></li>
                                                <li><a href="page.html?i4"><span class="l"></span><span
                                                        class="r"></span><span class="t">查看商品</span> </a></li>
                                                <li><a href="page.html?i5"><span class="l"></span><span
                                                        class="r"></span><span class="t">查看购物车</span> </a></li>
                                                <li><a href="page.html?i6"><span class="l"></span><span
                                                        class="r"></span><span class="t">查看订单</span> </a></li>
                                                <li><a href="page.html?i7"><span class="l"></span><span
                                                        class="r"></span><span class="t">关于我们</span> </a></li>
                                                <li><a href="page.html?i8"><span class="l"></span><span
                                                        class="r"></span><span class="t">联系方式</span> </a></li>
                                            </ul>
                                            <!-- /block-content -->

                                            <div class="cleared"></div>
                                        </div>
                                    </div>
                                    <div class="cleared"></div>
                                </div>
                            </div>
                            <div class="art-block">
                                <div class="art-block-body">
                                    <div class="art-blockheader">
                                        <div class="l"></div>
                                        <div class="r"></div>
                                        <div class="t">用户登陆</div>
                                    </div>

                                    <div class="art-blockcontent">
                                        <div class="art-blockcontent-tl"></div>
                                        <div class="art-blockcontent-tr"></div>
                                        <div class="art-blockcontent-bl"></div>
                                        <div class="art-blockcontent-br"></div>
                                        <div class="art-blockcontent-tc"></div>
                                        <div class="art-blockcontent-bc"></div>
                                        <div class="art-blockcontent-cl"></div>
                                        <div class="art-blockcontent-cr"></div>
                                        <div class="art-blockcontent-cc"></div>
                                        <div class="art-blockcontent-body">
                                            <!-- block-content -->
                                            <div>
                                                <form method="post" id="loginForm"
                                                    action="${pageContext.request.contextPath }/login">
                                                    <table>
                                                        <tr>
                                                            <td>用户名</td>
                                                            <td><input type="text" value="" name="username"
                                                                id="username" /><span>${map["username.error"] }</span><br />
                                                            </td>
                                                        </tr>
                                                        <tr>
                                                            <td>密 码</td>
                                                            <td><input type="text" value="" name="password"
                                                                id="password" /><span>${map["password.error"] }</span>
                                                            </td>
                                                        </tr>
                                                        <tr>
                                                            <td colspan="2"><input type="checkbox"
                                                                name="remember" value="on" />记住用户 <input
                                                                type="checkbox" name="autologin" value="on" />自动登陆</td>
                                                        </tr>
                                                        <tr>
                                                            <td colspan="1"><span class="art-button-wrapper">
                                                                    <span class="l"> </span> <span class="r"> </span> <input
                                                                    class="art-button" type="submit" name="loginbtn"
                                                                    value="登陆" />
                                                            </span></td>
                                                            <td colspan="1"><span class="art-button-wrapper">
                                                                    <span class="l"> </span> <span class="r"> </span> <a
                                                                    href="${pageContext.request.contextPath}/register.jsp"><input
                                                                        class="art-button" type="button" name="registerbtn"
                                                                        value="注册" /> </a>
                                                            </span></td>
                                                            <span>${requestScope["login.failure"]}</span>
                                                    </table>
                                                </form>
                                            </div>
                                            <!-- /block-content -->

                                            <div class="cleared"></div>
                                        </div>
                                    </div>
                                    <div class="cleared"></div>
                                </div>
                            </div>
                            <div class="art-block">
                                <div class="art-block-body">
                                    <div class="art-blockheader">
                                        <div class="l"></div>
                                        <div class="r"></div>
                                        <div class="t">查询商品</div>
                                    </div>
                                    <div class="art-blockcontent">
                                        <div class="art-blockcontent-tl"></div>
                                        <div class="art-blockcontent-tr"></div>
                                        <div class="art-blockcontent-bl"></div>
                                        <div class="art-blockcontent-br"></div>
                                        <div class="art-blockcontent-tc"></div>
                                        <div class="art-blockcontent-bc"></div>
                                        <div class="art-blockcontent-cl"></div>
                                        <div class="art-blockcontent-cr"></div>
                                        <div class="art-blockcontent-cc"></div>
                                        <div class="art-blockcontent-body">
                                            <!-- block-content -->
                                            <div>
                                                <form method="get" id="newsletterform"
                                                    action="javascript:void(0)">
                                                    <input type="text" value="" name="email" id="s"
                                                        style="width: 95%;" /> <span class="art-button-wrapper">
                                                        <span class="l"> </span> <span class="r"> </span> <input
                                                        class="art-button" type="submit" name="search" value="查询" />
                                                    </span>

                                                </form>
                                            </div>
                                            <!-- /block-content -->

                                            <div class="cleared"></div>
                                        </div>
                                    </div>
                                    <div class="cleared"></div>
                                </div>
                            </div>

                            <div class="art-block">
                                <div class="art-block-body">
                                    <div class="art-blockheader">
                                        <div class="l"></div>
                                        <div class="r"></div>
                                        <div class="t">联系信息</div>
                                    </div>
                                    <div class="art-blockcontent">
                                        <div class="art-blockcontent-tl"></div>
                                        <div class="art-blockcontent-tr"></div>
                                        <div class="art-blockcontent-bl"></div>
                                        <div class="art-blockcontent-br"></div>
                                        <div class="art-blockcontent-tc"></div>
                                        <div class="art-blockcontent-bc"></div>
                                        <div class="art-blockcontent-cl"></div>
                                        <div class="art-blockcontent-cr"></div>
                                        <div class="art-blockcontent-cc"></div>
                                        <div class="art-blockcontent-body">
                                            <!-- block-content -->
                                            <div>
                                                <img src="images/contact.jpg" alt="an image"
                                                    style="margin: 0 auto;display:block;width:95%" /> <br />
                                                <b>公司信息</b><br /> 传智播客<br /> 电子邮箱: <a
                                                    href="mailto:[email protected]">[email protected]</a><br />
                                                <br /> 电话: (010)51552112 <br /> 传真: (010)51552110
                                            </div>
                                            <!-- /block-content -->

                                            <div class="cleared"></div>
                                        </div>
                                    </div>
                                    <div class="cleared"></div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="cleared"></div>
                <div class="art-footer">
                    <div class="art-footer-t"></div>
                    <div class="art-footer-l"></div>
                    <div class="art-footer-b"></div>
                    <div class="art-footer-r"></div>
                    <div class="art-footer-body">
                        <a href="#" class="art-rss-tag-icon" title="RSS"></a>
                        <div class="art-footer-text">
                            <p>
                                <a href="#">关于我们</a> | <a href="#">联系我们</a> | <a href="#">人才招聘</a>
                                | <a href="#">商家入驻</a><br /> 版权 &#169; 2012 ---. 传智播客 版权所有.
                            </p>
                        </div>
                        <div class="cleared"></div>
                    </div>
                </div>
                <div class="cleared"></div>
            </div>
        </div>
        <div class="cleared"></div>
    </div>

</body>

发布了48 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/live801/article/details/103951505