Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Simple web-app without frameworks / 3 сообщений из 3, страница 1 из 1
28.04.2017, 23:21
    #39446411
Natalia_141277
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple web-app without frameworks
Всем привет!
Написала простой CRUD (web app without frameworks), все операции работают, но никак не могу "победить" update user.:-)
Посмотрите пожалуйста, может быть что-то посоветуете.
Спасибо большое!:-)

P.S. Переписать все на Spring или поменять структуру приложения просьба не советовать, т.к. задание написать именно без Spring и желательно с соблюдением такой структуры.

Код: java
1.
2.
3.
4.
5.
6.
public class UserFormController implements Controller {
    public ViewModel process (Request request){
        Integer userId = Integer.valueOf(request.getParameter("userId"));
        return new ViewModel("/WEB-INF/userform.jsp").withAttribute("userId",userId );
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public class UpdateController implements Controller{
    private final UserService userService;

    public UpdateController(UserService userService) {
        this.userService = userService;
    }

    @Override
    public ViewModel process(Request request) {
        Integer userId = Integer.valueOf(request.getParameter("userId"));
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String email = request.getParameter("email");
      //  String role = request.getParameter("role");
        User user = User.from (userId,username,password,email);
        userService.update(userId);
       // User user = User.from(username, password, email, role);
        return new ViewModel("/WEB-INF/postProcPage.jsp").withAttribute("user",user);
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
public class Factory {

    public static Connection getConnection() {

        Connection connection = null;
        try {
            Class.forName("org.h2.Driver");
            connection = DriverManager.getConnection("jdbc:h2:~/test", "sa", "");
        } catch (SQLException | ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
        return connection;
    }

    public static Controller getHomeController() {
        return new HomeController();
    }

    public static Controller getLoginController() {
        return new LoginController();
    }

    public static Controller getErrorController (){return new ErrorController();}

    public static Controller getRegistrationController(UserService userService) {
        return new RegistrationController(userService);
    }

    public static Controller getUserGetByIdController (UserService userService){
        return new UserGetByIdController(userService);
    }

    public static Controller getAllUsersController(UserService userService) {
        return new GetAllUsersController(userService);
    }

    public static Controller getRemoveController (UserService userService){
        return new RemoveController (userService);
    }

    public static Controller getUserFormController (){return new UserFormController();}

    public static Controller getUpdateController (UserService userService){
        return new UpdateController(userService);
    }

    public static UserService getUserServiceImpl(UserDao userDao) {
        return new UserServiceImpl(userDao);
    }

    public static UserDao getUserDaoImpl(Connection connection) {
        return new UserDaoImpl(connection);
    }

    public static Controller getAllCategoriesController (CategoryService categoryService){
        return new GetAllCategoriesController(categoryService);
    }

    public static CategoryService getCategoryServiceImpl (CategoryDao categoryDao){
        return new CategoryServiceImpl(categoryDao);
    }
    public static CategoryDao getCategotyDaoImpl(Connection connection) {
        return new CategoryDaoImpl(connection);
    }
}


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
public class UserServiceImpl implements UserService {
    private final UserDao userDao;

    public UserServiceImpl(UserDao userDao) {
        this.userDao = userDao;
    }


    @Override
    public User save(User user) {
        return userDao.save(user);
    }

    @Override
    public List<User> getUsersByName(String username) {
        return userDao.getUsersByName(username);
    }

    @Override
    public User getById(int userId) {
        return userDao.getById(userId);
    }

    @Override
    public User remove (int userId){
        return userDao.remove(userId);
    }

    @Override
    public User update(int userId) {
        return userDao.update(userId);
    }

    @Override
    public List<User> getAllUsers(){
        return userDao.getAllUsers();
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
public class MainServlet extends HttpServlet {

    private final Map<Request, Controller> controllerMap = new HashMap<>();

    public void init() throws ServletException {
        controllerMap.put(Request.create("GET", "/root/home"), Factory.getHomeController());
        controllerMap.put(Request.create("GET", "/root/login"), Factory.getLoginController());
        controllerMap.put(Request.create("GET", "/error"), Factory.getErrorController());
        controllerMap.put(Request.create("POST", "/root/login"), Factory.getRegistrationController(
                getUserServiceImpl(
                        getUserDaoImpl(
                                getConnection()))));
        controllerMap.put(Request.create("GET", "/root/users"), Factory.getAllUsersController(
                getUserServiceImpl(
                        getUserDaoImpl(
                                getConnection()))));
        controllerMap.put(Request.create("GET", "/root/users/remove"), Factory.getRemoveController(
                getUserServiceImpl(
                        getUserDaoImpl(
                                getConnection()))));
        controllerMap.put(Request.create("GET", "/root/user"), Factory.getUserGetByIdController(
                getUserServiceImpl(
                        getUserDaoImpl(
                                getConnection()))));
        controllerMap.put(Request.create("GET", "/root/userform"), Factory.getUserFormController());
        controllerMap.put(Request.create("POST", "/root/userform"), Factory.getUpdateController(
                getUserServiceImpl(
                        getUserDaoImpl(
                                getConnection()))));
        controllerMap.put(Request.create("GET", "/root/categories"),Factory.getAllCategoriesController(
                getCategoryServiceImpl(
                        getCategotyDaoImpl(
                                getConnection()))));
    }

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

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        handleRequest(request, response);
    }

    private void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String uri = getUri(request.getRequestURI());
        Request req = new Request(request.getMethod(), uri, request.getParameterMap());
        try {
            Controller controller = controllerMap.get(req);
            if (controller == null) {
                throw new RuntimeException("Cannot handle " + req);
            }
            ViewModel viewModel = controller.process(req);
            if (viewModel.hasCookies()) {
                Map<String, String> newCookies = viewModel.getNewCookies();
                for (String cookieName : newCookies.keySet()) {
                    response.addCookie(new Cookie(cookieName, newCookies.get(cookieName)));
                }
            }
                forward(request, response, viewModel);
            } catch (Throwable t) {
            request.getRequestDispatcher("/WEB-INF/error.jsp").forward(request, response);
        }
    }

    private String getUri(String requestURI) {
        if(!requestURI.contains("?")) {
            return requestURI;
        }
        return requestURI.substring(0, requestURI.indexOf("?"));
    }

    private void forward(HttpServletRequest request, HttpServletResponse response, ViewModel viewModel) throws ServletException, IOException {
        RequestDispatcher dispatcher = request.getRequestDispatcher(getView(request, viewModel));
        setAttributes(request, viewModel);
        dispatcher.forward(request, response);
    }

    private void setAttributes(HttpServletRequest request, ViewModel viewModel) {
        for (String attr: viewModel.getAttributes().keySet()) {
            request.setAttribute(attr, viewModel.getAttribute(attr));
        }
    }

    private String getView(HttpServletRequest request, ViewModel viewModel) {
        return request.getContextPath() + viewModel.getView();
    }



users.jsp
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>Users</title>
    <style>
        <%@include file="/bootstrap/css/bootstrap.min.css" %>
        <%@include file="/bootstrap/css/hello.css" %>
        <%@include file="header.jsp"%>
    </style>

</head>
<body>
<div class="container">
    <h3>Users List</h3>

    <form method="post" action="/root/users" class="well">

    <table class="table table-striped">
        <thead>
        <tr>
            <td><b>UserId</b></td>
            <td><b>Username</b></td>
            <td><b>Email</b></td>
            <td><b>Action</b></td>
            <td><b>Action</b></td>
            <td><b>Action</b></td>
        </tr>
        </thead>
                  <c:forEach var = "user" items="${users}">
            <tr>
                <td>${user.userId}</td>
                <td>${user.username}</td>
                <td>${user.email}</td>
                <td><a href="/root/user?userId=${user.userId}" methods="get">User details</a></td>
                <td><a href="/root/users/remove?userId=${user.userId}" methods="get">Delete</a></td>
                <td><a href="/root/userform?userId=${user.userId}" methods="get">Update</a></td>
            </tr>
                  </c:forEach>
    </table>

    </form>
    <a href="/root/home" class="btn btn-lg btn-default">Home</a>
</div>
<script>window.jQuery || document.write('<script src="<c:url value="/bootstrap/js/jquery.min.js"/>"><\/script>')</script>
<script>
    <%@include file="/bootstrap/js/bootstrap.min.js" %>
    <%@include file="footer.jsp"%>
</script>

</body>
</html>



usersform.jsp
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<!DOCTYPE html>
<html lang="en">
<html>
<head>
    <title>User form</title>
    <style>
        <%@include file="/bootstrap/css/bootstrap.min.css" %>
        <%@include file="/bootstrap/css/hello.css" %>
        <%@include file="header.jsp"%>
    </style>
</head>
<body>

<div class="container">
    <form class="form-user" action="/root/userform?userId=${user.userId}" method="post">
        <h2 class="form-user-heading">Please input user's details</h2>

        <label for="inputUserId" class="sr-only">UserId</label>
        <input type="text" id="inputUserId" class="form-control" name="userId" placeholder=${user.userId}>

        <label for="inputUsername" class="sr-only">Username</label>
        <input type="text" id="inputUsername" class="form-control" name="username" placeholder="Username">

        <label for="inputPassword" class="sr-only">Password</label>
        <input type="password" id="inputPassword" class="form-control" name="password" placeholder="Password">

        <label for="inputEmail" class="sr-only">Email address</label>
        <input type="email" id="inputEmail" class="form-control" name="email" placeholder="Email">

        <button class="btn btn-lg btn-primary btn-block" type="submit">Update</button>
    </form>
    <a href="/root/users" class="btn btn-lg btn-default">Users list</a>
    <a href="/root/home" class="btn btn-lg btn-default">Home</a>
</div>
<script>window.jQuery || document.write('<script src="<c:url value="/bootstrap/js/jquery.min.js"/>"><\/script>')</script>
<script>
    <%@include file="/bootstrap/js/bootstrap.min.js" %>
    <%@include file="footer.jsp"%>
</script>
</body>
</html>



postProcPage.jsp
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Confirm registration page</title>

    <style>
        <%@include file="/bootstrap/css/bootstrap.min.css" %>
        <%@include file="/bootstrap/css/signin.css" %>
    </style>
</head>

<body>
<div style="text-align: center">
    <h1>Congratulations, your operation with <c:out value="${user.username}"/> is done successfully!</h1>
    <a href="/root/home" class="btn btn-lg btn-default">Home</a>
</div>

</body>
</html>
...
Рейтинг: 0 / 0
29.04.2017, 01:28
    #39446425
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple web-app without frameworks
Natalia_141277,

A что это в UserDao#update только userId заходит? Откуда данные брать для сохранения?
...
Рейтинг: 0 / 0
01.05.2017, 21:22
    #39446966
Natalia_141277
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple web-app without frameworks
fixxer,

Огромное Вам спасибо!:-)
Прямо неудобно получилось, что так протупила:-)
Уже все работает, надо было раньше спросить, а то я на этот update кучу времени потратила:-)
Удачного дня!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Simple web-app without frameworks / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]