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

📄 dispatcher.java

📁 《精通JSP编程 》源代码(赵强那本) 很有用的源代码
💻 JAVA
字号:
package jnestore.servlets;


import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import jnestore.javabeans.*;

/**
 * Dispatcher是充当控制器的Servlet,依据用户操作的类型执行不同的处理
 */
public class Dispatcher extends HttpServlet {

    private ServletContext sc;
    
    public void init(ServletConfig config) throws ServletException {
       super.init(config);
        sc = this.getServletContext();
       
    }
    //通过请求中的operation参数判断用户操作类型,并执行相应处理
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html");

        String operation = request.getParameter("operation"); // retrieve the parameter indicating the type of operation

        // if null, set the operation to the empty String
        if (operation == null) {
            operation = "";
        }

        //如果操作类型为browse,调用doBrowse方法
        if (operation.equalsIgnoreCase("browse")) {
            this.doBrowse(request, response);
            return;
        }
        //如果操作类型为addItem,调用doAdd方法
        if (operation.equalsIgnoreCase("addItem")) {
            this.doAdd(request, response);
            return;
        }
        //如果操作类型为removeItem,调用doRemove方法
        if (operation.equalsIgnoreCase("removeItem")) {
            this.doRemove(request, response);
            return;
        }
        //如果操作类型为removeAll,调用doRemoveAll方法
        if (operation.equalsIgnoreCase("removeAll")) {
            this.doRemoveAll(request, response);
            return;
        }

        //如果操作类型未定义,调用doUnknown方法
        this.doUnknown(request, response);
        return;
    }
      //将请求转发到浏览商品的页面browse.jsp
    private void doBrowse(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        RequestDispatcher rd = sc.getRequestDispatcher("/browse.jsp");

        rd.forward(request, response);
    }
     //在购物车中增加商品并转发到browse.jsp
    private void doAdd(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        Hashtable cart = (Hashtable) session.getAttribute("shoppingcart");

        if (cart == null) {
            cart = new Hashtable();
            session.setAttribute("shoppingcart", cart);
        }
        String itemSku = request.getParameter("sku");
        Catalog cat = new Catalog();
        ItemInfo item = cat.getItem(itemSku);

        cart.put(itemSku, item);

        doBrowse(request, response);
    }
     //在购物车中删除指定的商品并转发到browse.jsp
    private void doRemove(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        Hashtable cart = (Hashtable) session.getAttribute("shoppingcart");

        if (cart == null) {
            cart = new Hashtable();
            session.setAttribute("shoppingcart", cart);
        }
        String itemSku = request.getParameter("sku");
        
        cart.remove(itemSku);

        doBrowse(request, response);
    }
     //在购物车中清除所有商品并转发到browse.jsp
    private void doRemoveAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();

        session.setAttribute("shoppingcart", new Hashtable());

        doBrowse(request, response);
    }
    //将请求转发到错误处理页面error.jsp
    private void doUnknown(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Exception e = new Exception("The operation is invalid!");
        RequestDispatcher rd = sc.getRequestDispatcher("/error.jsp");

        request.setAttribute("javax.servlet.jsp.jspException", e);
        rd.forward(request, response);
    }

}

⌨️ 快捷键说明

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