2015-08-13 2 views
0

Я новичок в Spring mvc, и я работаю над проектом, который раньше работал над сервлетами вместо весны. В моем коде я использую DispatcherServlet для обработки двух вызовов ajax, один из которых отлично работает, а другой, который работает в первый раз, когда я запускаю сервер, но не обновляю контроллер при обновлении страницы. Это означает, что проблема не в весеннем окружении, но в том, как второй контроллер взаимодействует с пружиной (потому что он отлично работает в сервлетах).Spring DispatcherServlet не попадает в контроллер после обновления

вот мой web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://java.sun.com/xml/ns/javaee" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>final</display-name> 
    <welcome-file-list> 
     <welcome-file>datapage.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet> 
     <servlet-name>dispatcher</servlet-name> 
     <servlet-class> 
      org.springframework.web.servlet.DispatcherServlet 
     </servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 


    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
</web-app> 

и вот мой грузоотправитель-сервлет файл

<?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:context="http://www.springframework.org/schema/context" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" 
     xmlns:aop="http://www.springframework.org/schema/aop" 

     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
     http://www.springframework.org/schema/context  
     http://www.springframework.org/schema/context/spring-context-4.0.xsd 
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc-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" 
     > 
    <context:component-scan 
     base-package="raga.controller" /> 



    <bean id="viewResolver" 
     class="org.springframework.web.servlet.view.UrlBasedViewResolver" > 
     <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
     <property name="prefix"> 
      <value>/WEB-INF/jsp/</value> 
     </property> 
     <property name="suffix"> 
      <value>.jsp</value> 
     </property> 
    </bean> 

</beans> 

вот мой/CompanyGsonObjects контроллер

@Controller 
public class sping { 


@RequestMapping(value="/CompanyGsonObjects", method = RequestMethod.GET) 
public void CompanyGsonObjects(HttpServletRequest request, HttpServletResponse response) throws IOException, SQLException{ 

    System.out.println("abc"); 
JQueryDataTableParamModel param = DataTablesParamUtility.getParam(request); 

String sEcho = param.sEcho; 
int iTotalRecords; // total number of records (unfiltered) 
int iTotalDisplayRecords; //value will be set when code filters companies by keyword 

iTotalRecords = DataRepository.GetCompanies().size(); 
List<Company> companies = new LinkedList<Company>(); 
for(Company c : DataRepository.GetCompanies()){ 
    if(c.getName().toLowerCase().contains(param.sSearch.toLowerCase()) 
     || 
     c.getAddress().toLowerCase().contains(param.sSearch.toLowerCase()) 
     || 
     c.getProxy().toLowerCase().contains(param.sSearch.toLowerCase()) 
     || 
     c.getTown().toLowerCase().contains(param.sSearch.toLowerCase())) 
    { 
     companies.add(c); // add company that matches given search criterion 
    } 
} 
iTotalDisplayRecords = companies.size();// number of companies that match search criterion should be returned 

final int sortColumnIndex = param.iSortColumnIndex; 
final int sortDirection = param.sSortDirection.equals("asc") ? -1 : 1; 

Collections.sort(companies, new Comparator<Company>(){ 
    @Override 
    public int compare(Company c1, Company c2) {  
     switch(sortColumnIndex){ 
     case 0: 
      return c1.getName().compareTo(c2.getName()) * sortDirection; 
     case 1: 
      return c1.getAddress().compareTo(c2.getAddress()) * sortDirection; 
     case 2: 
      return c1.getTown().compareTo(c2.getTown()) * sortDirection; 
     case 3: 
      return c1.getProxy().compareTo(c2.getProxy()) * sortDirection; 
     } 
     return 0; 
    } 
}); 

if(companies.size()< param.iDisplayStart + param.iDisplayLength) { 
    companies = companies.subList(param.iDisplayStart, companies.size()); 
} else { 
    companies = companies.subList(param.iDisplayStart, param.iDisplayStart + param.iDisplayLength); 
} 

try { 
    JsonObject jsonResponse = new JsonObject();  
    jsonResponse.addProperty("sEcho", sEcho); 
    jsonResponse.addProperty("iTotalRecords", iTotalRecords); 
    jsonResponse.addProperty("iTotalDisplayRecords", iTotalDisplayRecords);   
    Gson gson = new Gson(); 
    jsonResponse.add("aaData", gson.toJsonTree(companies)); 

    response.setContentType("application/Json"); 
    response.getWriter().print(jsonResponse.toString()); 

} catch (JsonIOException e) { 
    e.printStackTrace(); 
    response.setContentType("text/html"); 
    response.getWriter().print(e.getMessage()); 
} 

} 
} 

Теперь, когда у меня есть сказал, что это не работает, но есть что-то еще, что я нашел интересным, это если я дам полный url pat крачка в отображении сервлета, т работает fine.for пример, если я пишу

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/CompanyGsonObjects</url-pattern> // the call which does not work when i use/instead of CompanyGsonObjects 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/spring</url-pattern> // the call which works 
</servlet-mapping> 

, как я сказал вам запрос с URL/рессорная работает отлично использовать ли я «/» или «/ весна», но просить спинным URL/КомпанияGsonObjects не работает, когда я использую «/». Если кто-нибудь может что-то предложить, пожалуйста, помогите. Спасибо за чтение в любом случае.

+0

Было бы хорошо, если вы скажете, как выглядят запрошенные URL (первый раз и второй раз). Извините, но мой кристальный шар в настоящее время не используется ... –

ответ

0

Это поздний ответ, но я нашел, в чем проблема. На самом деле контроллер пружины работал нормально, единственная проблема заключалась в том, что я вызывал контроллер из файла javascript, который был в другой папке. Теперь, когда первый раз он работает нормально, но после того, как я ударил контроллер, управление уходит в диспетчер весны, который не может найти мой файл javascript, потому что он продолжает искать его в пути, который я указал для контроллера.

, чтобы исправить это, просто нужно изменить свой url на * .html в web.xml и добавить .html в конце значения @requestmapping, а также в конце URL-адреса, где вы делаете вызов в javascript.

Смежные вопросы