English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

ملاحظات Servlet

حتى الآن، لقد تعرفت على كيفية استخدام 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

@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

@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
مرحبًا العالم!

@Webfilter

هذه الملاحظة تستخدم لتحديد ملف التصفية للسيرفرات. يتم معالجتها من قبل الحاوية عند التشغيل، وتطبيق الصفاء على نماذج 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.