Я новичок в 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 не работает, когда я использую «/». Если кто-нибудь может что-то предложить, пожалуйста, помогите. Спасибо за чтение в любом случае.
Было бы хорошо, если вы скажете, как выглядят запрошенные URL (первый раз и второй раз). Извините, но мой кристальный шар в настоящее время не используется ... –