jsp

2010-03-01 19 views
18

में जावा विधि को कॉल करना मेरे पास एक जावा क्लास है जो फ़ाइलों पर कुछ संचालन करती है। चूंकि जावा कोड बहुत बड़ा है, इसलिए मैं इस कोड को jsp में लिखना नहीं चाहता हूं। जब भी आवश्यक हो मैं jsp में विधियों को कॉल करना चाहता हूं।jsp

कृपया मुझे वह रास्ता बताएं जहां मुझे यह फ़ाइल रखने की आवश्यकता है। इसके अलावा कुछ उदाहरण कोड इसका उपयोग कैसे करें उपयोगी होगा।

उत्तर

9

मुझे लगता है कि सवाल यह है कि आप जावा कोड को जेएसपी में कैसे उपलब्ध कराते हैं? आप इसे किसी भी अन्य जावा कोड की तरह उपलब्ध कराएंगे, जिसका अर्थ है कि इसे .class फ़ाइल में संकलित करने और क्लासपाथ पर रखने की आवश्यकता है।

वेब अनुप्रयोगों में, इसका मतलब है कि क्लास फ़ाइल एप्लिकेशन की .war फ़ाइल या निर्देशिका में वेब-आईएनएफ/कक्षाओं के तहत मौजूद होना चाहिए, सामान्य पैकेज संरचना में अपने पैकेज से मेल खाते हैं। तो, इस कोड को अपने सभी अन्य एप्लिकेशन जावा कोड के साथ संकलित और तैनात करें, और यह सही जगह पर होना चाहिए।

नोट आपको जेएसपी में अपनी कक्षा आयात करने की आवश्यकता होगी, या पूरी तरह से योग्य श्रेणी का नाम उपयोग करने की आवश्यकता होगी, लेकिन अन्यथा आप <%%> वाक्यविन्यास का उपयोग करके जो भी जावा कोड पसंद करते हैं उसे लिख सकते हैं।

आप <% का उपयोग करके किसी अन्य उपयोगिता जेएसपी में एक विधि भी घोषित कर सकते हैं! %> वाक्यविन्यास (नोट करें!), जेएसपी आयात करें, और उसके बाद इस तरह के ब्लॉक में घोषित विधि को कॉल करें। हालांकि यह खराब शैली है।

+0

आपके उत्तर के लिए धन्यवाद, मैंने ऐसा किया है जैसा आपने आयात जावा क्लास कहा है और इसका उपयोग करें .... धन्यवाद उन सभी को धन्यवाद ... –

24

सर्वलेट (जो JSP से पहले चलाता है) में:

Person p = new Person(); // instantiate business object 
p.init(...); // init it or something 
request.setAttribute("person", p); // make it available to the template as 'person' 

टेम्पलेट में आप इस का उपयोग कर सकते हैं:

your age is: ${person.age} <%-- calls person.getAge() --%> 
+1

आपके पास जेएसपी से पहले एक अलग सर्वलेट चलाने के लिए * नहीं है, हालांकि जेएसपी फ़ाइल स्वयं को एक सर्वलेट पर एक सर्वलेट में संकलित किया जाएगा। – Rob

+2

हां, यह अनिवार्य नहीं है, बस अच्छा अभ्यास – cherouvim

4

हालांकि मैं किसी भी जावा कॉल करने के लिए आप सलाह नहीं देंगे JSP, आप अपने JSP के अंदर ऐसा कर सकते हैं:

<% 
    //Your java code here (like you do in normal java class file. 
%> 

<!-- HTML/JSP tags here --> 

यदि आप सोच रहे हैं, <% ... %> खंड कहा जाता है स्क्रिप्टलेट :-)

1

असल में, जेएसपी 'फ़ाइलों पर कुछ संचालन करने' के लिए सही जगह नहीं है। क्या आपने MVC पैटर्न के बारे में सुना है?

अगर आप अभी भी से jsp आप यह कर सकते उदाहरण के लिए, जावा विधि बुला में रुचि:
1. <% MyUtils.performOperation("delete") %> (scriptlet)
2. <my-utils:perform operation="delete"/> (कस्टम टैग)

वैसे भी मैं सिफारिश आप स्क्रिप्टलेट, जेएसपी कस्टम टैग और एमवीसी पैटर्न के बारे में Google के लिए।
बेस्ट विनर्ड्स, गेडेवन

+0

एमवीसी पैटर्न कभी-कभी ऐसी मुश्किलों की आवश्यकता होती है तरीकों, भी, विशेष रूप से यदि डेटा संरचना को दिखाया जाना जटिल है। – peterh

7

आप जिस तरह की कार्रवाई करना चाहते हैं उसके आधार पर, आप आमतौर पर टैगलिब्स, ईएल फ़ंक्शंस या सर्लेट का उपयोग करते हैं। वास्तव में जावा कोड, वास्तव में जेएसपी फाइलों में नहीं है, लेकिन जावा कक्षाओं में।

यदि आप किसी अनुरोध को प्रीप्रोसेस करना चाहते हैं, तो Servlet doGet() विधि का उपयोग करें। जैसे

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // Preprocess request here. 
    doYourThingHere(); 
    // And forward to JSP to display data. 
    request.getRequestDispatcher("page.jsp").forward(request, response); 
} 

आप के बाद किसी न किसी रूप प्रस्तुत एक अनुरोध postprocess चाहते हैं, बजाय सर्वलेट doPost() विधि का उपयोग करें।

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // Postprocess request here. 
    doYourThingHere(); 
    // And forward to JSP to display results. 
    request.getRequestDispatcher("page.jsp").forward(request, response); 
} 

आप पेज प्रवाह और/या HTML उत्पादन को नियंत्रित करना चाहते हैं, तो JSTL core taglib की तरह एक taglib का उपयोग करें या custom tags पैदा करते हैं।

यदि आप स्थैतिक/सहायक कार्यों को निष्पादित करना चाहते हैं, तो JSTL fn taglib जैसे ईएल फ़ंक्शंस का उपयोग करें या custom functions बनाएं।

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