2012-07-09 19 views
8

के लिए कोई मैपिंग नहीं मिली यह शायद इस स्प्रिंग एमवीसी त्रुटि के बारे में लाखवां सवाल है, लेकिन मैं इसे अभी भी काम नहीं कर सकता।HTTP अनुरोध (स्प्रिंग एमवीसी)

मैं एक सरल नियंत्रक विधि को/खाते में मैप करने की कोशिश कर रहा हूं और बाद में मैं/खाता/{आईडी} जोड़ना चाहता हूं, लेकिन मैं काम करने के लिए भी खाता/खाता नहीं ले सकता।

यहाँ मेरी web.xml

<?xml version="1.0" encoding="ISO-8859-1" ?> 

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
    version="2.4"> 

    <display-name>My Spring MVC web application</display-name> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <servlet> 
     <servlet-name>springDispatcherServlet</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>classpath:application-context.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

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

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:application-context.xml</param-value> 
    </context-param> 
</web-app> 

आवेदन-context.xml की सामग्री है:

<mvc:annotation-driven /> 
<context:component-scan base-package="org.example" /> 

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

AccountController.java:

@Controller 
public class AccountController { 

    @RequestMapping(value="/account", method = RequestMethod.GET) 
    public ModelAndView showAccount() throws Exception { 
     ModelAndView mav = new ModelAndView(); 
     mav.setViewName("account"); 
     mav.addObject("someText", "Hello World!"); 
     return mav; 
    } 
} 

src/मुख्य/webapps/विचार/account.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

<h1>${someText}</h1> 

जब मैं बिलाव में आवेदन शुरू, मैं देख निम्न पंक्ति लॉग में दिखाई:

[localhost-startStop-1] INFO org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/account], methods=[GET], params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.ModelAndView org.example.springmvc.controller.AccountController.showAccount() throws java.lang.Exception 
मेरे लिए

, कि यूआरएल स्थानीय होस्ट पता चलता है: 8080/खाता ठीक से मैप किया गया है और कम से कम कुछ देना चाहिए उत्पादन। लेकिन जब मैं स्थानीय होस्ट पर जाएँ: 8080/खाता मुझे 404 त्रुटि हो और लॉग कहते हैं:

No mapping found for HTTP request with URI [/views/account.jsp] in DispatcherServlet with name 'springDispatcherServlet' 
No mapping found for HTTP request with URI [/favicon.ico] in DispatcherServlet with name 'springDispatcherServlet' 

आप मदद की बहुत सराहना की जाएगी।

उत्तर

4

अपने स्प्रिंग विन्यास के साथ गलत कुछ भी नहीं है, यह /account यूआरआई तरह लग रहा है सही ढंग से अपने नियंत्रक द्वारा नियंत्रित किया जा रहा है और यह दृश्य लौटा रहा है account सही नाम, जिसे /views/account.jsp> के पथ के रूप में आपके InternalViewResolver द्वारा हल किया जा रहा है।

अब किसी कारण से यह प्रेषण गलत हो रहा है (/* आपके वसंत डिस्पैटर सर्वलेट के लिए मानचित्रण के कारण, धारणा यह है कि वसंत इस/विचारों को भी संभाल सकता है, शायद यही कारण है कि आप यह विशिष्ट त्रुटि क्यों देख रहे हैं)। आप के बजाय /views फ़ोल्डर में विचारों रखने का यह कर सकता,, /WEB-INF/views फ़ोल्डर में स्थानांतरित करने के लिए और अपने viewresolver बदलने के लिए:

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/views/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 
+0

अभी भी कोई भाग्य नहीं है मुझे डर है। जब मैं एप्लिकेशन शुरू करता हूं तो मुझे लॉग में कुछ अतिरिक्त लाइनें दिखाई देती हैं। मैप URL पथ [/ खाता] हैंडलर पर 'accountController' मैप URL पथ [/account.*] हैंडलर 'accountController' मैप URL पथ [/ खाता /] हैंडलर पर पर 'accountController' लेकिन जब मैं करने के लिए जाना/मेरे वेब ब्राउज़र में खाता, मुझे अभी भी एक ही प्रकार का संदेश मिलता है: WARN http-apr-8080-exec-3 org.springframework.web.servlet.PageNotFound - यूआरआई के साथ HTTP अनुरोध के लिए कोई मैपिंग नहीं मिली [/ WEB- आईएनएफ/विचार/खाता.जेएसपी] डिस्पैचर सर्वलेट में नाम 'springDispatcherServlet' – Julius

+4

के साथ मुझे यह काम करने के लिए मिला! Whoohoo! आखिरकार। मैंने को web.xml में/* से/में बदल दिया। मुझे समझ में नहीं आता कि अब यह क्यों काम करता है, कम से कम मैं खुश प्रोग्रामर हूं। – Julius

+0

हाय @ बिजू आप कृपया http://stackoverflow.com/questions/17697899/how-to-map-dynamic-url-http-127-0-0-18080-prj-noticeopen-2-in पर एक नज़र डालें -spring-mvc-cont यह थोड़ा अलग है लेकिन अजीब है क्योंकि मैं नियंत्रक तक नहीं पहुंच रहा हूं –

4

आवेदन-context.xml के लिए निम्न सेम जोड़ने का प्रयास करें

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> 
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> 
+0

मैं अभी भी एक ही त्रुटि मिलती है .... – Julius

+0

मेरी त्रुटि तय धन्यवाद! –

संबंधित मुद्दे