জাভা ওয়েব অ্যাপ্লিকেশন ফোল্ডার কাঠামো


18

জে 2 ইইর শিক্ষানবিস হিসাবে, আমি সম্প্রতি জে 2 ই ই কোর: সার্লেটস এবং জেএসপি ব্যবহার করে স্ক্র্যাচ থেকে নিজের প্রকল্পটি বিকাশ করা শুরু করেছি।

আমার প্রকল্পের ফোল্ডার কাঠামোটি সঠিক কিনা তা আমি মূল্যায়ন করতে পারিনি। এখানে আমার প্রকল্প ফোল্ডার কাঠামো। এখানে চিত্র বর্ণনা লিখুন

প্রশ্ন জিজ্ঞাসার আগে, আমি স্বীকার করেছি যে আমি উত্তর দিতে পারলাম না বা কেউ আমাকে জিজ্ঞাসা করলে ন্যায্যতাও জানাতে পারল না, কেন এই ধরণের ফোল্ডার কাঠামো। প্রশ্ন: আমার জেএসপিএসকে ওয়েব-ইনফের বাইরে রেখে দেওয়া কি ভাল লক্ষণ? তা না হলে কেন এমন হয়? যদি হ্যাঁ কেন?

কোনও জে 2 ই ই ওয়েব অ্যাপ্লিকেশনের জন্য কোনও মানক ফোল্ডার কাঠামো কনভেনশন রয়েছে কি না, আমি জানি যে ম্যাভেন কিছু মান নিয়ে এসেছেন তবে এখনও আমি বিশ্বাস করি প্রয়োজনীয়তা অনুসারে আমরা কাস্টমাইজ করতে পারি।

আমি কিছুটা গুগল করেছি এবং দুটি উল্লেখ 1 2 পেয়েছি

যেখানে উত্তরগুলি একই পৃষ্ঠায় নেই, সেখান থেকে আমি কোনও উপসংহার আঁকতে পারি নি।

J2EE ওয়েব অ্যাপ্লিকেশনটির জন্য ফোল্ডার কাঠামোটি দেওয়ার সময় কোন বিষয়গুলি বিবেচনা করা উচিত, গুরুত্বপূর্ণভাবে জেএসপিএস, স্ট্যাটিক সামগ্রীতে কোথায় যাওয়া উচিত এবং কেন?



আমি আপনাকে এমভিসি তত্ত্বটি গবেষণা করার জন্য সুপারিশ করছি - উইকিপিডিয়া নিবন্ধটিতে কিছু দুর্দান্ত সংস্থান রয়েছে। আপনি যদি জাভা ওয়েব অ্যাপে এমভিসির সাথে পরীক্ষা করতে চান তবে স্ট্রিপস হ'ল একটি দুর্দান্ত লাইটওয়েট ফ্রেমওয়ার্ক যা আপনাকে আর্কিটেকচারের ওভারভিউ দিতে পারে।
মাইকেল কে


উত্তর:


7

ওয়ার ওয়ার্ডের জন্য স্ট্যান্ডার্ড স্ট্রাকচারটি হ'ল:

/META-INF
   Standard jar stuff like manifest.xml
/WEB-INF
  web.xml
  /classes
    /com...etc.
  /lib

ম্যাভেন আপনার জন্য এসআরসি / মেইন / জাভা, রিসোর্সস, ওয়েবঅ্যাপ এবং আপনার নির্ভরতা (এগুলিকে / লিবিতে স্থাপন করে) ম্যাভেন-ওয়েবঅ্যাপ-প্লাগইন ব্যবহার করে এটি তৈরি করে তবে এটি বাস্তবায়ন। গুরুত্বপূর্ণ জিনিসটি অনুধাবন করার বিষয়টি হ'ল আপনি ওয়েবে-আইএনএফ-এ যা কিছু রেখেছিলেন তা বাহ্যিকভাবে অ্যাক্সেসযোগ্য নয় , তবে ওয়ারের মূল ডিরেক্টরিতে থাকা সমস্ত কিছু সর্বজনীন।

