Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / как работает? / 11 сообщений из 11, страница 1 из 1
05.02.2017, 12:32
    #39398816
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как работает?
Здравствуйте всем!
сразу в суть, начал разбираться со Спринг бут. вот весь проект
index.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.
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.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Cache-Control" content="no-cache">
    <meta http-equiv="Expires">
    <title>Boot Sample | Home</title>

    <link href="../../static/css/bootstrap.min.css" rel="stylesheet">
    <link href="../../static/css/style.css" rel="stylesheet">

    <!--[if it IE9]>
    <script src="../../static/js/html5shiv.js"></script>
    <script src="../../static/js/respond.js"></script>
    <![endif]-->
</head>
<body>

<div role="navigation">
    <div class="navbar navbar-inverse">
        <a href="#" class="navbar-brand">Bootsample</a>
        <div class="navbar-collapse collapse">
            <ul class="nav navbar-nav">
                <li><a href="new-task">New Task</a></li>
                <li><a href="all-tasks">All Tasks</a></li>
            </ul>
        </div>
    </div>
</div>
<c:choose>
    <c:when test="${mode=='MODE_HOME'}">
        <div class="container" id="homeDiv">
            <div class="jumbotron text-center">
                <h1>Welcome to task manager</h1>
            </div>
        </div>
    </c:when>
    <c:when test="${mode=='MODE_TASKS'}">
        <div class="container text-center" id="tasksDiv">
            <h3>My tasks</h3>
            <hr/>
            <div class="table-responsive">
                <table class="table table-striped table-bordered text-left">
                    <thead>
                    <tr>
                        <th>ID</th>
                        <th>Name</th>
                        <th>Description</th>
                        <th>Date Created</th>
                        <th>Finished</th>
                        <th></th>
                        <th></th>
                    </tr>
                    </thead>
                    <tbody>
                    <c:forEach var="task" items="${tasks}">
                        <tr>
                            <td>${task.id}</td>
                            <td>${task.name}</td>
                            <td>${task.description}</td>
                            <td><fmt:formatDate pattern="yyyy-MM-dd HH:mm:ss" value="${task.dateCreated}"/></td>
                            <td>${task.finished}</td>
                            <td><a href="update-task?id=${task.id}"><span class="glyphicon glyphicon-pencil"></span> </a> </td>
                            <td><a href="delete-task?id=${task.id}"><span class="glyphicon glyphicon-trash"></span> </a> </td>
                        </tr>
                    </c:forEach>
                    </tbody>
                </table>
            </div>
        </div>
    </c:when>
    <c:when test="${mode=='MODE_NEW' || mode=='MODE_UPDATE'}">
        <div class="container text-center">
            <h3>Manage Task</h3>
            <hr/>
            <form class="form-horizontal" method="post" action="save-task">
                <input type="hidden" name="id" value="${task.id}"/>
                <div class="form-group">
                    <label class="control-label col-md-3">Name</label>
                    <div class="col-md-7">
                        <input type="text" class="form-control" name="name" value="${task.name}"/>
                    </div>
                </div>
                <div class="form-group">
                    <label class="control-label col-md-3">Description</label>
                    <div class="col-md-7">
                        <input type="text" class="form-control" name="description" value="${task.description}"/>
                    </div>
                </div>
                <div class="form-group">
                    <label class="control-label col-md-3">Finished</label>
                    <div class="col-md-7">
                        <input type="radio" class="col-sm-1" name="finished" value="true"/>
                        <div class="col-sm-1">Yes</div>
                        <input type="radio" class="col-sm-1" name="finished" value="false"/>
                        <div class="col-sm-1">No</div>
                    </div>
                </div>
                <div class="form-group">
                    <input type="submit" class="btn btn-primary" value="Save"/>
                </div>
            </form>
        </div>
    </c:when>
</c:choose>


<script src="../../static/js/jquery-3.1.1.min.js"></script>
<script src="../../static/js/bootstrap.min.js"></script>
</body>
</html>



Model Task.java
Код: 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.
package bootsample.model;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;

/**
 * Created by Muzaffar on 06.01.2017.
 */
@Entity(name = "t_tasks")
public class Task implements Serializable{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String name;
    private String description;
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateCreated;
    private boolean finished;

    public Task(){}
    public Task(String name, String description, Date dateCreated, boolean finished) {
        this.name = name;
        this.description = description;
        this.dateCreated = dateCreated;
        this.finished = finished;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Date getDateCreated() {
        return dateCreated;
    }

    public void setDateCreated(Date dateCreated) {
        this.dateCreated = dateCreated;
    }

    public boolean isFinished() {
        return finished;
    }

    public void setFinished(boolean finished) {
        this.finished = finished;
    }

    @Override
    public String toString() {
        return "Task{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", description='" + description + '\'' +
                ", dateCreated=" + dateCreated +
                ", finished=" + finished +
                '}';
    }
}



Controller
MainController.java
Код: 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.
package bootsample.controller;

import bootsample.model.Task;
import bootsample.service.TaskService;
import org.apache.catalina.servlet4preview.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Date;

/**
 * Created by Muzaffar on 06.01.2017.
 */
@Controller
public class MainController {
    @Autowired
    private TaskService taskService;

