क्या मैं वेबलेट। Xml में मैपिंग के बिना सर्वलेट का आह्वान कर सकता हूं? [डुप्लीकेट]

Dec 12 2020

अगर मेरे पास एक सर्वलेट के लिए कार्रवाई है , तो हमें XML में मैपिंग का उपयोग करना चाहिए जो कि अनुशंसित है। तो यह इस तरह दिखेगा:

HTML सूचकांक:

<!DOCTYPE html>

</head><body>
    <form action="go" method="POST">
        Enter name: <input type="text" name="name">
        <button>Submit form :)</button>
    </form>
</body></html>

XML मैपिंग:

<web-app..........
  
  <servlet>
  <servlet-name>servlet</servlet-name>
  <servlet-class>ServletOne</servlet-class>
  </servlet>
  
  <servlet-mapping>
  <servlet-name>servlet</servlet-name>
  <url-pattern>/go</url-pattern>
  </servlet-mapping>
  
</web-app>

सर्वलेट क्लास

public class ServletOne extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String s = req.getParameter("name");
        PrintWriter pw = resp.getWriter();
        pw.println("Welcome " + s);

    }
}

और यह ठीक काम करता है। लेकिन मेरा सवाल यह है कि अगर मैं मैपिंग नहीं करना चाहता हूं - तो मैं सीधे सर्वलेट क्लास को कॉल करना चाहता हूं। मैंने अपनी XML फ़ाइल निकाल दी और मैंने इन सभी लाइनों को किया:

<form action="ServletOne" method="POST">
<form action="ServletOne.class" method="POST">
<form action="ServletOne.java" method="POST">

और .. उनमें से कोई भी काम नहीं करता है। क्या मैं वास्तव में बिना किसी मैपिंग के सीधे सर्वलेट कॉल कर सकता हूं? यदि हाँ, तो कैसे? कभी-कभी परीक्षण उद्देश्यों के लिए, मुझे हर सर्वलेट की मैपिंग में समय बर्बाद करने की आवश्यकता नहीं है।

जवाब

1 LiveandLetLive Dec 12 2020 at 05:07

आप एनोटेशन उदा का उपयोग कर सकते हैं

@WebServlet("/go")
public class ServletOne extends HttpServlet {
    //...
}

वास्तव में, सर्वलेट 3.0 इसके बाद, अधिकांश डेवलपर्स इसे XML कॉन्फ़िगरेशन के लिए पसंद करते हैं।

ध्यान दें कि सर्वलेट स्पेसिफिकेशन के लिए मैपिंग की आवश्यकता होती है /। चेक इस बारे में अधिक जानने के लिए।