Проблема отправки данных из контроллера в представление весной mvc и в спящем режиме - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь выучить весну mvc и впасть в спячку, поэтому я делаю C .RUD о спортивных олимпиадах. У меня есть две таблицы в моей базе данных, одна называется Player, а другая - Sport.

Инструменты: Netbeans 8.0.2, GlassFi sh Server 4.1, Java EE 7 web, Spring web MVC 4.0 .1, Hibernate 4.3.1

Проблема: На странице указателя мне нужно показать количество зарегистрированных игроков и количество зарегистрированных видов спорта. Я делаю это с помощью счетчика выбора, и в моем контроллере я пытаюсь отправить данные в индекс с помощью метода get, но ни один из данных не отображается в index.htm, кажется, что он не подчиняется контроллеру. но страницу указателя можно увидеть в браузере.

dispatcher-servlet. xml

   <?xml version='1.0' encoding='UTF-8' ?>
<!-- was: <?xml version="1.0" encoding="UTF-8"?> -->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

    <!--
    Most controllers will use the ControllerClassNameHandlerMapping above, but
    for the index controller we are using ParameterizableViewController, so we must
    define an explicit mapping for it.
    -->
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="index.htm">indexController</prop>
                <prop key="rdeporte.htm">homeController</prop>
                <prop key="rjugador.htm">homeController</prop>
                <prop key="ujugador.htm">homeController</prop>
                <prop key="udeporte.htm">homeController</prop>
                <prop key="borrardeporte.htm">homeController</prop> 
            </props>
        </property>
    </bean>

    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp" />

    <!--
    The index controller.
    -->
    <bean name="homeController" class="Controlador.HomeController"></bean>
    <bean name="indexController" class="org.springframework.web.servlet.mvc.ParameterizableViewController" p:viewName="index" />    
</beans>

Index. jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>

<html lang="es">


      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
        <title>Welcome to Insert with Spring Web MVC project</title>
    </head>

    <body>
    <!--    <div class="container">-->
             <div class="row" style="background-color: rgba(0,0,255,.1)">
                 <div class="col-lg-2">
                     <div class="container">
                         <div class="row">
                         <div class="h-25 d-inline-block" style="text-align:center;font-size:24px;width:100%;height: 50%;background-color: rgba(0,0,255,.1)">OPTIONS</div>
                         </div>
                         <div class="row" style="width:100%;padding-top:15%;">

                         </div>
                         <div class="row">
                             <a href="rjugador.htm"><img style="width:100%;height:auto;" src="<c:url value="/resources/img/btnrp.png"/>" alt="Registration of participants"></a>
                         </div>
                         <div class="row">
                             <a href="rdeporte.htm"><img style="width:100%;height:auto;" src="<c:url value="/resources/img/btnrd.png"/>" alt="register new disciplines"></a>
                         </div>
                     </div>
                 </div>
                    <div class="col-lg-8">

                      <div class="card border-danger" style="width:100%;height:auto;">
                               <img class="card-img-top" style="width:100%;height:auto;" src="<c:url value="/resources/img/resSports.png"/>" alt="Card image cap">
                          <div class="card-header bg-danger">
                              <h4 style="font-size:auto;">Raccoon city Sports Olimpics</h4>
                          </div>
                      </div>
                    </div>
                 <div class="col-lg-2">

                 </div>
            </div>
    <!--    </div>-->
            <div class="container-fluid" style="text-align:center;">
                <h2>ESTADISTICS</h2>
            </div>


                    <div class="row">  
                        <div class="navItem" style="font-size:auto; text-align:center;">
                              <div class="card" style="width: 100%; float: ">
                                  <img class="card-img-top" src="<c:url value="/resources/img/cabecerap.png"/>" alt="Card image cap">
                                  <div class="card-body">
                                        <div class="card-text">   
                                            <p>Players:</p><c:out value="${ numPlayers }"/>
                                        </div>
                                  </div>
                              </div>
                        </div>


                        <div class="navItem" style="font-size:auto; text-align:center;">
                              <div class="card" style="width: 100%; float: ">
                                  <img class="card-img-top" src="<c:url value="/resources/img/cabecerad.png"/>" alt="Card image cap">
                                  <div class="card-body">
                                      <div class="card-text">   
                                            <p>Sports:</p>
                                      </div>
                                  </div>
                              </div>
                        </div>
                    </div>


                <div class="container-fluid">
                    <p>something</p>
                </div>
    </body>
</html>

Web. xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>redirect.jsp</welcome-file>
    </welcome-file-list>
</web-app>

package Controlador;
@Controller
public class HomeController {

        /* this controller does not want to work */
        @RequestMapping(value="index.htm", method = RequestMethod.GET)
        public ModelAndView index(){
            ModelAndView mav= new ModelAndView();
            Estadistics est=new Estadistics();
            mav.addObject("numPlayers",est.getNumPlayers());
            mav.setViewName("index");
            return mav;
        }

    @RequestMapping(value="rjugador.htm", method = RequestMethod.GET)
    public ModelAndView rjugador(){
     /***Other Controlers***/
       .......................
}
package Controlador;

public class Estadistics {

    public int getNumPlayers (){

        int c=queries("select count(j) from Player as j");

        return c;
    }

  public int queries(String hql) {

        int num=0;
        try
        {
            Configuration configuration = new Configuration().configure();
            StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().
            applySettings(configuration.getProperties());
            SessionFactory session = configuration.buildSessionFactory(builder.build());

                Session ses;
                ses=session.openSession();


                Query q=ses.createQuery(hql);
                num = q.getFirstResult();


                ses.close();

        }catch(HibernateException ex){

        }
     return num;

    }    
}

запрос работает https://drive.google.com/open?id=13khiwcVJ2sS0qn49LAG4m3s00nlzVIBX

Ответы [ 2 ]

1 голос
/ 02 февраля 2020

Вы должны начать просмотр своего отображения, похоже, ваш диспетчер ждет. jsp, а вы нет.

Не могли бы вы поделиться своим полным файлом JSP?

Будет также полезно проверить, действительно ли ваш запрос что-то возвращает. Вы можете добавить журнал, чтобы напечатать номер перед отправкой на просмотр.

Посмотрите этот пример: SimplerUrlHandlerMapping

0 голосов
/ 10 февраля 2020

Я нашел ответ, я делал некоторые неправильные вещи.

в методах

getNumPlayers и запрашивает тип возврата должен быть типа Long, потому что количество записей в базах данных может быть очень большим типом возврата, подходящим для учетной записи, является Long, а не int.

Во-вторых, для решения проблемы с контроллером необходимо создать еще один дополнительный контроллер, один из которых связан с отображением, а другой - с отправкой параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...