⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 catalogxmlaction.java

📁 仿照著名的petstore写的网上书店
💻 JAVA
字号:
/* Copyright 2006 Sun Microsystems, Inc. All rights reserved. You may not modify, use, reproduce, or distribute this software except in compliance with the terms of the License at: http://developer.sun.com/berkeley_license.html$Id: CatalogXmlAction.java,v 1.4 2007/01/19 21:47:30 basler Exp $ */package com.sun.javaee.blueprints.petstore.controller.actions;import com.sun.javaee.blueprints.petstore.controller.ControllerAction;import com.sun.javaee.blueprints.petstore.model.CatalogFacade;import com.sun.javaee.blueprints.petstore.model.Category;import com.sun.javaee.blueprints.petstore.model.Item;import com.sun.javaee.blueprints.petstore.model.Product;import java.io.IOException;import java.io.PrintWriter;import java.text.NumberFormat;import java.util.List;import java.util.Locale;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * This action class serves up XML data for catalog. * @author Greg Murray * @author Mark Basler * @author Inderjeet Singh */public class CatalogXmlAction implements ControllerAction {        private final CatalogFacade cf;    public CatalogXmlAction(CatalogFacade cf) {        this.cf = cf;    }    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  {        request.setCharacterEncoding("UTF-8");        String command = request.getParameter("command");        if ("category".equals(command)) {            String catid = request.getParameter("catid");            // if(bDebug) System.out.println("Request for category with id: " + catid);            // set content-type header before accessing the Writer            response.setContentType("text/xml;charset=UTF-8");            PrintWriter out = response.getWriter();            String str = handleCategory(catid);            out.println(str);            out.close();        } else if ("items".equals(command)) {            String pid = request.getParameter("pid");            String startString = request.getParameter("start");            int start = 0;            if (startString != null) {                try {                    start = Integer.parseInt(startString);                } catch (NumberFormatException nfe) {                    // defaults start to 0                }            }            String lengthString = request.getParameter("length");            int length = 10;            if (lengthString != null) {                try {                    length = Integer.parseInt(lengthString);                } catch (NumberFormatException nfe) {                    // defaults length to 10                }            }            // set content-type header before accessing the Writer            response.setContentType("text/xml;charset=UTF-8");            // leave these headers here for development - remove for deploy            response.setHeader("Cache-Control", "no-cache");            response.setHeader("Pragma", "no-cache");            PrintWriter out = response.getWriter();            String baseURL = "http://" + request.getServerName() + ":" + request.getServerPort() + "/" + request.getContextPath() + "/ImageServlet/";            List<Item> items = cf.getItemsVLH(pid, start, length);            //get response data            String str = handleItems(items, baseURL);            out.println(str);            out.close();        } else if ("itemInChunk".equals(command)) {            String pid = request.getParameter("pid");            String itemId = request.getParameter("itemId");            int start = 0;            String lengthString = request.getParameter("length");            int length = 10;            if (lengthString != null) {                try {                    length = Integer.parseInt(lengthString);                } catch (NumberFormatException nfe) {                    // defaults length to 10                }            }            // set content-type header before accessing the Writer            response.setContentType("text/xml;charset=UTF-8");            // leave these headers here for development - remove for deploy            response.setHeader("Cache-Control", "no-cache");            response.setHeader("Pragma", "no-cache");            PrintWriter out = response.getWriter();            String baseURL = "http://" + request.getServerName() + ":" + request.getServerPort() + "/" + request.getContextPath() + "/ImageServlet/";            List<Item> items = cf.getItemInChunkVLH(pid, itemId, length);            //get response data            if (items != null) {                String str = handleItems(items, baseURL);                out.println(str);            } else {                out.println("<items></items>");            }            out.close();        } else if ("categories".equals(command)) {            //if(bDebug) System.out.println("Request for categories.");            String format = request.getParameter("format");                        //get response data in proper format            String str = handleCategories(format);                        if ((format != null) && format.toLowerCase().equals("json")) {                response.setContentType("text/javascript;charset=UTF-8");            } else {                response.setContentType("text/xml;charset=UTF-8");            }            PrintWriter out = response.getWriter();            out.println(str);            out.close();        } else if ("item".equals(command)) {            String targetId = request.getParameter("id");            //if(bDebug) System.out.println("CatalogServlet: Request for item with id: " + targetId);            String str = handleItem(targetId);            response.setContentType("text/xml;charset=UTF-8");            PrintWriter out = response.getWriter();            out.println(str);            out.close();        } else if("disable".equals(command)) {            String targetId=request.getParameter("id");            Item i=cf.getItem(targetId);            // disable and persist item            i.setDisabled(1);            cf.updateItem(i);            handleItem(targetId);        }    }        private String handleItems(List<Item> items, String baseURL) {        StringBuffer sb = new StringBuffer();        // then write the data of the response        sb.append("<items>\n");        //if(bDebug) System.out.println("**** Items length=" + items.size());        for (Item i : items) {            sb.append("<item>\n");            sb.append(" <id>" + i.getItemID() + "</id>\n");            sb.append(" <product-id>" + i.getProductID() + "</product-id>\n");            sb.append(" <rating>" + i.checkAverageRating() + "</rating>\n");            sb.append(" <name>" + i.getName() + "</name>\n");            sb.append(" <description><![CDATA[" + i.getDescription() + "]]></description>\n");            sb.append(" <price>" + NumberFormat.getCurrencyInstance(Locale.US).format(i.getPrice()) + "</price>\n");            sb.append(" <image-url>" + baseURL + i.getImageURL() + "</image-url>\n");            sb.append(" <image-tb-url>" + baseURL + i.getImageThumbURL() + "</image-tb-url>\n");            sb.append("</item>\n");        }        sb.append("</items>");        return sb.toString();    }        private String handleCategory(String categoryId) {        StringBuffer sb = new StringBuffer();        // then write the data of the response        sb.append("<category>\n");        sb.append("<cat-id>" + categoryId + "</cat-id>\n");        sb.append("<cat-name>" + cf.getCategory(categoryId).getName()  + "</cat-name>\n");        sb.append("<items>\n");        for (Item i : cf.getAllItemsFromCategory(categoryId)) {            sb.append("<item>\n");            sb.append(" <id>" + i.getItemID() + "</id>\n");            sb.append(" <prod-id>" + i.getProductID() + "</prod-id>\n");            sb.append(" <cat-id>" + categoryId + "</cat-id>\n");            sb.append(" <name>" + i.getName() + "</name>\n");            sb.append(" <price>" + NumberFormat.getCurrencyInstance(Locale.US).format(i.getPrice()) + "</price>\n");            sb.append(" <description><![CDATA[" + i.getDescription() + "]]></description>\n");            sb.append(" <image-url>" + i.getImageURL() + "</image-url>\n");            sb.append("</item>\n");        }        sb.append("</items>");        sb.append("</category>\n");        return sb.toString();    }        private String handleItem(String targetId){        Item i = cf.getItem(targetId);        StringBuffer sb = new StringBuffer();        sb.append("<item>\n");        sb.append(" <id>" + i.getItemID() + "</id>\n");        sb.append(" <cat-id>" + i.getProductID() + "</cat-id>\n");        sb.append(" <name>" + i.getName() + "</name>\n");        sb.append(" <description><![CDATA[" + i.getDescription() + "]]></description>\n");        sb.append(" <image-url>" + i.getImageURL() + "</image-url>\n");        sb.append(" <price>" + NumberFormat.getCurrencyInstance(Locale.US).format(i.getPrice())  + "</price>\n");        sb.append("</item>\n");        return sb.toString();    }        private String handleCategories(String format){        StringBuffer sb = new StringBuffer();        if ((format != null) && format.toLowerCase().equals("json")) {            sb.append("[\n");            boolean first = true;            for (Category c : cf.getCategories()) {                if (first) {                    first = false;                } else {                    sb.append(",\n");                }                String catid = c.getCategoryID() + "";                sb.append("{");                sb.append("\"id\":\"" + c.getCategoryID() + "\",");                sb.append("\"catid\":\"" + catid + "\",");                sb.append("\"name\":\"" + c.getName() + "\",");                sb.append("\"description\":\"" + c.getDescription() + "\",");                sb.append("\"imageURL\":\"" + c.getImageURL() + "\",");                sb.append("\"products\": [");                // get the products in that category                boolean first1 = true;                for (Product p : cf.getProducts(catid)) {                    if (first1) {                        first1 = false;                    } else {                        sb.append(",");                    }                    sb.append("{");                    sb.append("\"id\":\"" + p.getProductID() + "\",");                    sb.append("\"catid\":\"" + catid + "\",");                    sb.append("\"name\":\"" + p.getName()+ "\",");                    sb.append("\"description\":\"" + p.getDescription() + "\",");                    sb.append("\"imageURL\":\"" + p.getImageURL() + "\"");                    sb.append("}");                }                sb.append("]");                sb.append("}");            }            sb.append("\n]");        } else {            sb.append("<categories>\n");            for (Category c : cf.getCategories()) {                sb.append("<category>\n");                sb.append(" <id>" + c.getCategoryID() + "</id>\n");                sb.append(" <cat-id>" + c.getCategoryID()+ "</cat-id>\n");                sb.append(" <name>" + c.getName() + "</name>\n");                sb.append(" <description><![CDATA[" +c.getDescription() + "]]></description>\n");                sb.append(" <image-url>" + c.getImageURL() + "</image-url>\n");                sb.append("</category>\n");            }            sb.append("</categories>\n");        }        return sb.toString();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -