سطح دانش لازم برای درک مقاله: شما قبلاً کم و بیش Java Core را درک کرده اید و می خواهید به فناوری های JavaEE و برنامه نویسی وب نگاه کنید. اگر در حال حاضر در حال مطالعه جستجوی مجموعههای جاوا هستید، که موضوعات نزدیک به مقاله را پوشش میدهد، بسیار منطقی است.
من در حال حاضر از IntelliJ IDEA Enterprise Edition استفاده می کنم (این یک نسخه پیشرفته پرداخت شده از IDE است، معمولاً در توسعه حرفه ای استفاده می شود -
یادداشت ویرایشگر ). کار با پروژه های وب بسیار ساده تر از نسخه رایگان انجمن است. بنابراین، در نسخه Enterprise، به معنای واقعی کلمه با یک کلیک ماوس، پروژه مونتاژ می شود، در یک ظرف servlet ریخته می شود، سرور شروع به کار می کند و حتی صفحه ای با پروژه در حال اجرا در مرورگر باز می شود. در نسخه رایگان این ایده، بسیاری از این کارها باید به طور مستقل، به اصطلاح، «با دست» انجام شود. من از Apache Maven برای ساخت پروژه و مدیریت چرخه عمر آن استفاده می کنم. در این من فقط از بخش کوچکی از قابلیت های آن (مدیریت بسته/وابستگی) استفاده کردم. من آپاچی تامکت نسخه 9.0.0.M4 را به عنوان کانتینر سرور/سرور برنامه انتخاب کردم. من می دانم که در حال حاضر نسخه های جدیدتری وجود دارد، اما این نسخه ای است که من نصب کرده ام.
بیا شروع کنیم
ابتدا، اجازه دهید IntelliJ IDEA را باز کرده و یک پروژه خالی Maven ایجاد کنیم.
در اینجا در سمت چپ Maven را انتخاب می کنیم، بررسی کنید که JDK پروژه در بالا نشان داده شده باشد. اگر وجود ندارد، مورد مورد نیاز خود را از لیست انتخاب کنید یا روی New... کلیک کنید و مستقیماً از رایانه خود انتخاب کنید. در وسط پنجره من یک انیمیشن از بارگذاری لیست کهن الگوها دارم. ما به آنها نیاز نداریم، بنابراین بدون منتظر ماندن برای دانلود، روی Next در پایین پنجره کلیک کنید.
در این پنجره باید
GroupId و ArtifactId را مشخص کنید . GroupId به شناسه منحصر به فرد شرکتی که پروژه را تولید می کند، اشاره دارد. استفاده از نام دامنه شرکت، اما به ترتیب معکوس، معمول است. نه به معنای آینه، اما اگر برای مثال، نام دامنه یک شرکت
maven.apache.org باشد ، GroupId آن
org.apache.maven خواهد بود . یعنی ابتدا دامنه سطح اول را می نویسیم و با نقطه آن را جدا می کنیم و نام دامنه سطح دوم را می نویسیم و ... . این رویکرد عمومی پذیرفته شده است. در صورتی که پروژه ای را به تنهایی و نه به عنوان بخشی از یک شرکت "برش" می کنید، نام دامنه شخصی خود را در اینجا بنویسید (همچنین به ترتیب معکوس!). البته اگه داری :). اگر نه، ناراحت نباشید. در واقع، شما می توانید
هر چیزی را در اینجا بنویسید .
برای شرکتی با نام دامنه vasya.pupkin.org، GroupId org.pupkin.vasya خواهد بود. این رویکرد به نامها برای جداسازی پروژههایی با نام یکسان، اما که توسط شرکتهای مختلف منتشر شدهاند، مورد نیاز است. |
در این مثال، من از نام دامنه ساختگی
fatfaggy.info.javarush.ru استفاده خواهم کرد . بر این اساس،
ru.javarush.info.fatfaggy را در قسمت GroupId وارد می کنم .
ArtefactId به سادگی نام پروژه ما است. برای جدا کردن کلمات می توانید از حروف و برخی نمادها (به عنوان مثال خط تیره) استفاده کنید. "مصنوع" ما دقیقاً همانطور که در اینجا می نویسیم نامیده می شود. در این مثال، من
super-project را می نویسم . فعلاً فیلد نسخه را لمس نمی کنیم، آن را همانطور که هست می گذاریم.
خوب، پنجره استاندارد IDEA هنگام ایجاد یک پروژه جدید. بیایید طبق سنت آن را
ابر پروژه من بنامیم .
پروژه ایجاد شده است!
فایل pom.xml بلافاصله جلوی ما باز شد. این یک فایل با تنظیمات Maven است. اگر بخواهیم به Maven "بگوییم" چه کاری و چگونه انجام دهد یا از کجا چیزی تهیه کند، همه اینها را در همین فایل pom.xml شرح می دهیم. در ریشه پروژه قرار دارد. |
می بینیم که اکنون دقیقاً حاوی داده هایی است که هنگام ایجاد پروژه Maven وارد کردیم:
groupId ،
artifactId و
version (ما به دومی دست نزدیم).
ساختار پروژه ما
این پروژه Maven ساختار خاصی دارد.
همانطور که می بینیم، در اصل دروغ است:
- دایرکتوری .idea که شامل تنظیمات ایده برای پروژه فعلی است.
- دایرکتوری src که منابع خود را در آن ایجاد می کنیم.
- فایل my-super-project.iml ، یک فایل پروژه ایجاد شده توسط IDEA.
- فایل pom.xml ، همان فایل پروژه Maven که در بالا در مورد آن صحبت کردم، که اکنون آن را باز کرده ایم. اگر در جایی به pom.xml یا "pom" اشاره کنم، منظورم این فایل خاص است.
پوشه
src به نوبه خود شامل دو پوشه فرعی است:
- اصلی - برای کد ما؛
- تست - برای تست های کد ما.
هر دو
اصلی و
تست دارای یک پوشه
جاوا هستند . در نظر بگیرید که اینها همان پوشه هستند، فقط پوشه
اصلی برای کد منبع و پوشه در
تست به ترتیب برای کد تست است. ما در حال حاضر به پوشه
منابع اصلا نیازی نداریم، از آن استفاده نخواهیم کرد. اما بگذار دراز بکشد.
تبدیل شدن به پروژه وب
وقت آن رسیده است که پروژه Maven خود را به یک پروژه وب تبدیل کنیم. برای این کار روی نام پروژه در این درخت کلیک راست کرده و گزینه
Add Framework Support را انتخاب کنید...
پنجره ای باز می شود که در آن می توانیم پشتیبانی از انواع فریم ورک های مختلف پروژه خود را اضافه کنیم. اما ما فقط به یک مورد نیاز داریم:
Web Application . ما او را انتخاب می کنیم.
بررسی می کنیم که یک علامت در کنار
Web Application وجود دارد و در قسمت اصلی پنجره ذکر شده است که می خواهیم بلافاصله یک فایل
web.xml برای ما ایجاد شود (توصیه می کنم در صورت نبودن کادر را علامت بزنید) . پس از این، خواهیم دید که ساختار پروژه ما با پوشه
وب تکمیل شده است .
این ریشه پروژه وب ما در
/ است . یعنی اگر آدرس لوکال هاست را در مرورگر وارد کنیم (البته وقتی آن را راه اندازی می کنیم) دقیقاً از اینجا یعنی به ریشه پروژه وب دسترسی پیدا می کند.
اگر localhost/addUser را وارد کنیم ، پوشه
وب به دنبال منبعی به نام
addUser می گردد .
نکته اصلی این است که وقتی آن را در تامکت آپلود می کنیم، درک کنیم که پوشه وب ریشه پروژه ما است. اکنون ساختار پوشه خاصی داریم، اما در پروژه تمام شده ای که آپلود خواهیم کرد، کمی متفاوت خواهد بود و پوشه وب ریشه آنجا خواهد بود. |
در
وب یک پوشه مورد نیاز به نام WEB-INF وجود دارد که فایل
web.xml در آن قرار دارد که در مرحله قبل درخواست کردیم که آن را ایجاد کنیم. بیا بازش کنیم
همانطور که می بینید، هنوز هیچ چیز جالبی در آن وجود ندارد، فقط "کلاه". به هر حال، اگر ما درخواست نکرده بودیم که آن را ایجاد کنیم، ممکن بود مجبور بودیم آن را به صورت دستی ایجاد کنیم، یعنی کل این "هدر" را با دست تایپ کنیم، یا در موارد شدید، به دنبال نسخه آماده در اینترنت بگردیم. .
web.xml برای چیست ؟ برای نقشه برداری در اینجا ما به تامکت خواهیم گفت که کدام URL درخواست ارسال به کدام سرورلت دارد. اما این همه بعد است، در حال حاضر ما آن را خالی می گذاریم. همچنین فایلی به نام
index.jsp در پوشه
وب وجود دارد . بیا بازش کنیم
این فایلی است که به طور پیش فرض اجرا می شود. یعنی وقتی پروژه را راه اندازی می کنیم، این دقیقاً همان چیزی است که خواهیم دید. در اصل
jsp یک فایل html معمولی است، با این تفاوت که می توانید کد جاوا را در آن اجرا کنید.
کمی در مورد محتوای ایستا و پویا
محتوای ثابت محتوایی است که در طول زمان تغییر نمی کند. هر چیزی که در فایل html نوشتیم بدون تغییر نمایش داده می شود. اگر نوشته بودیم hello world پس این کتیبه به محض باز کردن صفحه و در 5 دقیقه و فردا و یک هفته و یک سال دیگر نمایش داده می شود. او تغییر نخواهد کرد اما اگر بخواهیم تاریخ فعلی را در صفحه نمایش دهیم چه؟ اگر به سادگی بنویسیم «27 اکتبر 2017»، فردا همان تاریخ را خواهیم دید و یک هفته و یک سال دیگر. اما من دوست دارم این تاریخ همچنان مرتبط باشد. اینجاست که قابلیت اجرای برخی کدها به طور مستقیم در داخل صفحه به کمک ما می آید. ما می توانیم یک شیء تاریخ را دریافت کنیم، آن را به فرم مورد نیاز خود تبدیل کرده و در صفحه نمایش دهیم. سپس هر روز، هر زمان که صفحه را باز می کنیم، تاریخ همیشه مرتبط خواهد بود. اگر فقط به محتوای ثابت نیاز داریم، یک وب سرور معمولی و فایل های html برای ما کافی است. ما به جاوا، Maven یا Tomcat نیاز نداریم. اما اگر بخواهیم از محتوای پویا استفاده کنیم، اینجاست که همه اینها به کارتان می آید. اما در حال حاضر اجازه دهید به
index.jsp خود بازگردیم . بیایید به جای هدر استاندارد، چیزی از خودمان را نشان دهیم، به عنوان مثال، «برنامه وب فوق العاده من!»، و در بدنه می نویسیم، برای مثال، «من زنده هستم!» ما تقریبا آماده راه اندازی پروژه خود هستیم! اما متأسفانه مثلث سبز معمولی برای راه اندازی برنامه فعال نیست.
بیایید روی دکمه سمت چپ آن (که روی صفحه با فلش قرمز مشخص شده است) کلیک کرده و
Edit configurations را انتخاب کنید... پنجره ای باز می شود که در آن از ما خواسته می شود روی علامت سبز سبز کلیک کنیم تا نوعی تنظیمات اضافه شود. روی آن کلیک کنید، در گوشه سمت چپ بالای پنجره قرار دارد.
مورد Tomcat Server و
Local فرعی را انتخاب کنید . پنجره ای با پارامترهای مختلف باز می شود، اما ما تقریباً از همه چیز و پارامتر پیش فرض راضی هستیم.
ما میتوانیم به نحوی پیکربندی خود را بهجای استاندارد
Unnamed (در بالای صفحه) نامگذاری کنیم. همچنین لازم است بررسی کنید که این ایده با موفقیت Tomcat را در سیستم ما پیدا کرده است (شما قبلاً آن را
دانلود و نصب کرده اید ، درست است؟). اگر نتوانستید آن را پیدا کنید (که بعید است)، روی فلش رو به پایین کلیک کنید و محل نصب آن را انتخاب کنید، یا اگر چندین نسخه از آنها دارید، نسخه دیگری را انتخاب کنید. من یکی دارم و قبلاً نصب شده است، بنابراین همه چیز در تصویر به نظر می رسد. و در پایین پنجره می بینیم که هشداری وجود دارد مبنی بر اینکه یک مصنوع واحد برای استقرار در سرور وجود ندارد. و در سمت راست این کتیبه دکمه ای وجود دارد که اصلاح این نقص را پیشنهاد می کند. روی آن کلیک می کنیم و می بینیم که خود ایده همه چیز را پیدا کرد، همه چیز را خودش ایجاد کرد، آنچه را که از دست داده بود، و تمام تنظیمات را خودش انجام داد.
می بینیم که از تب
Server به تب Deployment منتقل شده ایم ، در قسمت
Deploy at the server startup از قبل آرتیفکتی را داریم که باید مستقر شود و در زیر نشان داده شده است که این آرتیفکت قبل از استقرار ساخته خواهد شد.
درخواست کن، باشه و می بینیم که ابتدا در پایین پنجره بخشی با سرور محلی تامکت ما ظاهر شده است که آرتیفکت ما در آن قرار می گیرد. با کلیک بر روی دکمه مربوطه در سمت راست پنجره می توانید این بخش را جمع کنید.
همچنین می بینیم که مثلث سبز برای راه اندازی در حال حاضر فعال است. برای کسانی که می خواهند همه چیز را بررسی کنند، می توانند روی دکمه با تنظیمات پروژه کلیک کنند (در سمت راست دکمه های راه اندازی، با فلش قرمز مشخص شده است)، به بخش
Artifacts بروید و مطمئن شوید که آرتیفکت واقعا ایجاد شده است.
تا زمانی که دکمه Fix را فشار دادیم وجود نداشت ، اما اکنون همه چیز اوکی است. و این پیکربندی به خوبی برای ما مناسب است. به طور خلاصه، تفاوت بین
my-super-project:war و
my-super-project:war در این است که
my-super-project:war تنها یک فایل
جنگی (که فقط یک آرشیو است) ایجاد می کند و گزینه ای با
منفجر شده به سادگی یک جنگ "باز بسته" است . و این گزینه شخصاً برای من راحت تر است ، زیرا به من امکان می دهد تغییرات کوچک را به سرعت در سرور اعمال کنم. در واقع، مصنوع پروژه ما است، که قبلاً کامپایل شده است، و ساختار پوشه در آن تغییر کرده است تا بتوان آن را مستقیماً در تامکت آپلود کرد. چیزی شبیه به این خواهد بود:
خوب، اکنون همه چیز برای راه اندازی پروژه ما آماده است.
ما دکمه شروع سبز آرزو را فشار می دهیم و از نتیجه لذت می بریم! :)
GO TO FULL VERSION