2013-04-16 14 views
5

नहीं खोजा जा सका मुझे यकीन है कि यह एक noob सवाल है, और मैं एक जवाब के लिए एक घंटे trawling stackoverflow के अधिकतर हिस्से तक खर्च किया है लेकिन कोई तो यहाँ मेरे मामले के लिए लगता है हम जाना ...वसंत MVC में आराम और JSP मिश्रण, JSP

मैं एक नया webapp वसंत MVC का उपयोग करता है। अधिकांश ऐप (99%) शुद्ध आरईएसटी है, इसलिए इसमें "दृश्य" नहीं है बल्कि बल्कि जेएसओएन को तार को वापस भेजता है, या त्रुटियों आदि के लिए वैकल्पिक HTTP स्थिति भेजता है।

अपवाद लॉगिन पृष्ठ है जिसे वास्तविक जेएसपी होना चाहिए, लेकिन किसी भी तरह से कॉन्फ़िगरेशन जो मैं अपने आरईएसटी नियंत्रकों को मैप करने के लिए उपयोग कर रहा हूं वह मुझे ऐसे राज्य में छोड़ रहा है जहां सामान्य जेएसपी मैपिंग विफल हो जाती है।

यहाँ मैं क्या मिल गया है:

मेरी डिस्पैचर सर्वलेट config में, प्रासंगिक अंश इस प्रकार हैं:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/pages/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 

मेरे प्रयास में यह काम कर रहा करने के लिए, मैं भी करने के लिए एक मानचित्रण शामिल किया है " HomeController "जो वर्तमान में अभी अपना लॉगिन JSP पर रीडायरेक्ट:

<bean name="/" class="com.somepackage.HomeController"/> 

अब, web.xml में मेरे पास है:

+०१२३५१६४१०
<servlet> 
    <servlet-name>spring-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>spring-dispatcher</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

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

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/spring-dispatcher-servlet.xml 
    </param-value> 
</context-param> 

यह मेरा RESTful नियंत्रकों, जो इस तरह दिखेगा के लिए ठीक काम करता है:

@Controller 
@RequestMapping(value = "/api/user") 
public class BlahBlahController {... 

मेरे "HomeController" है, जो सिर्फ इस तरह दिखता है:

@Controller 
@RequestMapping(value = "/") 
public class HomeController extends AbstractController { 
    @Override 
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { 
     return new ModelAndView("login"); 
    } 
} 

शुरू हो रहा है जब मैं हिट "/"यूआरएल, लेकिन मैं लॉग में इस त्रुटि मिलती है:

WARNING: No mapping found for HTTP request with URI [/WEB-INF/pages/login.jsp] in DispatcherServlet with name 'spring-dispatcher' 

अब मैं इसे क्या कह रहा है मिलता है, यह नहीं जानता कि /WEB-INF/pages/login.jsp कैसे हल करें (यह पृष्ठ बीटीडब्ल्यू मौजूद है), लेकिन मैं इस बात पर अटक गया हूं कि इसे काम करने के लिए मुझे चीजों को बदलने की जरूरत है।

मैं एक छोटे से यह कैसे काम चाहिए था पर संदेह में हूँ। किसी को कोई सुराग मिला है?

धन्यवाद। विधि स्तर पर

+0

मुझे यकीन है कि अगर यह मायने रखती है नहीं कर रहा हूँ, लेकिन तुम क्यों दृश्य समाधानकर्ता दो बार परिभाषित किया है होता? इसके अलावा, अपने '' HomeController' के बजाय @ Component' '@ Controller' टिप्पणी की जाती है। – NilsH

+0

ओह .. lol .. हाँ डुप्लिकेट एक गलती है .. कोई फर्क नहीं करना चाहिए जैसा कि आप ने कहा। @ घटक/@ नियंत्रक भेद अच्छी तरह से देखा गया है, मैं अब से बदल जाऊंगा और पुनः प्रयास करूंगा। (समस्या को जारी रखने के लिए पोस्ट को संपादित किया गया है क्योंकि समस्या बनी रहती है) –

+0

तो .. के बिना मुझे निम्न त्रुटि मिलती है: HTTP के लिए कोई मैपिंग नहीं मिली यूआरआई [/] के साथ अनुरोध ... मैपिंग के साथ मुझे पहले की तरह ही त्रुटि मिलती है: यूआरआई [/WEB-INF/pages/login.jsp] के साथ HTTP अनुरोध के लिए कोई मैपिंग नहीं मिली ... मैं वहाँ उस xml config होने से नफरत है .. मैं सब कुछ एनोटेशन संचालित पसंद करते हैं लेकिन परवाह किए बिना यह अभी भी मुझे –

उत्तर

6

ठीक है .. मैं इस सवाल का जवाब मिल गया है, यह डिस्पैचर config में यूआरएल पैटर्न है।

बजाय:

<servlet-mapping> 
    <servlet-name>spring-dispatcher</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

यह होना चाहिए

<servlet-mapping> 
    <servlet-name>spring-dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

मैं वास्तव में इस सवाल का जवाब कहीं और मिल गया था और यह कोशिश की, लेकिन "सोचा था कि" यह काम नहीं कर रहा था, तो कारण मैंने सोचा था कि एहसास हुआ यह मूल कारण से असंबंधित था।

कोई विचार क्यों यह काम करेगा और अन्य नहीं .. लेकिन एक समय में एक समस्या ...

-1

रखें RequestMapping, मैं अपने कोड में करने की कोशिश की और यह काम किया। ": घटक स्कैन संदर्भ"

@Override 
@RequestMapping(value = "/") 
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { 
    return new ModelAndView("login"); 
} 

आप भी नीचे दिए गए कोड का उपयोग कर सकते है अगर आप बस सभी के लिए एक लॉगिन दृश्य रीडायरेक्ट करना चाहते हैं आप आप @Controller का उपयोग कर और एक उचित कर रहे हैं, तो HomeController सेम को परिभाषित करने की जरूरत नहीं है "/" पहुंच।

<mvc:view-controller path="/" view-name="login"/> 

चेकआउट एक उपयोगी संदर्भ के लिए GitHub से mvc show case परियोजना।

+0

मैं पिछले टिप्पणी में उल्लेख किया है, समस्या नहीं है कि नियंत्रक नहीं मिला है, यह है और यह सक्रिय करता है। समस्या यह है कि जेएसपी इसे आगे नहीं मिल सकता है। कोई मैपिंग जो मैं छूट गए थे यूआरआई [/WEB-INF/pages/login.jsp] DispatcherServlet –

+0

में वैसे आप सही ढंग से संशोधित किया है यूआरएल-पैटर्न के साथ HTTP अनुरोध के लिए मिल गया। आप बस जोड़कर वसंत की आसानी से उपयोग की सराहना कर सकते हैं। आपको किसी भी नियंत्रक को – apurvc

+0

लिखने की आवश्यकता नहीं है। पद में नियंत्रक सिर्फ एक उदाहरण था। वहां और कोड है जो वहां जाता है लेकिन मैंने सोचा कि समस्याएं होने वाली सटीक स्थितियों को प्रदर्शित करना महत्वपूर्ण हो सकता है। मैं कहीं और दृश्य-नियंत्रक तत्व का उपयोग करता हूं और मैं मानता हूं कि यह वास्तव में बहुत उपयोगी है। –