📄 dispatcher.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 + -