Статьи

Узнайте, что нового в Servlet 3.0

С появлением спецификации JEE6 на рынке произошли некоторые важные изменения в том, как вы подходите к разработке приложений в мире корпоративных приложений. В этой статье я бы затронул несколько изменений, которые были сделаны в отношении разработки веб-приложений.

Перво-наперво, попрощайтесь с дескриптором развертывания web.xml (по крайней мере, для некоторых его частей). Ну, это не так, как будто это устарело, но с ростом использования аннотаций и их использования, новая спецификация позволяет нам определять нашу конфигурацию, используя аннотации, хотя некоторые вещи, такие как списки файлов приветствия, параметры контекста и т. Д. Все еще должны быть обработаны. внутри вашего web.xml. Аннотации, доступные для использования:

  • @WebServlet
  • @WebFilter
  • @WebInitParam
  • @WebListener
  • @MultipartConfig

В этой статье я буду проверять аннотации @WebServlet и @WebFilter. Давайте посмотрим, как мы обычно отображаем сервлет в эпоху web.xml ;

1
2
3
4
5
6
7
8
9
   <servlet>
       <servlet-name>myservlet</servlet-name>
       <servlet-class>com.example.MyServlet</servlet-class>
   </servlet>
 
<servlet-mapping>
 <servlet-name>myservlet</servlet-name>
 <url-pattern>/hello</url-pattern>
</servlet-mapping>

Благодаря спецификации Servlet 3.0 настройка сервлета теперь так же проста, как и аннотирование класса, расширяющего HttpServlet. Давайте посмотрим, как это выглядит;

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
@WebServlet('/student')
public class StudentServlet extends HttpServlet{
 
 /**
  *
  */
 private static final long serialVersionUID = 2276157893425171437L;
 
 @Override
 protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1)
   throws ServletException, IOException {
  StringBuilder response = new StringBuilder(500);
  response.append('<html><body>').append('Registered Student : ').append(arg0.getParameter('txtName')).append('</body></html>');
  arg1.getOutputStream().write(response.toString().getBytes());
  arg1.getOutputStream().flush();
  arg1.getOutputStream().close();
 }
}

Все, что вам нужно, это аннотация @WebServlet. Чтобы это работало, класс должен находиться либо в папке WEB-INF / classes, либо в jar-файле, находящемся в папке WEB-INF / lib. Далее давайте посмотрим, как мы настроим фильтр с аннотациями.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.blog.example.servlettest;
 
import java.io.IOException;
 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
 
@WebFilter('/student')
public class StudentFilter implements Filter{
 
 @Override
 public void destroy() {
 }
 
 @Override
 public void doFilter(ServletRequest arg0, ServletResponse arg1,
   FilterChain arg2) throws IOException, ServletException {
 
  if(arg0.getParameter('txtName')==null || arg0.getParameter('txtName').isEmpty())
  {
   arg1.getWriter().append('Invalid name supplied');
   arg1.getWriter().flush();
   arg1.getWriter().close();
  }
  else
  {
   arg2.doFilter(arg0, arg1);
  }
 }
 
 @Override
 public void init(FilterConfig arg0) throws ServletException {
  // TODO Auto-generated method stub
 
 }
 
}

Опять очень просто. Просто аннотация, чтобы уведомить его как фильтр. Обратите внимание, что здесь мы реализуем интерфейс Filter. Значение или urlPatterns должны быть доступны. Использование обоих является незаконным согласно спецификации.

В ближайшие недели я расскажу о других новых аннотациях, доступных в JEE6, и завершу подробным примером, используя их вместе. Если JEE6 заменит Spring Framework или нет, это не вопрос сам по себе, но я думаю, что мы увидим жесткую конкуренцию между ними. Обсуждение аннотаций и XML более или менее разрешено людьми, которые предпочитают, чтобы каждый придерживался своего мнения. Я полагаю, что немного от обоих миров было бы полезно для приложения.

Вы можете скачать и запустить образец примера, который я загрузил здесь . Если вы используете JBoss-AS7, все, что вам нужно сделать, это запустить сервер приложений в автономном режиме и выполнить пакет mvn jboss-as: deploy и указать браузеру http: // localhost: {port} /servlet3.0 .

Вот и все на сегодня. Спасибо за чтение, и если у вас есть какие-либо комментарии или предложения по улучшению, пожалуйста, оставьте комментарий.

Всем хорошего дня !!

Ссылка: узнайте о новых возможностях Servlet 3.0 от нашего партнера по JCG Динуки Арурилератне в блоге My Journey By IT .