ورود

View Full Version : ساخت برنامه تحت وب با Servlet و JSP



daneshvar.hu
چهارشنبه 03 اردیبهشت 1393, 12:18 عصر
با سلام خدمت دوستان
بنده در حال طراحی یک برنامه تحت وب هستم با استفاده از Servlet و JSP هستم، در جاوا و وب تازه کار هستم، در ابتدا سعی کردم با استفاده از فریم ورک‌هایی مثل Spring MVC و یا Play Framework کار رو انجام بدم، اما چون علاقه داشتم که به عمق مسئله پی ببرم بنابر این دارم این پروژه رو با استفاده از Servlet و JSP می‌نویسم.

سؤال 1 : بهترین راه حل برای پیاده سازی کردن سطح دسترسی کاربرها چی هست ؟ استفاده از یک Filter و یا راه دیگری (اطلاعات کاربرها در دیتابیس است)
سؤال 2 : بنده سعی در استفاده از معماری MVC رو دارم بهترین ساختار چی هست ؟ استفاده از چندین سرولت و Map کردن اون روی */ و Pars کردن request.getRequestURI یا ساخت چند سرولت جداگانه برای هر قسمت
سؤال 3 : استفاده از چه تکنیک و یا تکنولوژی و Library مفیدی رو به بنده پیشنهاد می‌کنید ؟

پیشاپیش ممنون از جواب‌هاتون.

cups_of_java
جمعه 05 اردیبهشت 1393, 11:07 صبح
سؤال 1 : بهترین راه حل برای پیاده سازی کردن سطح دسترسی کاربرها چی هست ؟ استفاده از یک Filter و یا راه دیگری (اطلاعات کاربرها در دیتابیس است)
برای کنترل دسترسی مبتنی بر نقش (Role Based Access Control) توی برنامه های جاوا ای ای، می تونی از ماژول های خود سرور ها هم استفاده کنی... اونا این کار ها رو اتوماتیک برات انجام میدن. باز اگه بخوای اینکارو دستی بکنی... فیلتر ها کمکت می کنن که بتونی آدرس های خاصی رو فقط به نقش های خاصی اختصاص بدی... چیزی که ممکنه بمونه اینه که باید راهی برای کنترل دسترسی توی صفحه هات هم باشه که بتونی نمایش بخش ها یا المان هایی رو کنترل بکنی برای هر نقش...



سؤال 2 : بنده سعی در استفاده از معماری MVC رو دارم بهترین ساختار چی هست ؟ استفاده از چندین سرولت و Map کردن اون روی */ و Pars کردن request.getRequestURI یا ساخت چند سرولت جداگانه برای هر قسمت
پیاده سازی MVC به روش های خیلی متفاوتی انجام میشه... خب ساده ترین مطلبش اینه که هر اکشن رو یه سرولت جدا انجام بده... بعد سرولت ها خودشون نباید کد انجام کار ها رو داشته باشن... بلکه باید مسیر اجرا رو کنترل کنن... بعنی از کلاس های business متد هایی رو فراخوانی کنن تا کار ها انجام بشه و بعد بیان نتایج اونا رو بفرستن به صفحه هایی که لازمه، برای نمایش.... یه کار خوب اینه که همه سرولت هات از یه سرولت پدری به ارث ببرن و شما بتونی با Template Method و Dispatching جریان کد رو برقرار کنی که نهایتن همه درخواست ها از یه مسیر مشخص رد شده باشن. اینطوری کنترلت بیشتره...



سؤال 3 : استفاده از چه تکنیک و یا تکنولوژی و Library مفیدی رو به بنده پیشنهاد می‌کنید ؟
در مورد IOC و DI بگرد و کار های انجام شده رو ببین...
ضمنن به طور کلی استفاده از فریم ورک JBoss Seam که همه اینکار ها رو کرده بهت توصیه میکنم. اصن می تونی بری سورسش رو بخونی ببینی همه این کار ها رو که تو هم میخوای بکنی... چطوری انجام داده خودش... کلی می تونی ازش یاد بگیری...

daneshvar.hu
شنبه 06 اردیبهشت 1393, 10:53 صبح
ظاهراً پروژه Seam متوقف شده و هر بخشی از اون به پروژه‌ایی تبدیل شده و به ارگان‌هایی مثل آپاچی منتقل شده، از بین پروژه‌هایی Seam کدوم مد نظر جنابعالی بوده.
در ضمن بنده در حد آشنایی با Play Framework و Spring MVC کار کردم، قصد دارم با Spring کارم رو انجام بدم اما می‌خوام همینطور که پروژه رو انجام می‌دم از زیر ساخت فریم ورک‌ها و معایب و مزایایی اون‌ها هم دانشی داشته باشم.
(در ضمن این اولین پروژه بنده بر روی وب و همینطور اولین تجربه بنده بر روی جاوا هست، 1 ماهی میشه که دارم مطالعه و تحقیق، تازه چند هفته هست که با MVC آشنا شدم :بامزه:)
ممنون میشم تکنولوژی‌هایی که به روز هستند و دارای مزایایی نسبی خوبی هستند رو به بنده معرفی کنید.
مثلاً در مورد وب سرورهای (Tomcat یا Jetty) فریم ورک‌های (Spring MVC یا Play) و ...

تشکر.

