📄 showquoteservlet.java
字号:
package examples;
import java.io.*;
import java.util.*;
import java.text.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.naming.*;
/**
* 本servlet为客户提供浏览和修改购书车信息的功能
*/
public class ShowQuoteServlet extends HttpServlet {
// 计价器 EJB 对象
private Pricer pricer;
/**
* 初始化servlet实例
*/
public void init(ServletConfig config) throws ServletException {
super.init(config);
try {
/*
* 获取 JNDI 初始化参数
*/
String initCtxFactory = getInitParameter(Context.INITIAL_CONTEXT_FACTORY);
String providerURL = getInitParameter(Context.PROVIDER_URL);
Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY, initCtxFactory);
env.put(Context.PROVIDER_URL, providerURL);
/*
* 获取初始上下文
*/
Context ctx = new InitialContext(env);
/*
* 查找计价器Home对象
*/
PricerHome pricerHome = (PricerHome) ctx.lookup("PricerHome");
/*
* 创建一个计价器EJB对象
*/
pricer = pricerHome.create();
} catch (Exception e) {
log(e);
throw new ServletException(e.toString());
}
}
/**
* 回应客户端的HTTP请求
*/
public void service (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* 获取客户端的HttpSession
* 为客户创建购书车
*/
HttpSession session = request.getSession(false);
if (session == null) {
/*
* 如果客户没有登录,把他重定向到登录页面
*/
response.sendRedirect(response.encodeRedirectURL("/BookStore/login"));
return;
}
Object obj = session.getAttribute("cart");
if (obj == null) {
/*
* 如果客户没有登录,把他重定向到登录页面
*/
response.sendRedirect(response.encodeRedirectURL("/BookStore/login"));
return;
}
Cart cart = (Cart) obj;
/*
* 客户点击'提交订单'按钮
*/
if (request.getParameter("Order") != null) {
/*
* 把购书车转换成订单
*/
String orderId = cart.purchase();
request.setAttribute("orderID", orderId );
cart.clear();
this.getServletContext().getRequestDispatcher("/receipt.jsp").forward(request, response);
return;
}
Enumeration paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String paramName = (String) paramNames.nextElement();
String paramValue = request.getParameter(paramName);
/*
* 客户点击'更新' 按钮
*/
if (paramName.equals("Update")) {
}
/*
* 客户清空表单
*/
else if (paramName.equals("Clear")) {
cart.clear();
this.getServletContext().getRequestDispatcher("/clearQuote.jsp").forward(request, response);
return;
}
/*
* 如果参数是客户选购图书的数量
* 更新该项数值
*/
else {
/*
* 设置数值
*/
try {
int quantity = Integer.parseInt(paramValue);
cart.modify(paramName, quantity);
} catch (NumberFormatException e) {
throw new ServletException("Bad parameter to servlet: " + paramName + ", " + paramValue);
} catch (Exception e) {
throw new ServletException(e.toString());
}
}
}
/*
* 重新计价
*/
try {
pricer.price(cart);
} catch (Exception e) {
log(e);
throw new ServletException(e.toString());
}
/*
* 否则显示当前的购书车状态
*/
Vector lineItems = cart.getAll();
if (lineItems.size() > 0) {
request.setAttribute("lineItems", lineItems);
request.setAttribute("subTotal", new Double(cart.getSubtotal()));
request.setAttribute("taxes", new Double(cart.getTaxes()));
request.setAttribute("total", new Double(cart.getTotalPrice()));
//把请求转发给 showCart JSP.
this.getServletContext().getRequestDispatcher("/showQuote.jsp").forward(request, response);
return;
}
/*
* 如果客户未选购图书
* 显示购书车为空
*/
else {
this.getServletContext().getRequestDispatcher("/emptyQuote.jsp").forward(request, response);
return;
}
}
private String format(double d) {
NumberFormat nf = NumberFormat.getCurrencyInstance();
return nf.format(d);
}
private void log(Exception e) {
e.printStackTrace();
}
public String getServletInfo() {
return "The ShowQuote servlet returns information about" +
"the Books that the user is in the process of ordering.";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -