English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
حتى الآن، لقد تعرفت على كيفية استخدام Servlet لتثبيت التطبيق على خادم الويب باستخدام ملف التثبيت (web.xml). أدخل حزمة جديدة تسمى javax.servlet.annotation في API Servlet 3.0. يقدم أنواع التعليقات التي يمكن استخدامها لتمرير Servlet classes. إذا تم استخدام التعليقات، لا تحتاج إلى ملف تعريف التطبيق (web.xml). لكن يجب عليك استخدام Tomcat 7 أو إصدار أعلى.
يمكن للتعليقات استبدال التكوين XML المتكافئ في ملف تعريف التطبيق Web (web.xml) مثل إعلان servlet وإعادة توجيه servlet. سيقوم حاوي servlet بمعالجة الفئات المزودة بالتعليقات عند التثبيت.
نوع التعليقات المدرجة في Servlet 3.0 هو
Sr.No. | التعليقات والوصف |
---|---|
1 | @WebServlet تقرير servlet |
2 | @WebInitParam تحديد معلمات التحفيز |
3 | @WebFilter تقرير ممر servlet |
4 | @WebListener تقرير WebListener |
5 | @HandlesTypes تقرير أنواع الفئات التي يمكن معالجتها من قبل ServletContainerInitializer. |
6 | @HttpConstraint هذا التعليق في تعليق ServletSecurity يستخدم لتمثيل القيود الأمنية التي تطبق على جميع طرق HTTP، لا يوجد عنصر HttpMethodConstraint في تعليق ServletSecurity لمثل هذه الطرق. |
7 | @HttpMethodConstraint هذا التعليق في تعليق ServletSecurity يستخدم لتمثيل القيود الأمنية الخاصة ببروتوكول HTTP المحدد. |
8 | @MultipartConfig 可以在 Servlet 类上指定的注解,表示 Servlet 的实例期望符合多部分/表单数据 MIME 类型的请求。 |
9 | @ServletSecurity 此注解用于Servlet实现类,以指定Servlet容器对HTTP协议消息实施的安全约束。 |
这里我们已经详细讨论了一些注解。
@WebServlet 用于声明带有容器的Servlet的配置。下表包含用于WebServlet注解的属性列表。
Sr.No. | خصائص ووصف |
---|---|
1 | String name Servlet 的名称 |
2 | String[] value URL模式数组 |
3 | String[] urlPatterns 应用此筛选器的 URL 模式数组 |
4 | Int loadOnStartup 整数值给出启动排序提示 |
5 | WebInitParam[] initParams Servlet初始化数组参数 |
6 | Boolean asyncSupported Servlet支持的异步操作 |
7 | String smallIcon Servlet 的小图标,如果有的话 |
8 | String largeIcon Servlet 的大图标,如果有的话 |
9 | String description Servlet 的描述,如果存在的话 |
10 | String displayName 显示此Servlet的名称(如果存在) |
必须在注解的value或urlPattern属性中声明至少一个URL模式,但不能同时声明这两个属性。
当URL模式是唯一要设置的属性时,建议使用value属性,否则应使用urlPattern属性。
下面的示例描述了如何使用@WebServlet注解。它是一个显示文本Hello servlet的简单servlet。
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebInitParam; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(value = "/Simple") public class Simple extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.print("<html><body>"); out.print("<h3>Hello Servlet</h3>"); out.print("</body></html>"); {} {}
استخدم الطريقة العادية لتعديل Simple.java، وضع ملفات الصفحة في <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes.
الآن، جرب تشغيل servlet عبر http://localhost:8080/Simple. سترى الناتج التالي على صفحة الويب.
Hello servlet
@WebInitParam 用于为Servlet或过滤器指定初始化参数。它在WebFilter或webevlet注解中使用。下表包含用于WebInitParam注解的属性列表。
Sr.No. | خصائص ووصف |
---|---|
1 | String name 初始化参数的名称 |
2 | String value 初始化参数的值 |
3 | String description 初始化参数的描述 |
@WebInitParam 用于为Servlet或过滤器指定初始化参数。它在WebFilter或webevlet注解中使用。下表包含用于WebInitParam注解的属性列表。
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebInitParam; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(value = "/Simple", initParams = { @WebInitParam(name = "foo", value = "Hello "), @WebInitParam(name = "bar", value = " World!") } public class Simple extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.print("<html><body>"); out.print("<h3>Hello Servlet</h3>"); out.println(getInitParameter("foo")); out.println(getInitParameter("bar")); out.print("</body></html>"); {} {}
استخدم الطريقة العادية لتعديل Simple.java، وضع ملفات الصفحة في <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes.
الآن، جرب تشغيل servlet عبر http://localhost:8080/Simple. سترى الناتج التالي على صفحة الويب.
مرحبًا Servlet مرحبًا العالم!
هذه الملاحظة تستخدم لتحديد ملف التصفية للسيرفرات. يتم معالجتها من قبل الحاوية عند التشغيل، وتطبيق الصفاء على نماذج URL المحددة، السيرفرات و أنواع المعالجين.
@WebFilter الملاحظة تعريف ملف التصفية في تطبيق الويب. هذه الملاحظة تُحدد في الكائن و تحتوي على بيانات الوصف الخاصة بالصفاء المُعلن. يجب على الصفاء المُعين المزود بالملحظة أن يحتوي على نموذج URL على الأقل. يُظهر الجدول أدناه خصائص ملاحظة WebFilter.
Sr.No. | خصائص ووصف |
---|---|
1 | String filterName 筛选器的名称 |
2 | String[] urlPatterns تقدم قيم ملف التصفية أو مجموعة urlPatterns |
3 | DispatcherType[] dispatcherTypes 指定筛选器应用的调度器(请求/响应)的类型 |
4 | String[] servletNames 提供 servlet 名称的数组 |
5 | String displayName 筛选器的名称 |
6 | String description 过滤器说明 |
7 | WebInitParam[] initParams 此筛选器的初始化数组参数 |
8 | Boolean asyncSupported 筛选器支持的异步操作 |
9 | String smallIcon 筛选器的小图标(如果存在) |
10 | String largeIcon 筛选器的大图标(如果存在) |
下面的示例介绍如何使用@WebFilter注解。它是一个简单的LogFilter,在控制台上显示Init param test param的值和当前时间戳。这意味着,过滤器的工作方式类似于请求和响应之间的接口层。这里我们使用“/*”表示urlPattern。这意味着,此过滤器适用于所有servlet。
import java.io.IOException; import javax.servlet.annotation.WebFilter; import javax.servlet.annotation.WebInitParam; import javax.servlet.*; import java.util.*; //实现筛选器类 @WebFilter(urlPatterns = {"/*"}, initParams = { @WebInitParam(name = "test-param", value = "Initialization Paramter")}) public class LogFilter implements Filter { public void init(FilterConfig config) throws ServletException { // 获取初始化参数 String testParam = config.getInitParameter("test-param"); //打印init参数 System.out.println("Test Param: " + testParam); {} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //يُسجل ضرب الوقت الحالي. System.out.println("Time " + new Date().toString()); //يُنقل الطلب إلى سلسلة المرشحات chain.doFilter(request,response); {} public void destroy() { /* يُدعى قبل إزالة مثال المرشح من خدمات محرك الويب*/ {} {}
استخدم الطريقة العادية لتعديل Simple.java، وضع ملفات الصفحة في <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes.
الآن، جرب تشغيل servlet عبر http://localhost:8080/Simple. سترى الناتج التالي على صفحة الويب.
مرحبًا Servlet مرحبًا العالم!
الآن، افتح محرر servlet. حيث ستجد المعلمة التحضيرية testparam وضرب الوقت الحالي مع رسائل إشعار servlet.