servlet小记

/**
 * Controller继承了javax.servlet.http.HttpServlet类
 * 它的doGet和doPost方法都调用process方法,这是Servlet控制器的核心
 * 
 * @author cxp
 * @date 2016-10-17
 * 
 */

public class ControllerServlet extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 1579L;

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

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

    }

    private void process(HttpServletRequest request,
            HttpServletResponse response) throws IOException, ServletException {
        //request.setCharacterEncoding("UTF-8");
        String uri = request.getRequestURI();
        /**
         * 完整的uri应该是:/app10a/product_input
         * 但事件中有默认的应用程序名,所以应用名可以为空:/product_input
         */

        int lastIndex = uri.lastIndexOf("/");
        String action = uri.substring(lastIndex + 1);
        String dispatchUrl = null;
        // 执行动作
        if (action.equals("product_input")) {
            dispatchUrl = "/ProductForm.jsp";
        } else if (action.equals("product_save")) {
            // 创建form
            ProductForm productForm = new ProductForm();
            // 动作属性 
            productForm.setName(request.getParameter("name"));
            productForm.setDescription(request.getParameter("description"));
            productForm.setPrice(request.getParameter("price"));

            // 验证用户输入
            ProductValidator productValidator = new ProductValidator();
            List<String> errors = productValidator.validate(productForm);
            if (errors.isEmpty()) {
                // 创建模型实体类
                Product product = new Product();
                product.setName(productForm.getName());
                product.setDescription(productForm.getDescription());
                product.setPrice(Float.parseFloat(productForm.getPrice()));

                // 执行动作方法
                SaveProductAction saveProductAction = new SaveProductAction();
                saveProductAction.save(product);

                // 保存模型在请求属性中
                request.setAttribute("product", product);
                dispatchUrl = "/ProductDetails.jsp";
            }else{
                request.setAttribute("errors", errors);
                request.setAttribute("form", productForm);
                dispatchUrl = "/ProductForm.jsp";//返回提交表单的页面
            }
        }else if(action.equals("product_list")){
            GetProductAction getProductAction=new GetProductAction();
              List<Product> products=getProductAction.getProducts();
            request.setAttribute("products", products);
            dispatchUrl="/ProductList.jsp";
        }

        // 转发到视图
        if (dispatchUrl != null) {
            RequestDispatcher rd = request.getRequestDispatcher(dispatchUrl);
            rd.forward(request, response);
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值