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