2015-03-04 3 views
0

У меня проблема с пружинным MVC/котом, и более конкретно Url Когда я пытаюсь выполнить: http://localhost:8080/HelloWeb/index.htmlSpring MVC, кот URL 404 Ошибка

ПРЕДУПРЕЖДЕНИЕ: Не картирование найденного для запроса HTTP с URI [/HelloWeb/index.html] в DispatcherServlet с именем '' HelloWeb

HelloWeb-servlet.xml:

<context:component-scan base-package="pl.solsoft.web"/> 

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> 
    <property name="templateLoaderPath" value="/WEB-INF/pages"/> 
     </bean> 
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> 
    <property name="cache" value="true"/> 
    <property name="prefix" value=""/> 
    <property name="suffix" value=".ftl"/> 
</bean> 
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/pages/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 

StudentController:

@Controller 
public class StudentController{ 
private static List<User> userList=new ArrayList<User>(); 
static { 
    userList.add(new User("Bill", "Gates")); 
    userList.add(new User("Kasia", "K")); 
} 
@RequestMapping(value = "/index", method = RequestMethod.GET) 
public String index (@ModelAttribute("model") ModelMap model){ 
    model.addAttribute("userList", userList); 
    return "index"; 
} 
@RequestMapping(value = "/add", method = RequestMethod.POST) 
public String add(@ModelAttribute("user") User user){ 
    if (null != user && null != user.getName() 
      && null != user.getLastName() && !user.getName().isEmpty() 
      && !user.getLastName().isEmpty()) { 
     synchronized (userList) { 
      userList.add(user); 
     } 
    } 
    return "redirect:index.html"; 
} 
} 

web.xml:

<display-name>HW</display-name> 
<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

<servlet> 
    <servlet-name>HelloWeb</servlet-name> 
    <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>HelloWeb</servlet-name> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 

Спасибо U для всех кончиков

ответ

0

Что делать, если вы добавляете .html вашим RequestMappings например, @RequestMapping (value = "/ index.html")

+0

та же проблема;/ –

+0

Каково имя создаваемого/развернутого файла. Это HelloWeb.war – zoostar

+0

это имеет значение? –

0

В вашем web.xml вы сопоставили DispatcherServlet для обработки запросов, соответствующих * .html. Но ваш StudentController не предназначен для обработки таких запросов.

Измените значение в @RequestMapping, чтобы включить расширение .html.

@RequestMapping(value = "/index.html", method = RequestMethod.GET) 
public String index (@ModelAttribute("model") ModelMap model){ 
    ...... 
    return "index"; 
} 

@RequestMapping(value = "/add.html", method = RequestMethod.POST) 
public String add(@ModelAttribute("user") User user){ 
    ..... 
    return "redirect:index.html"; 
} 

Теперь попробуйте открыть страницу, перейдя в http://localhost:8080/HelloWeb/index.html

----------- Edit ----------------- ------------

Проверьте, что контроллер получает инициализацию весной. Для этого создайте конструктор no-arg и попробуйте напечатать что-то на консоли.

@Controller 
public class StudentController{ 

     public StudentController(){ 
       System.out.println("Hey, I'm in StudentController"); 
     } 

} 
+0

thx, но это тоже не сработало –

+0

@Tommy это интересно. Вы можете что-то попробовать? Создайте конструктор no args в контроллере. Просто напишите один оператор SysOut внутри конструктора. Затем перезапустите приложение. Убедитесь, что sysout отображается в консоли. Если это не так, то ваш контроллер не распознается контейнером Spring. Если SysOut появляется в консоли, возникает другая проблема. – RKodakandla

0

Я не вижу <mvc:annotation-driven/> в вашем сервлет конфигурации. Можете добавить и проверить. Благодарю.

0

Если вы пытаетесь развернуть свои HTML-файлы в виде простых статических файлов, вы должны настроить их как таковые. Добавьте это в диспетчерской сервлета, убедившись, что вы имеете правильное пространство имен объявленные:

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

Вам не нужен метод контроллера для обслуживания этого файла. Если вам нужна дополнительная логика на внутреннем сервере, вы можете отправить свой запрос /index, а затем перенаправить на ваш файл или просто преобразовать index.html в файл .jsp. Прямо сейчас ваш контроллер, скорее всего, пытается найти JSP-представление с именем index.html, которого не существует.

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