cups_of_java
یک شنبه 07 اردیبهشت 1393, 12:37 عصر
درسته... از زمانی که ردهت شرکت جی باس رو خرید این اتفاق برای سیم افتاده... می تونی کد ها رو ببینی... چون فول استک بود.
در مورد فریم ورک های رایج الان بیشتر همون ۳ تای Spring MVCو Strutsو JSF هستن... که می تونی مقایسه هاشون رو توی این لینک (http://zeroturnaround.com/rebellabs/the-2014-decision-makers-guide-to-java-web-frameworks/) و این لینک (http://zeroturnaround.com/rebellabs/the-curious-coders-java-web-frameworks-comparison-spring-mvc-grails-vaadin-gwt-wicket-play-struts-and-jsf/) ببینی.
این چند تا فریم ورک هر کدوم از یه منظر به توسعه وب نگاه کردن... سعی کن این رو برای خودت جا بندازی...

توی سرور ها هم تامکت بهترین شروع هست.. چون هم قدرت منده هم سبک و ساده... توی محیط های عملیاتی سنگین جی باس سال هاست که داره استفاده میشه و خیلی سرور قوی ای و خوبیه... حتمن نگاش کن...
در مورد JSF هم اگر خواستی یاد بگیری... پیاده سازی های زیادی داره... بینشون می تونی بگردی و یه مزه ای بکنی..

daneshvar.hu
یک شنبه 14 اردیبهشت 1393, 11:06 صبح
راستش بنده هم توی دنیای جاوا و هم دنیای وب تازه کار هست، تجربه‌ی حرفه‌ایی بنده بر روی دسکتاپ و میکرو با دلفی و ++C بوده.
در مورد انتخاب فریم‌ورک سرعت و قابلیت و اینکه تا جایی ممکن دست بنده رو بسته نگه نداره خیلی مهم هست، در دو ماه گذشته کمی وقت گذاشتم روی PHP امّا فلسفه قالب و نوع کد نویسی در PHP برام آزار دهند بوده اومدم سمت جاوا، توی جاوا کمی GWT و بعد Play و Spring MVC رو با توجه به اینکه فعال هستند رو بررسی کردم، مقایسه‌های زیادی رو مطالعه کردم و هر کدوم رو خیلی ابتدایی راه‌اندازی کردم، تا در نهایت به Spring MVC تکیه کردم با توجه به اینکه شناخته شده‌تر بود نسبت به Play Framework و GWT که ساختار بسته‌ایی داشت چون من می‌خوام سمت کلاینت رو با استفاده از تکنیک‌های انتخابی خودم انجام بدم (و ازین طریق بیشتر با وب آشنا بشم، فعلا دارم روی AngularJS کار می‌کنم).

توضیح طولانی شد ببخشید.
با توجه به تجربتون بنده رو راهنمایی کنید در مورد سرور اصلی Tomcat رو استفاده کنم یا Jetty و یا WildFly آیا بهتر هست که این‌ها رو به صورت Backend سرور Nginx به کار ببرم ؟

در سمت سرور فعلا در حال راه‌انداز و به کاربستن Spring MVC و Spring Security و Hibernate هست با MariaDB آیا پیشنهاد برای بنده دارید ؟

تشکر از جواب‌هاتون و وقتی که می‌گذارید.

cups_of_java
یک شنبه 14 اردیبهشت 1393, 21:33 عصر
خب اگه AngularJS باز هستی طبیعتن GWT که اساسن ساختار و کامپوننت های کلاینت ساید خودشو رو داره بدردت نمیخوره.
اگه بگردی میبینی که با هر سه تای Spring-mvc و Play و JSF سعی کردن AngularJS رو درگیر کنن. اینا رو من پیدا کردم:
https://github.com/splendidcode/angular-spring-mvc
https://github.com/stephanrauh/AngularFaces و مقالش (http://www.beyondjava.net/blog/angularfaces-jsf-beyond-ajax/)
http://basav.github.io/blog/Angular-JS-Phonecat-example-with-Play-Framework/

حالا خودت اینا رو به جزییات هم می تونی بررسی کنی... اما در کل باید سعی کنی وب فریم ورکی رو انتخاب کنی خیلی تو کامپوننت های سرور سایدی که روی صفحه ها استفاده میکنی تورو محدود نکنه... به راحتی بتونی extend کنیش. باز باشه. و از همه مهمتر: امکان ساخت راحت Restful Web Services رو برات فراهم کنه. سمت سرور شما باید قابلیت ها رو به طور RESTFULL در اختیار امثال AngularJS قرار بده... و هر فریم ورکی این امکان رو راحت فراهم نمیکنه.

از نطر سرور من با wildfly کار نکردم... به نظرم با همون tomcat فعلن مشغول باش... اگه نیاز به Reverse Proxy داری خوب آره یه NginX هم بزار جلوی تامکت که کارت ساده باشه و نیاز نباشه tomcat رو Frontend بزاری.

امیدوارم اوقات خوشی با این پکیچ ها داشته باشی :)

daneshvar.hu
دوشنبه 15 اردیبهشت 1393, 10:14 صبح
Spring MVC در مورد کار با Restful چطور هست ؟
فریم‌ورک قدرتمند و قابل انعطافی رو واسه جایگزینی با Spring MVC (به شرط فعال بودن حتی اگر جدید باشه مثل Play Framework) می‌شناسید ؟