2015-02-24 11 views
10

मुझे समझ में नहीं आता कि मुझे क्या उपयोग करना चाहिए। मेरे पास दो पेज हैं - intro.jsp (1) और booksList.jsp (2)। प्रत्येक पृष्ठ के लिए मैंने एक नियंत्रक वर्ग बनाया है।स्प्रिंग एमवीसी कंट्रोलर: "रिटर्न रीडायरेक्ट", "रिटर्न रीडायरेक्ट" और "रिटर्न जेएसपी फाइल" के बीच क्या अंतर है

<form method="GET" action="/request-list"> 
     <input type="submit"/> 
</form> 

पहला सवाल है: मैं इस बटन शुद्धता के बारे में निश्चित नहीं हूँ पहले पृष्ठ बटन जो दूसरे पृष्ठ खोलता है। यह अच्छी तरह से काम करता है, लेकिन इस बटन को दबाए जाने के बाद मेरे पास प्रश्न चिह्न है।

दूसरा सवाल यह है: जब मैं प्रेस कि बटन, अगले टिप्पणी के साथ विधि (नियंत्रक दूसरे पृष्ठ के लिए) कहा जाता है:

@RequestMapping(value = "/books") 
@Controller 
public class BooksListController { 

    @RequestMapping 
    public String booksList() { 
     return "jsp/books/booksList"; 
    } 
} 

क्या मैं इस विधि से लौट जाना चाहिए? दूसरे शब्दों में मैं पहले पृष्ठ से दूसरे में कैसे जा सकता हूं?

  1. return "redirect:/books"; returns http://localhost:8080/books?
  2. return "jsp/books/booksList"; returns http://localhost:8080/request-list?
  3. return "forward:/books"; returns http://localhost:8080/request-list?

मुझे लगता है कि परिणाम एक ही है: इन सभी स्ट्रिंग्स मुझे एक ही पृष्ठ दिया (पेज 2 खोला गया था)। किस मामले में मुझे "रीडायरेक्ट", "आगे", "page.jsp" का उपयोग करना चाहिए?

इसके अलावा मैंने Post/Redirect/Get article पढ़ा है। POST विधि हैंडलिंग के बाद मुझे "रीडायरेक्ट" का उपयोग करना होगा ??

+0

आपका क्या मतलब है "इस बटन को दबाए जाने के बाद मेरे पास प्रश्न चिह्न है"? वैसे भी, आपको कॉल/बुक करने की उम्मीद नहीं थी क्योंकि आप सबमिट/अनुरोध-सूची –

+0

प्रश्न चिह्न हैं - http: // localhost: 8080/request-list **? ** ** मैंने भी कॉल/बुक नहीं किया। मैंने बुलाया/किताबें इस पृष्ठ को किताबों की सूची दिखाना है। – Argamidon

उत्तर

19

पहला सवाल यह है: मुझे इस बटन को सही करने के बारे में निश्चित नहीं है। यह अच्छी तरह से काम करता है, लेकिन इस बटन को दबाए जाने के बाद मेरे पास प्रश्न चिह्न है।

ठीक है, यह एक प्रश्न चिह्न डालता है क्योंकि आप http विधि का उपयोग करते हैं। अनुरोध पेलोड में डेटा पास करने के लिए आपको POST विधि का उपयोग करने की आवश्यकता है।


return "redirect:/books"; 

यह ग्राहक (ब्राउज़र) पर लौट आता है जो http प्रतिक्रिया व्याख्या करती है और स्वचालित रूप से रीडायरेक्ट URL कॉल

return "jsp/books/booksList"; 

यह JSP की प्रक्रिया और ग्राहक के लिए HTML भेज

return "forward:/books"; 

यह अनुरोध को स्थानांतरित करता है और सर्वर को सीधे सर्वर पर कॉल करता है।

फॉरवर्ड::


सकें कि आप प्रत्येक दृष्टिकोण के कुछ पहलुओं को ध्यान में रखना होगा उपयोग करने का निर्णय करने के लिए तेजी से, ग्राहक ब्राउज़र शामिल नहीं है है, ब्राउज़र मूल URL प्रदर्शित करता है, अनुरोध स्थानांतरित होने पर अग्रेषित यूआरएल करें।

रीडायरेक्ट: धीमा है, क्लाइंट ब्राउज़र शामिल है, ब्राउज़र पुनर्निर्देशित यूआरएल प्रदर्शित करता है, यह पुनर्निर्देशित यूआरएल के लिए एक नया अनुरोध बनाता है।

+0

धन्यवाद, लेकिन मुझे यह पता है। मैंने पूछा - किस मामले में मैं उनका उपयोग करूँ? – Argamidon

+0

उत्तर को स्पष्टीकरण –

+0

के साथ संपादित किया गया था जैसा कि मैं समझ सकता था, मुझे डेटा बदलने के बाद "रीडायरेक्ट" का उपयोग करना होगा। क्या मैं सही हू? – Argamidon

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