8.1 সার্লেট টীকাগুলির ভূমিকা
সংস্করণ 7 দিয়ে শুরু করে, Tomcat সার্ভলেট API 3.0 ওয়েব সার্লেট স্পেসিফিকেশন সমর্থন করতে শুরু করেছে । বিশেষ করে, এটিতে একটি প্যাকেজ উপস্থিত হয়েছিল যার নাম javax.servlet.annotation
. এটিতে বিভিন্ন ধরণের টীকা রয়েছে যা একটি সার্লেট ক্লাস টীকা করতে ব্যবহার করা যেতে পারে। আপনি যদি একটি টীকা ব্যবহার করেন, তাহলে স্থাপনার বর্ণনাকারীর (web.xml) প্রয়োজন নেই৷
সবচেয়ে দরকারী টীকাগুলির তালিকা:
টীকা | বর্ণনা | |
---|---|---|
1 | @WebServlet |
একটি servlet ঘোষণা |
2 | @WebInitParam |
একটি প্রারম্ভিক প্যারামিটার নির্দিষ্ট করে |
3 | @WebFilter |
একটি ওয়েব ফিল্টার ঘোষণা করে |
4 | @WebListener |
ওয়েব লিসেনার ঘোষণা করে |
5 | @ServletSecurity |
আপনাকে নিরাপত্তা সেটিংস কনফিগার করার অনুমতি দেয় |
উদাহরণ:
@WebServlet( urlPatterns = {"/api/*"} )
public class Example extends HttpServlet {
protected void doGet( HttpServletRequest request, HttpServletResponse response) throws Exception {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Hello World!");
}
}
একটি সারলেট ঘোষণা করার জন্য একটি টীকা যথেষ্ট এবং এর দ্বারা প্রদত্ত URL-এ আসা সমস্ত অনুরোধগুলি পরিবেশন করার জন্য এটিকে ম্যাপ করতে /api/*
।
8.2 সার্লেট ম্যাপিং সেট আপ করা
টীকাটিতে @WebServlet
অনেক পরামিতি রয়েছে যা এটি বর্ণনা করা সার্লেটের খুব নমনীয় কনফিগারেশনের অনুমতি দেয়। আসুন প্রধানগুলি দেখে নেওয়া যাক:
বৈশিষ্ট্য | বর্ণনা | |
---|---|---|
1 | name |
সার্ভলেট অনন্য নাম (যেমন web.xml) |
2 | displayName |
মানুষের পঠনযোগ্য servlet নাম |
3 | description |
সার্ভলেট বর্ণনা |
4 | value |
ম্যাপিংয়ের জন্য ইউআরএল সেট করে |
5 | urlPatterns |
মানচিত্রের জন্য ইউআরএলগুলির একটি তালিকা নির্দিষ্ট করে (মানের পরিবর্তে ব্যবহৃত) |
6 | initParams |
আপনাকে সার্লেটের স্টার্ট প্যারামিটার সেট করতে দেয় |
7 | asyncSupported |
নির্দিষ্ট করে যে সার্লেট অ্যাসিঙ্ক্রোনাসভাবে চলতে পারে (HTTP/2) |
8 | loadOnStartup |
সার্লেট প্রারম্ভিক অগ্রাধিকার নিয়ন্ত্রণ করতে ক্রম সংখ্যা |
9 | smallIcon |
একটি ছোট সার্লেট আইকন সেট করে |
10 | largeIcon |
একটি বড় সার্লেট আইকন সেট করে |
এখানে বেশ কয়েকটি আকর্ষণীয় পয়েন্ট রয়েছে।
প্রথমত, নোট করুন যে value
এবং urlPatterns
বিনিময়যোগ্য বৈশিষ্ট্য। তারা উভয়ই আপনাকে ইউআরএলগুলির একটি তালিকা নির্দিষ্ট করার অনুমতি দেয় যা সার্লেটের ম্যাপ করা উচিত।
দ্বিতীয়ত, পরামিতি asyncSupported
নির্দেশ করে যে সার্লেট HTTP/2 প্রোটোকলের মাধ্যমে অ্যাসিঙ্ক্রোনাস অনুরোধগুলি সঠিকভাবে প্রক্রিয়া করবে কিনা।
এবং তৃতীয় গুরুত্বপূর্ণ বৈশিষ্ট্য হল initParams
, এটি আপনাকে পরামিতিগুলির একটি তালিকা সেট করতে দেয় যা ServletContext-এ স্থাপন করা হবে।
উদাহরণ:
@WebServlet(
urlPatterns = {"/sendFile", "/uploadFile"},
loadOnStartup = 1,
asyncSupported = true,
initParams = {
@WebInitParam(name = "saveDir", value = "c:/uploaded"),
@WebInitParam(name = "allowedTypes", value = "jpg,gif,png")
}
)
public class ImageUploadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
String saveDir = getInitParameter("saveDir");
String fileTypes = getInitParameter("allowedTypes");
PrintWriter writer = response.getWriter();
writer.println("saveDir = " + saveDir);
writer.println("fileTypes = " + fileTypes);
}
}
8.3 ফিল্টার ম্যাপিং সেট আপ করা
উপরে উল্লিখিত হিসাবে, ফিল্টার হল একটি ইউটিলিটি ধরনের সার্লেট, এবং সেগুলি সার্লেটের মতো কনফিগার করা হয়। এখানে একটি টীকা আছে বৈশিষ্ট্য আছে @WebFilter
:
বৈশিষ্ট্য | বর্ণনা | |
---|---|---|
1 | filterName |
অনন্য নাম ফিল্টার করুন (যেমন web.xml) |
2 | displayName |
মানুষের পঠনযোগ্য ফিল্টারের নাম |
3 | description |
ফিল্টার বিবরণ |
4 | value / urlPatterns |
মানচিত্রের জন্য url-এর একটি তালিকা সেট করে |
5 | dispatcherTypes |
DispatcherTypes এর একটি তালিকা নির্দিষ্ট করে |
6 | servletNames |
আবেদন করার জন্য সার্লেটের একটি তালিকা নির্দিষ্ট করে |
7 | initParams |
আপনাকে ফিল্টারের শুরুর পরামিতি সেট করতে দেয় |
8 | asyncSupported |
নির্দিষ্ট করে যে ফিল্টারটি অ্যাসিঙ্ক্রোনাসভাবে চলতে পারে (HTTP/2) |
9 | smallIcon |
একটি ছোট ফিল্টার আইকন সেট করে |
10 | largeIcon |
একটি বড় ফিল্টার আইকন সেট করে |
একটি ফিল্টারের একটি উদাহরণ যা নির্দিষ্ট সার্লেটের সমস্ত অনুরোধকে বাধা দেয় :
@WebFilter(servletNames = {"MyOwnServlet", "UploadServlet"})
public class MyFilter implements Filter {
// implements Filter's methods here...
}
একাধিক প্যারামিটার দেওয়া ফিল্টারের একটি উদাহরণ :
@WebFilter(
urlPatterns = "/uploadFilter",
initParams = @WebInitParam(name = "fileTypes", value = "doc;xls;zip;txt;jpg;png;gif")
)
public class UploadFilter implements Filter {
// implements Filter's methods here...
}
RequestDispatcher এর জন্য প্রদত্ত ধরণের ফিল্টারের একটি উদাহরণ :
@WebFilter(
urlPatterns = "/admin",
dispatcherTypes = {DispatcherType.REQUEST, DispatcherType.FORWARD}
)
public class MyFilter implements Filter {
// implements Filter's methods here...
}
আপনি নিম্নলিখিত লেকচারগুলিতে ফিল্টার এবং সার্লেটের উদ্দেশ্য সম্পর্কে আরও শিখবেন।
GO TO FULL VERSION