С появлением спецификации 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 .