2013-05-22 4 views
0

Я начинаю весной mvc и пытаюсь создать очень простой поток веб-приложений. У меня есть result.jsp который, нажав на submit, должен сделать submit.jsp. Я вижу, что контроллер вызывается, но мой взгляд submit.jsp не отображается. Это дает мне HTTP 404 ошибка статуса без журналов в tomcat. Может кто-то, пожалуйста, помогите мне разобраться, что здесь не так.spring mvc view not rendered

Я также наблюдаю при запуске приложения, я направляюсь в
testspring/ где я вижу свой результат. Jsp. Я скорее ожидал, что это будет
testspring/result.jsp при запуске приложения. Прошу простить мое невежество.

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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>testspring</display-name> 
    <servlet> 
     <servlet-name>frontcontrol</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>frontcontrol</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
</web-app> 

frontcontrol-servlet.xml

<context:component-scan base-package ="com.shell.spring.testspringapp"> 
</context:component-scan> 

<bean id ="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 

    <property name="prefix" value="/WEB-INF/jsp/" /> 
    <property name="suffix" value=".jsp" />  
</bean> 

контроллера class- Frontcontrol

@Controller 
public class Firstcontrol { 

    @RequestMapping(value="/") 
    public ModelAndView invokeme(Model m) { 

     ModelAndView mav=new ModelAndView(); 
     mav.setViewName("result"); 
     System.out.println("In invoke me method"); 
     return mav; 
    } 

    @RequestMapping(value="/submit" ,method=RequestMethod.GET) 
    public String submit(Model m) { 
     System.out.println("In submitmethod"); 
     return "submit"; 
    } 
} 
+2

Заменить '/' на '*' для 'url-pattern' В вашем файле web.xml. –

+0

ЗАМЕНИТЕ / WITH *. * ПРОСТО ДЛЯ ИСПЫТАНИЙ И ЕСЛИ ЭТО РАБОТАЕТ, И ВЫ ХОТИТЕ УСТРОЙСТВО URL КАК АЗС.HTM THEN PUT * .HTM JOHND

+0

@AbhendraSingh не повезло. Когда я запускаю приложение, он дает мне ошибку HTTP 404. – Jasu

ответ

0

Как уже упоминалось в комментариях - лет должны обновить свой веб .xml, чтобы он отображал * через ваш сервлет:

<servlet-mapping> 
    <servlet-name>frontcontrol</servlet-name> 
    <url-pattern>*</url-pattern> 
</servlet-mapping> 

Вы можете отрегулировать это позже, если хотите ограничить доступные сопоставления, но сделайте это сейчас.

После этого нам нужно увидеть result.jsp (мое понимание с вашего вопроса в том, что эта страница отображается нормально, когда вы попадаете в корень вашего веб-браузера, поэтому этот вызов контроллера & вид идет в обратном порядке). Тем не менее, обоснованное предположение для некоторых вещей, которые вы можете проверить:

  • Какое значение у кнопки у вас нажимаете? это относительный? например это «submit» или это «/submit» - последний вырезает контекст вашего приложения. Например, если ваше приложение имеет корневой каталог вашего приложения http://localhost:8080/testspring, то с помощью URL-адреса /submit вы направите вас на http://localhost:8080/submit - чтобы не попасть в ваше приложение весны и сразу будет 404
  • Каким элементом является кнопка отправки? это кнопка или href? Если это кнопка, какой метод вы используете? это должно соответствовать методу на контроллере - на контроллере вы согласуетесь только с GET запросами на url submit - если ваша кнопка POSTing, то этот метод не будет удален.

Чтобы ответить на ваш конечный пункт - да, она будет отображаться как testspring/, а не testspring/result.jsp - это потому, что вы используете MVC Framework, а не просто поражая файлы в системе - например, запрос попал в корень url (/), который обрабатывается контроллером, который, в свою очередь, отображает представление - представление может быть одним jsp или составлено из нескольких файлов (с использованием фрагментов и т. д.) или что-то еще - вы не «нажимаете», jsp напрямую, а jsp используется контроллером при обслуживании по пути «/»

+0

Спасибо большое :) Это работает сейчас, просто сохраняя url-шаблон «/». Проблема заключалась в том, что у моей формы было неправильное обращение :(И спасибо за ваше аккуратное объяснение при визуализации. – Jasu