সাধারণত আপনি মূলটিতে খুব বেশি কিছু রাখতে চান না, যেহেতু আপনি আপনার অ্যাপ্লিকেশনটি ওয়েব.এক্সএমএল দ্বারা সংজ্ঞায়িত সার্ফলেট এবং ফিল্টারগুলি ব্যবহার করে সমস্ত অ্যাক্সেস পরিচালনা করতে চান। মূলটিতে একটি সূচি। Html (বা .jsp) দেখতে পাওয়া যায় যা একটি সার্লেটে পুনঃনির্দেশ করে, উদাহরণস্বরূপ স্ট্রটস অ্যাকশন।

স্ট্রাইপস বা স্ট্রুটসের মতো সাধারণ এমভিসি বাস্তবায়নগুলি ব্যবহারকারীর সরাসরি জেএসপিগুলিতে অ্যাক্সেসের বিরুদ্ধে সুপারিশ করে, জেএসপিগুলিকে কেবল দেখার জন্য পছন্দ করে। তারা অনুরোধটি প্রক্রিয়া করার পরে জেএসপিগুলিতে আগত কন্ট্রোলার তৈরি করার পরামর্শ দেয় এবং জেএসপিগুলি কেবল ফলাফলটি সরবরাহ করে। উদাহরণস্বরূপ, কোনও ফর্ম জমা দেওয়ার /loginফলে লগইন অনুরোধটি প্রক্রিয়া করা, ব্যবহারকারীর সেশন তৈরি করে এবং ব্যবহারকারীকে হোম পেজ জেএসপি-র লগ-ইন ভিউতে পাঠিয়ে দেয় action


5

"সঠিক উপায় কি?" এর স্বাভাবিক উত্তর বা "এটি কি সঠিক উপায়?" এটা ..... এটা নির্ভর করে

আমি কেবল যা করতে পারি তা হ'ল নির্দিষ্ট ধারণাগুলির পক্ষে মতামত cons যা অনুসরণ করে তা আমার মতামত 100%। আমি কোনও নির্দিষ্ট প্রয়োজনীয়তা বা নিয়ম জানি না। আমি নিশ্চিত কেউ আমার সাথে দ্বিমত পোষণ করবে।

JSP এর

আসুন আমরা জেএসপি-কে ওয়েবে-আইএনএফ-এ রাখি কিনা সে বিষয়ে কাজ করি।

জেএসপি'র ওয়েব-আইএনএফ-এ রাখার প্রসেস:

  • আপনি কীভাবে জাসপকে কার্যকর করা হয় তা নিয়ন্ত্রণ করুন। আপনি যদি কোনও জেএসপিটিকে প্যারামিটারাইজড এবং পুনরায় ব্যবহারের যোগ্য করতে চান (যা কোনওভাবেই জেএসপি-র সাথে সত্যই শক্ত) তবে আপনি এগুলি ওয়েবে-আইএনএফ-এ রাখতে পারেন এবং প্রাক-প্রসেসিংয়ের জন্য একটি সার্লেট বা স্ট্রুটস অ্যাকশন কন্ট্রোলার বা অন্য কোনও ফ্রন্ট কন্ট্রোলার ব্যবহার করতে পারেন এবং তারপরে সঠিক পরিবেশের প্রসঙ্গে (যেমন অনুরোধের বৈশিষ্ট্য, কোনও সুরক্ষা চেক, প্যারামিটার স্যানিটেশন ইত্যাদি) জেএসপিতে নিয়ন্ত্রণ পাস করুন)
  • আপনি ওয়েবমূলে কোনও জেএসপি আপলোড করার সম্ভাবনা কমাতে এবং তারপরে ওয়েব সার্ভার হিসাবে কোড কার্যকর করতে সক্ষম হবার জন্য আপনি প্রোগ্রামিকভাবে বা ফায়ারওয়াল বা আইডিএস স্তরের ব্লক এইচটিটিপি * .jsp এর অনুরোধ করতে পারেন। তাদের একটি বিদ্যমান জেএসপিকে অতিরিক্ত লিখতে হবে। কোনও বিশাল সুরক্ষা লাভ নয়, তবে এটি আপসকে কিছুটা শক্ত করে তোলে।
  • বড় অভীষ্ট জেএসপির বিপরীতে এমভিসি, ফ্রন্ট কন্ট্রোলার, সার্লেট ফিল্টার, নির্ভরতা ইনজেকশন ইত্যাদির মতো ভাল অভ্যাস প্রয়োগ করে যা সমস্ত কাজ নিজেই করে এবং পড়তে / বজায় রাখা কঠিন difficult

