對用戶管理系統中 Servlet 的優化


Servlet 的優化

1. 存在的問題

2. 優化解決

在這裏插入圖片描述

3. 代碼示例

package com.company;

import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

@WebServlet("/user")
public class UserServlet extends HttpServlet {

    // 請求入口
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 判斷請求action
        String action = request.getParameter("action");

        if (action.equals("findAll")) {
            this.findAll(request, response);
        } else if (action.equals("add")) {
            this.add(request, response);
        }
    }

    UserService userService = new UserService();

    // 查詢所有
    protected void findAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.調用service查詢
        List<User> list = userService.findAll();
        // 2.將List存儲到Request域
        request.setAttribute("list", list);
        // 3.轉發到list.jsp
        request.getRequestDispatcher("/list.jsp").forward(request, response);
    }

    // 新增
    protected void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        try {
            // 1.接收請求參數map
            Map<String, String[]> parameterMap = request.getParameterMap();
            // 2.快速封裝User實體
            User user = new User();
            BeanUtils.populate(user, parameterMap);
            // 3.調用service,添加User
            userService.add(user);
            // 4.重定向到FindAllServlet
            response.sendRedirect(request.getContextPath() + "/FindAllServlet");
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }
}

原文鏈接:https://qwert.blog.csdn.net/article/details/105774190

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章