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

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

Есть проект "Гостевая книга", с jsp странички принимает несколько значений заносит их в бд(Postgresql). Нужно вывести на ту же страничку jsp данные из бд. Вычитал в инете, что это можно реализовать через model and view (spring), но как это сделать хз. Рассчитываю на вас дамы и господа)
  • Вопрос задан
  • 2607 просмотров
Решения вопроса 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
Что мешает при загрузке страницы сначала сделать выборку из базы и напечатать ее на странице ?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Innopolis City Москва
от 80 000 до 170 000 руб.
Expload Москва
от 150 000 до 250 000 руб.
Crypterium Москва
от 200 000 до 300 000 руб.