জেএসপি'র ওয়েব-আইএনএফ-তে রাখার বিষয়টি:

  • আপনি পৃষ্ঠাটি সরাসরি অ্যাক্সেস করতে পারবেন না, এমনকি যদি এটি একটি সাধারণ স্ট্যান্ডলোন পৃষ্ঠাও হয় তবে এর জন্য কোনও প্রফেস প্রসেসিংয়ের প্রয়োজন হয় না। এর কারণ হ'ল / WEB-INF এর অধীন ফাইলগুলি কোনও সার্লেট পাত্র দ্বারা পরিবেশনযোগ্য নয়।

স্ট্যাটিক ফাইল

এইচটিএমএল, চিত্র, স্টাইলশিট, জাভাস্ক্রিপ্ট ইত্যাদির মতো খাঁটি স্ট্যাটিক ফাইলগুলির নিরিখে সেগুলি ওয়েবের মূলের নীচে রাখে (আপনার ক্ষেত্রে আমার_অ্যাপ) তবে নয় / ওয়েব-আইএনএফ (এটি অ্যাক্সেসযোগ্য নয়)।

সামগ্রিক বিন্যাস

সামগ্রিক ডিরেক্টরি বিন্যাস হিসাবে, এটি আপনার বিল্ড প্রক্রিয়ার উপর কিছুটা নির্ভর করে। আমি "এসসিআর" বা "উত্স" এর অধীনে সমস্ত কিছু সঞ্চয় করতে পছন্দ করি কারণ এটি এটি পরিষ্কার করে দেয় যে বিল্ডিংয়ের মাধ্যমে কোন ফাইলগুলি উত্পন্ন হয় এবং কোনটি খাঁটি উত্স ফাইল। mainআপনাকে জুনিট ক্লাসের মতো টেস্ট কোডটিকে আপনার মূল উত্স কোড থেকে আলাদা করতে দেয়, যা খুব ভাল। তবে আপনার যদি কোনও ইউনিট পরীক্ষা না করে (ওহ!), তবে এটি অর্থহীন পার্থক্য।

অন্যদিকে, আপনি যদি বিল্ড চলাকালীন ওয়েব রুটটি একেবারে হেরফের না করেন (যেমন এটি সমস্ত জেএসপি এবং স্ট্যাটিক ফাইল থাকে) তবে সম্ভবত আপনি এটি শীর্ষ স্তরে রেখেছেন, /webrootবা /deployপ্রয়োজন মতো ফাইলগুলি অনুলিপি করতে এবং যেমন .class বা .jar ফাইল। অতিরিক্ত সংগঠিত করা মানুষের (বিশেষত বিকাশকারীদের) অভ্যাস। ওভার-অর্গানাইজেশনের একটি ভাল লক্ষণটিতে কেবল একটি একক সাব-ফোল্ডার সহ প্রচুর ফোল্ডার রয়েছে।

আপনি যা দেখিয়েছেন

আপনি ইঙ্গিত করেছেন যে আপনি ম্যাভেন দ্বারা নির্ধারিত একটি সম্মেলন অনুসরণ করছেন, সুতরাং আপনি যদি ইতিমধ্যে মাভেন ব্যবহার করছেন তবে কেবল সেই বিন্যাসটি আটকে দিন। আপনার বর্ণিত লেআউটটিতে কোনও ভুল নেই।


1

ঠিক আছে, আপনার এসআরসি / প্রধান / ওয়েব অ্যাপ্লিকেশন অবশ্যই আমাকে কোনও মাভেন প্রকল্পের কথা মনে করিয়ে দেয়। যা ভাল.

মাই_এপ / জেএসপিএসের জন্য আমি যদিও নিশ্চিত নই। বিকাশকারীরা সাধারণত তাদের জেএসপি ওয়েব অ্যাপ্লিকেশন ফোল্ডারে রেখে দেয় বা আপনি যদি ওয়েব অ্যাপ্লিকেশন / জেএসপি ডিরেক্টরিতে কিছুটা ইউআরএল-ম্যাপিং করতে চান।

! সতর্কবাণী! : আপনার কখনই ওয়েব-ইনফ-এ কোনও জেএসপি ফাইল লাগানো উচিত নয়। আপনার ওয়েব-আইএনএফ আপনার ওয়েবসাইটটি কনফিগার করতে কেবল এক্সএমএল ফাইল থাকা উচিত। মনে রাখবেন, আপনার jsp একটি ওয়েবপৃষ্ঠা বা ওয়েবপৃষ্ঠার অংশ।

