2017-06-12 57 views
0

我正在嘗試Spring MVC 4,用於在前端發佈數據的數據表。Spring MVC-從JS調用服務,同時從JSP文件調用另一個JS的問題

我的項目名稱是NewEDXUI。

場景: - index.jsp將從Controller/Rest Controller獲取數據以Table格式發佈數據。

問題我面臨的 - 我在JSP中創建web.xml和servlet.xml中

1>,如果我給的.js文件路徑從資源文件夾 - 然後在加載它正在尋找http://localhost:8080/NewEDXUI/Views/resources/js/client.js 如果不是「resources/js/client.js」,而是使用「../resources/js/client.js」,那麼client.js文件會正確加載。

2> JSP頁面表ID =「tableClient」,它應該得到client.js VAR tableClient,這是調用getAllPartners業務數據控制器封裝MainController.java 定義..但是當它被調用我是得到 GET http://localhost:8080/NewEDXUI/Views/getAllPartners?_=1497263560865 404(未找到)

請提供一些指導如何解決這些問題並完成我的第一個Spring項目。

項目結構

enter image description here

的web.xml

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
         http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
version="3.0" metadata-complete="true"> 
<display-name>Archetype Created Web Application</display-name> 
<servlet> 
    <servlet-name>springmvc</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>springmvc</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

用SpringMVC-servlet.xml中

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" 
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:p="http://www.springframework.org/schema/p" 
xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans  
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context.xsd"> 

<context:annotation-config /> 
<tx:annotation-driven /> 
<mvc:annotation-driven /> 

<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> 
    <property name="prefix" value="/Views/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

<mvc:resources mapping="/resources/**" location="/resources/" /> 


<context:property-placeholder location="classpath:hibernate.properties" /> 

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="${database.driverClass}" /> 
    <property name="url" value="${database.url}" /> 
    <property name="username" value="${database.username}" /> 
    <property name="password" value="${database.password}" /> 
</bean> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
      <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> 
      <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
     </props> 
    </property> 
    <property name="packagesToScan"> 
     <list> 
      <value>com.edx.model</value> 
     </list> 
    </property> 
</bean> 

<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 

<context:component-scan base-package="com.edx.controller" /> 
<context:component-scan base-package="com.edx.dao" /> 
<context:component-scan base-package="com.edx.service" /> 
<context:component-scan base-package="com.edx.util" /> 

Client.js

$(document).ready(
    function() { 

     var tableClient = $('#tableClient').DataTable(
       { 
        "autoWidth" : false, 
        "columnDefs" : [{ 
         "targets" : [ 0 ], 
         "visible" : false, 
         "searchable" : false 
        }], 
        "ajax" : { 
         "url" : "/NewEDXUI/Views/getAllPartners", 
         "type" : "GET", 
         "success" : function(data) { 
          $.each(data, function(ind, obj) { 
           tableClient.row.add(
             [ obj.partner_code, 
             obj.partner_name, 
             obj.status_code, 
             obj.default_group_code, 
             obj.partner_type, 
             obj.network_type ]).draw(); 
          }); 
         } 
        }, 
       }) 

     $(window).on('load',function() { 

     }); 

     $("#buttonSearch").click(function() { 
      tableClient.clear().draw(); 
      tableClient.ajax.reload(); 
     }); 

    }); 

MainController.java

package com.edx.controller; 

    import java.util.List; 

    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 
    import org.springframework.beans.factory.annotation.Autowired; 
    import org.springframework.stereotype.Controller; 
    import org.springframework.web.bind.annotation.RequestMapping; 
    import org.springframework.web.bind.annotation.RequestMethod; 
    import org.springframework.web.bind.annotation.RestController; 

    import com.edx.model.Partner; 
    import com.edx.service.PartnerService; 

    @RestController 
    public class MainController { 

     @Autowired 
     private PartnerService partnerService; 

     @RequestMapping(value="/getAllPartners", method=RequestMethod.GET, produces="application/json") 
     public List<Partner> getAllPartners(HttpServletRequest req,HttpServletResponse resp){ 
      System.out.println("Inside Controller"); 
      List<Partner> partnerlist = partnerService.getAllPartners();  
      return partnerlist; 
     } 

    } 
+0

請包括MainContoller代碼。懷疑MainController的其餘部分出現問題.. – Sh4m

+0

@ Sh4m感謝您的快速響應。我已經添加了MainController.java。問題我面臨的是當JS呼叫服務,它不能夠到達控制器 – niting

+0

嘗試使用@Responsebody在公開名單 getAllPartners()。 –

回答

0

爲什麼要使用Spring 4 WITN xml文件的配置?最佳實踐請使用註釋配置於Spring 4

你也錯了您的請求,請刪除瀏覽:

http://localhost:8080/NewEDXUI/getAllPartners