Sự khác biệt servlet 2.5 và 3.0 trong java

Servlet 3.0 là bản cập nhật cho đặc tả Servlet 2.5 hiện có. Dưới là bài viết mô tả sử khác nhau những cập nhật mới cho servlet 3.0.

Bài viết đánh giá tổng quan về servlet mà từ kinh nghiệm  khi làm việc với java servlet tôi có được.


Annotations để khai báo servlets, Filter và t

listeners

Mục đích tạo ra các chú thích annotation này là để các nhà phát triển dễ dàng hơn trong quá trình làm việc với servlet như mapping các servlet hay các filter.

Cùng nhìn 2 ví dụ bên dưới:

Trong servlets 2.5, để khai báo một servlet có một tham số init, bạn cần thêm phần này vào web.xml:

<servlet>
    <servlet-name>myServlet</servlet-name>
    <servlet-class>my.server.side.stuff.MyAwesomeServlet</servlet-class>
    <init-param>
        <param-name>configFile</param-name>
        <param-value>config.xml</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>myServlet</servlet-name>
    <url-pattern>/path/to/my/servlet</url-pattern>
</servlet-mapping>

Trong servlet 3.0, web.xml là tùy chọn và bạn có thể sử dụng các chú thích annotation thay vì XML. Ví dụ tương tự:

@WebServlet(name="myServlet",
    urlPatterns={"/path/to/my/servlet"},
    initParams={@InitParam(name="configFile", value="config.xml")})
public class MyAwesomeServlet extends HttpServlet { ... }

Đối với các filter, bạn cần thêm phần này vào web.xml trong servlets 2.5:

<filter>
    <filter-name>myFilter</filter-name>
    <filter-class>my.server.side.stuff.MyAwesomeServlet</filter-class>
</filter>
<filter-mapping>
    <filter-name>myFilter</filter-name>
    <url-pattern>/path/to/my/filter</url-pattern>
</filter-mapping>

Đối với web servlet 3.0 được đơn giản hóa như sau:

@ServletFilter(name="myFilter", urlPatterns={"/path/to/my/filter"})
public class MyAwesomeFilter implements Filter { ... }

Đối với listener (trong trường hợp này là ServletContextListener), trong servlets 2.5:

<listener>
    <listener-class>my.server.side.stuff.MyAwesomeListener</listener-class>
</listener>

Với servlet 3.0 được đặc tả như sau:

@WebServletContextListener
public class MyAwesomeListener implements ServletContextListener { ... }

Ngoài ra, servlet 3.0 còn thêm một đặc tính mới đó là Xử lý không đồng bộ trong Servlet 3.0. Tuy nhiên, tôi chưa tiếp xúc với tình huống này nhiều trong dự án nên không nhắc đến ở đây, các bạn có thể nắm nó khi hỏi phóng vấn. Hy vọng trong một dự án nào đó có áp dụng thì tô sẽ chia sẻ bài viết khác chi tiết hơn về xư lý không đồng bộ với tính năng của servlet.

Chúc các bạn học tốt

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
x