আপনি ফোল্ডারগুলির নাম যেমন টেম্পলেট, আংশিক ... যা আপনার পক্ষে ভাল লাগবে তা ব্যবহার করতে পারেন। অপরিচিত ব্যক্তির সন্ধান করা সহজ হওয়া উচিত। পুরো পৃষ্ঠা, টেমপ্লেট, আংশিক দর্শনগুলির মতো বিভিন্ন ধরণের সামগ্রীকে কেবল আলাদা করুন ...


এসআরসি / মেইন / ওয়েবঅ্যাপে স্ট্যান্ডার্ড ওয়ার ওয়ার্ড লেআউট ফাইল থাকে এবং জাভা ওয়েব অ্যাপ্লিকেশন সংকলনের সময় ম্যাভেন-ওয়ার-প্লাগইন দ্বারা এটি পড়ে থাকে ।
মাইকেল কে

1
ওয়েবে-আইএনএফ-তে আপনাকে জেএসপি না রাখার কোনও কারণ নেই, যতক্ষণ না আপনি নিজের ওয়েব.এক্সএমএল এ সার্ভারলেটগুলি কনফিগার করেছেন যা শেষ পর্যন্ত তাদের কাছে পাঠিয়ে দেবে। এটি একটি স্ট্রুটস অ্যাপ্লিকেশন বাস্তবায়নের মানক উপায় - সমস্ত অনুরোধগুলি স্ট্রুটস সার্লেটের মাধ্যমে যায়, যা এটিকে কোনও ক্রিয়াতে এবং তারপরে কোনও জেএসপিকে মানচিত্র করে।
মাইকেল কে

আমি এই সত্যের সাথে একমত যে কোনও জেএসপিকে সরাসরি অ্যাক্সেস করা উচিত নয় এবং এটি প্রতিরোধ করা ভাল অভ্যাস হিসাবে বিবেচনা করা উচিত। তবে তা করার অন্যান্য উপায়ও রয়েছে।
ব্রাইস রুপেন

1

আমি Brice সাথে একমত । আমি জে 2 ই ইতেও শিক্ষানবিস, তবে আমি মনে করি এটি শুরুতে আরও সহজ এবং পরিষ্কারভাবে কাজ করা আরও ভাল।

মূল ফোল্ডারটি ওয়েবেপ্প, এবং আপনার ওয়েব কাঠামোটি এই ভেবে তৈরি করা উচিত যে বেশিরভাগ পৃষ্ঠাগুলি সেখানে সন্ধান করবে। যদি তা না হয়, যখন পৃষ্ঠাগুলি তাদের মধ্যে যোগাযোগ করে আপনি সম্ভবত ত্রুটি ছাড়াই ফাইল সম্পর্ক পরিচালনা করতে পারবেন না।


1

আসলে ওয়ার অ্যাপ্লিকেশনটি তৈরি করা যেতে পারে WEB-INF/web.xml। ভিতরে কেবল জাভা ক্লাস দিয়ে ওয়ার ওয়ার্ল্ড অ্যাপ্লিকেশন তৈরি করা সম্ভব।

উত্স: একটি ওয়েব.এক্সএমএল ডিপ্লোয়মেন্ট ডেস্ক্রিপ্টর উপাদানসমূহ

জাভা ই ই টীকাগুলির সাথে, মানক ওয়েব.এক্সএমএল মোতায়েনের বিবরণী optionচ্ছিক। Http://jcp.org/en/jsr/detail?id=315 এ servlet 3.0 স্পেসিফিকেশন অনুসারে , কিছু ওয়েব উপাদান যেমন সার্লেট, ফিল্টার, শ্রোতা এবং ট্যাগ হ্যান্ডলারগুলিতে টীকা সংজ্ঞায়িত করা যেতে পারে।

সুতরাং আজকাল .warএক্সটেনশনগুলির সাথে জারের মতো দেখানোর চেয়ে ওয়ার তৈরি করা সম্ভব হয়েছে :)

আপনার প্রশ্নের উত্তর দেওয়া, ওয়ার স্ট্রাকচার আপনার প্রয়োজনীয়তার উপর নির্ভর করে।

http://en.wikipedia.org/wiki/WAR_(Sun_file_format)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.