@drox73
Начинаю только во всем разбираться, web-разработка

Как отобразить данные из бд на страничку jsp?

Есть проект "Гостевая книга", с jsp странички принимает несколько значений заносит их в бд(Postgresql). Нужно вывести на ту же страничку jsp данные из бд. Вычитал в инете, что это можно реализовать через model and view (spring), но как это сделать хз. Рассчитываю на вас дамы и господа)
  • Вопрос задан
  • 2910 просмотров
Решения вопроса 1
jaxtr
@jaxtr
JavaEE/Spring-разработчик
Быстрый пример с Spring Framework/Data/Boot

Создаёшь новый Маven-проект, добавляешь зависимости и указываешь родительский артефакт:
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.5.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>


Создаёшь класс-сущность, которая будет представлять собой отзыв:
@Entity
public class Review implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(columnDefinition = "TEXT")
    private String reviewText;
    
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date createDate;

    // get/set-методы и т.д.
}


Создаёшь репозиторий для работы с БД:
@Repository
public interface ReviewRepository extends CrudRepository<Review, Integer> {
}


Создаёшь контроллер с двумя действиями: отображение списка отзывов и добавление нового отзыва:
@Controller
public class SiteController {

    @Autowired
    private ReviewRepository reviewRepository;

    @RequestMapping
    public ModelAndView index() {
        return new ModelAndView("site/index", Collections.singletonMap("reviews", reviewRepository.findAll()));
    }

    @RequestMapping(method = RequestMethod.POST)
    public String createReview(@RequestParam String reviewText) {
        reviewRepository.save(new Review(reviewText, new Date()));

        return "redirect:/";
    }
}


Создаёшь свою JSP-страницу:
<?xml version="1.0" encoding="UTF-8"?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:c="http://java.sun.com/jsp/jstl/core" version="2.0">

    <jsp:directive.page contentType="text/html" pageEncoding="UTF-8"/>
    <jsp:output doctype-root-element="html" doctype-system="about:legacy-compat" omit-xml-declaration="true"/>

    <html>
        <head>
            <title>GuestBoot Example</title>
        </head>
        <body>
            <h1>Post new review</h1>
            <form method="POST">
                <label>
                    <textarea name="reviewText" placeholder="Your review here"><jsp:text/></textarea>
                </label>
                <br/>
                <button type="submit">Submit</button>
            </form>
            <hr/>
            <h1>Reviews</h1>
            <c:forEach items="${reviews}" var="review">
                <div>
                    <c:out value="${review.reviewText}"/><br/>
                    <small><c:out value="${review.createDate}"/></small>
                </div>
                <br/>
            </c:forEach>
        </body>
    </html>
</jsp:root>


Добавляешь конфигурацию для отображения JSP-страниц:
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/views/", ".jspx");
    }

}


Создаёшь стартовый класс приложения:
@SpringBootApplication
public class GuestBook extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(GuestBook.class, args)
                .registerShutdownHook();
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(GuestBook.class);
    }
}


Запускаешь и наслаждаешься результатом.

Смотришь репозиторий с рабочим кодом и читаешь документацию по Spring Framework и Spring Boot.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
compilator
@compilator
Java developer
Что мешает при загрузке страницы сначала сделать выборку из базы и напечатать ее на странице ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
До 150 000 руб.
TEAMIDEA Тверь
от 70 000 до 120 000 руб.
TEAMIDEA Ростов-на-Дону
от 70 000 до 120 000 руб.
18 июн. 2019, в 15:04
3500 руб./за проект
18 июн. 2019, в 14:21
100 руб./за проект