simple JSP CRUD

279
31 декабря 2017, 07:27

есть Сервлет такой, суть его работы : удалить, добавить, редактировать пользователей на JSP странице. Его необходимо переделать, чтобы в методах Гет и Пост был один метод,который вызывает нужный метод edit,delete и далее....как создать такой метод ? и как он должен выглядеть ? при этом методы Гет и Пост должны вызывать только этот метод.

public class UserController extends HttpServlet {
private static final long serialVersionUID = 1L;
private static String INSERT_OR_EDIT = "/user.jsp";
private static String LIST_USER = "/listUser.jsp";
private UserDao dao;
public UserController() {
    super();
    dao = new UserDao();
}
private void delete(HttpServletRequest request, HttpServletResponse response) {
     int userId = Integer.parseInt(request.getParameter("userId"));
     dao.deleteUser(userId);
     request.setAttribute("users", dao.getAllUsers());
}
private void edit(HttpServletRequest request, HttpServletResponse response) {
     int userId = Integer.parseInt(request.getParameter("userId"));
     User user = dao.getUserById(userId);
     request.setAttribute("user", user);
}
private void listUsers(HttpServletRequest request, HttpServletResponse response) {
     request.setAttribute("users", dao.getAllUsers());
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String forward="";
    String action = request.getParameter("action");
    if (action.equalsIgnoreCase("delete")){
        delete(request, response);
        forward = LIST_USER;
    /*    один метод, который различает внутри себя такой запрос и вызывает соответствующий метод common, edit..*/
    } else if (action.equalsIgnoreCase("edit")){
        forward = INSERT_OR_EDIT;
        edit(request, response);
    } else if (action.equalsIgnoreCase("listUser")){
        forward = LIST_USER;
        listUsers(request, response);
    } else {
        forward = INSERT_OR_EDIT;
    }
    RequestDispatcher view = request.getRequestDispatcher(forward);
    view.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    User user = new User();
    user.setFirstName(request.getParameter("firstName"));
    user.setLastName(request.getParameter("lastName"));
    try {
        Date dob = new SimpleDateFormat("MM/dd/yyyy").parse(request.getParameter("dob"));
        user.setDob(dob);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    user.setEmail(request.getParameter("email"));
    String userid = request.getParameter("userid");
    if(userid == null || userid.isEmpty())
    {
        dao.addUser(user);
    }
    else
    {
        user.setUserid(Integer.parseInt(userid));
        dao.updateUser(user);
    }
    RequestDispatcher view = request.getRequestDispatcher(LIST_USER);
    listUsers(request, response);
    view.forward(request, response);
}

}

Answer 1

сделал,вот решение. буду рад если кому то поможет.

public class UserController extends HttpServlet {
private static final long serialVersionUID = 1L;
private static String INSERT_OR_EDIT = "/user.jsp";
private static String LIST_USER = "/listUser.jsp";
private UserDao dao;
public UserController() {
    super();
    dao = new UserDao();
}
private void delete(HttpServletRequest request, HttpServletResponse response) {
     int userId = Integer.parseInt(request.getParameter("userId"));
     dao.deleteUser(userId);
     request.setAttribute("users", dao.getAllUsers());
}
private void edit(HttpServletRequest request, HttpServletResponse response) {
     int userId = Integer.parseInt(request.getParameter("userId"));
     User user = dao.getUserById(userId);
     request.setAttribute("user", user);
}
private void listUsers(HttpServletRequest request, HttpServletResponse response) {
     request.setAttribute("users", dao.getAllUsers());
}

private void common (HttpServletRequest request, HttpServletResponse response) {
    String forward="";
    String action = request.getParameter("action");
    if (action.equalsIgnoreCase("delete")){
        delete(request, response);
        forward = LIST_USER;
    } else if (action.equalsIgnoreCase("edit")){
        forward = INSERT_OR_EDIT;
        edit(request, response);
    } else if (action.equalsIgnoreCase("listUser")){
        forward = LIST_USER;
       listUsers(request, response);
    } else {
        forward = INSERT_OR_EDIT;
    }
    RequestDispatcher view = request.getRequestDispatcher(forward);
    try {
        view.forward(request, response);
    } catch (ServletException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    User user = new User();
    user.setFirstName(request.getParameter("firstName"));
    user.setLastName(request.getParameter("lastName"));
    try {
        Date dob = new SimpleDateFormat("MM/dd/yyyy").parse(request.getParameter("dob"));
        user.setDob(dob);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    user.setEmail(request.getParameter("email"));
    String userid = request.getParameter("userid");
    if(userid == null || userid.isEmpty())
    {
        dao.addUser(user);
    }
    else
    {
        user.setUserid(Integer.parseInt(userid));
        dao.updateUser(user);
    }
    RequestDispatcher views = request.getRequestDispatcher(LIST_USER);
    listUsers(request, response);
    try {
        views.forward(request, response);
    } catch (ServletException e1) {
        e1.printStackTrace();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    common(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    common(request, response);
}

}

READ ALSO
Может ли @PostConstruct работать по разному на Mac OS и Windows Server 2012

Может ли @PostConstruct работать по разному на Mac OS и Windows Server 2012

Есть класс который подтягивает конфигурации изproperties файла в методе initPaths() отмеченным @PostConstruct

170
Проблема с windows 10

Проблема с windows 10

Я открыл програму "Выполнено", ввел msconfig и случайно нажал на кнопку "отключить все"Потом перезагрузил пк

210
Как перевести getText() в html Java

Как перевести getText() в html Java

Натолкнулся на проблему с добавлением текста в текстовое поле, когда я вставляю текст, его просто не видно

259
Синхронизация двух слайдеров Bootstrap

Синхронизация двух слайдеров Bootstrap

Есть 2 стандартные carousel от bootstrap на одной странице, нужно, чтобы на них всегда были изображения с одинаковым индексом

264