    @GetMapping("/")
    public String home(HttpServletRequest request) {
        request.setAttribute("mode", "MODE_HOME");
        return "index";
    }

    @GetMapping("/all-tasks")
    public String allTasks(HttpServletRequest request) {
        request.setAttribute("tasks", taskService.findAll());
        request.setAttribute("mode", "MODE_TASKS");
        return "index";
    }

    @GetMapping("/new-task")
    public String newTask(HttpServletRequest request) {
        request.setAttribute("mode", "MODE_NEW");
        return "index";
    }

    @PostMapping("/save-task")
    public String saveTask(@ModelAttribute Task task, BindingResult bindingResult, HttpServletRequest request) {
        task.setDateCreated(new Date());
        taskService.save(task);
        request.setAttribute("tasks", taskService.findAll());
        request.setAttribute("mode", "MODE_TASKS");
        return "index";
    }
    @GetMapping("/update-task")
    public String updateTask(@RequestParam int id, HttpServletRequest request) {
        request.setAttribute("task", taskService.findTask(id));
        request.setAttribute("mode", "MODE_UPDATE");
        return "index";
    }

    @GetMapping("/delete-task")
    public String deleteTask(@RequestParam int id, HttpServletRequest request) {
        taskService.delete(id);
        request.setAttribute("tasks", taskService.findAll());
        request.setAttribute("mode", "MODE_TASKS");
        return "index";
    }
}



DAO
TaskRepository.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
package bootsample.dao;

import bootsample.model.Task;
import org.springframework.data.repository.CrudRepository;

/**
 * Created by Muzaffar on 07.01.2017.
 */
public interface TaskRepository extends CrudRepository<Task, Integer> {

}



Service
TaskService.java
Код: 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.
package bootsample.service;

import bootsample.dao.TaskRepository;
import bootsample.model.Task;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Muzaffar on 07.01.2017.
 */
@Service
@Transactional
public class TaskService {
    private final TaskRepository taskRepository;

    public TaskService(TaskRepository taskRepository) {
        this.taskRepository = taskRepository;
    }

    public List<Task> findAll() {
        List<Task> tasks = new ArrayList<>();
        for (Task task : taskRepository.findAll()) {
            tasks.add(task);
        }
        return tasks;
    }

    public void save(Task task) {
        taskRepository.save(task);
    }

    public void delete(int id) {
        taskRepository.delete(id);
    }

    public Task findTask(int id) {
        return taskRepository.findOne(id);
    }
}



- так вот как тут происходит операции CRUD? даже нет именованных запросов как в EJB
...
Рейтинг: 0 / 0
05.02.2017, 21:03
    #39398956
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как работает?
Музаффар,
называй тему нормально и приведи сообщение об ошибке. Если она есть.
...
Рейтинг: 0 / 0
05.02.2017, 21:06
    #39398957
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как работает?
Музаффаркак тут происходит операции CRUD? даже нет именованных запросов как в EJB
все круд операции происходят в TaskRepository
...
Рейтинг: 0 / 0
06.02.2017, 07:02
    #39399012
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как работает?
Petro123Музаффар,
называй тему нормально и приведи сообщение об ошибке. Если она есть.
на сколько я знаю тут переопределить название темы никак.
при чем тут ошибка, все работает нормально и читайте название темы и последнюю строку в топике... этим и все сказано.

rema174все круд операции происходят в TaskRepository
да через этот интерфейс добираемся до CrudRepository.java но все же нет явного запроса наподобие как в EJB
...
Рейтинг: 0 / 0
06.02.2017, 09:27
    #39399029
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как работает?
Музаффарно все же нет явного запроса
значит такой запрос нужно сделать :-)
...
Рейтинг: 0 / 0
06.02.2017, 10:15
    #39399062
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как работает?
rema174значит такой запрос нужно сделать :-)
ну прикол в том что все работает я просто хочу понять как если нет явного запроса...
...
Рейтинг: 0 / 0
06.02.2017, 13:03
    #39399194
host.13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как работает?
Все запросы строятся автоматически по модели. В модели указан и перечень полей, и какое поле является ключевым - по этим данным Spring JPA и строит запросы CRUD.
...
Рейтинг: 0 / 0
06.02.2017, 13:16
    #39399209
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как работает?
host.13,
+1
у нас вроде ЛИБО маппинг и модель ЛИБО запросы SELECT.
Поэтому вопрос автора непонятен.
...
Рейтинг: 0 / 0
06.02.2017, 13:21
    #39399216
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как работает?
host.13,

т.е. обычных КРУД операции не явном виде сам Спринг Дата реализует а вот если мне нужен скажем так
select u from Users u where u.login=:l and u.password=:p
...
Рейтинг: 0 / 0
06.02.2017, 13:29
    #39399222
host.13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как работает?
...
Рейтинг: 0 / 0
06.02.2017, 14:10
    #39399264
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как работает?
Музаффартак вот как тут происходит операции CRUD? даже нет именованных запросов как в EJBчитайте про CrudRepository
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / как работает? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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