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

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

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

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

Войти через TM ID
Похожие вопросы
Вакансии с Моего Круга Все вакансии
Заказы с Фрилансим Все заказы