SlideShare une entreprise Scribd logo
1  sur  12
Java Servlet
3.0 Overview
Servlet API version Released Platform Important Changes
1.0 1997/01 -- --
2.0 JDK 1.1
Java Servlet Development Kit 2.0の一部
としてリリース
2.1 1998/11 --
公式な初版、RequestDispatcher,
ServletContextを追加
2.2 1999/08 J2EE 1.2, J2SE 1.2 J2EEの一部となる
2.3 2001/08 J2EE 1.3, J2SE 1.2 Filter機能追加
2.4 2003/11 J2EE 1.2, J2SE 1.2 web.xml にXML Schema を利用
2.5 2005/09
JavaEE 5, JavaSE
5
JavaSE 5必須となる, annotationをサポー
ト
3.0 2009/12
JavaEE 6, JavaSE
6
動的設定, login/logoutメソッドサポート,
非同期Servlet, アノテーションSecurity,
Fileアップロード
出典 https://en.wikipedia.org/wiki/Java_Servlet#History
History
1
JCP/JSR
• Servlet2.3(JSR-053)
http://jcp.org/aboutJava/communityprocess/final/jsr053/index.html
• Servlet2.4(JSR-154 Final Release)
http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html
• Servlet2.5(JSR-154 Maintenance
Release)
http://jcp.org/aboutJava/communityprocess/mrel/jsr154/index.html
• Servlet3.0(JSR-315)
http://jcp.org/en/jsr/detail?id=315
出典 https://en.wikipedia.org/wiki/Java_Servlet
2
Servlet3.0
1. Ease of Development(EoD、開発容易性)
アノテーションでServlet開発を簡単に
2. Pluggability and Extendibility(モジュール化と拡張性)
Webアプリケーションのモジュール化と拡張性を推進
3. Asynchronous Processing(非同期処理)
Servletで非同期処理を実行可能に
4. セキュリティ
Servlet APIで認証メソッドを提供
5. Session Tracking
Sessionのコンフィグレーションを柔軟に
6. マルチパート対応
Servlet APIでファイルアップロードを提供
3
Ease of Development
• Annotation based configuration
– @WebServlet
– @WebInitParam
– @WebFilter
– @WebListener
– @MultipartConfig
– @ServletSecurity
– @HandlesTypes
4
Pluggability and Extendibility
• Support Web Fragment
web.xmlファイルの内容をweb-fragment.xmlとして分割し、jarファイル毎に設定可能。
コンテナ側でデプロイ時に統合。
web-fragment.xmlを読み込む順番を絶対的順序と相対的順序の2種類の方法
JARごとにweb-fragment.xmlが記述できるようになったので、フレームワークやリソー
スをモジュール化して、JARファイルをアプリケーションの「WEB-INF/lib」フォルダ
に単に配置するだけで、自動的にWeb設定できるようになります。
また、フレームワーク特有の設定などをアプリケーションのweb.xmlから分離できる
ため、本来のアプリケーションの設定以外によるweb.xmlの肥大化を抑制でき、非常に
すっきりします。
http://www.atmarkit.co.jp/ait/articles/1104/12/news134_2.html
5
Pluggability and Extendibility
• プログラムによるWebアプリケーションの拡張
拡張メソッドを用いてをアプリケーションの初期化中にプログラムから動的にWeb
アプリケーションの拡張が可能。
– Servletの生成、追加
– Filterの生成、追加
– Listenerの生成、追加
– URLマッピングの生成、追加
– loadOnStartup、初期パラメータの設定、非同期サポートの設定
• JSPのモジュール化
JARファイルの「META-INF/resources」配下に静的コンテンツやJSPを作成し、
Webアプリケーションの「WEB-INF/lib」にJARを配置が可能
6
Asynchronous Processing
• 非同期処理を利用することでスレッドの生成・起動をサポート
– Servlet 2.5までは、Servlet上でスレッドを生成・起動し、リクエストやレスポンスなどのコンテナ管理オブ
ジェクトにアクセスすることは非推奨
• Model
– AsyncContext#start(Runnable)
– AsyncContext#dispatch (...)
• Config
– web.xmlのタグにasync-supported属性を追加
– 「@WebServlet」「@WebFilterでasyncSupported」を指定
• リクエスト処理のFilterチェーンに含まれる全てのFilterやServletが非同期を有効にす
る必要がある。
– asyncのServletの前にFilterが存在した場合、そのFilterも「asyncSupported=true」の設定が必要
7
Security enhancements
• 認証用APIの追加
– HttpServletRequest#login(String username, String password)
– HttpServletRequest#logout()
– HttpServletRequest#authenticate(HttpServletResponse response)
• セキュリティ制約(security-constraint)を追加する3つの方法
– deployment descriptorに<security-constraint>を設定
– ServletRegistrationインターフェイスのsetServletSecurityメソッドを利用して設定
– アノテーションを利用して設定
8
Session Tracking
• JSESSION Cookieの設定による「Session Tracking」
• web.xmlまたはSessionCookieConfigのAPIで設定
9
Miscellaneous
• Support for HttpOnly cookie attribute
• Add File upload APIs
multipart/form-dataのリクエストを扱うAPIが追加
Servlet API のみでファイルのアップロード処理などの実装が可能
• Default error page
10
Reference
• Tomcat 7も対応したServlet 3.0の6つの主な変更点 - @IT
– http://www.atmarkit.co.jp/ait/articles/1104/12/news134.html
– http://www.atmarkit.co.jp/fjava/rensai4/tomcat7_02/01.html
• その他
– http://www.hitachi.co.jp/Prod/comp/soft1/manual/cosmi/v0900/03Y0500D/EY050270.HTM
– http://www.cresc.co.jp/tech/java/Servlet_Specifications/servlet_3-0_about.htm
– http://www.infoq.com/presentations/Apache-Tomcat-7
– https://www.java.net//blog/mode/servlet3.0/servlet3.0-javaone09.pdf
– https://today.java.net/pub/a/today/2008/10/14/introduction-to-servlet-3.html
– http://java.dzone.com/articles/an-overview-servlet-30
11

Contenu connexe

Similaire à Servlet3.0 overview

WebSphere Application Server V8.5.5 Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
WebSphere Application Server V8.5.5 Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51Takakiyo Tanaka
 
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 Takakiyo Tanaka
 
Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_studyBeginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_studyToshiaki Maki
 
Oracle Database Appliance 2.10 アップデート及びパッチ管理について
Oracle Database Appliance 2.10 アップデート及びパッチ管理について Oracle Database Appliance 2.10 アップデート及びパッチ管理について
Oracle Database Appliance 2.10 アップデート及びパッチ管理について オラクルエンジニア通信
 
Spring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなしSpring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなしSatoshi Kisanuki
 
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJavaTakashi Ito
 
LL2021 Java update
LL2021 Java updateLL2021 Java update
LL2021 Java updatetorutk
 
Oracle Database Appliance 12.1.2.2.0 アップデート及びパッチ管理について
Oracle Database Appliance 12.1.2.2.0 アップデート及びパッチ管理についてOracle Database Appliance 12.1.2.2.0 アップデート及びパッチ管理について
Oracle Database Appliance 12.1.2.2.0 アップデート及びパッチ管理についてオラクルエンジニア通信
 
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)Akio Katayama
 
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-publicAmazon Web Services Japan
 
福井イベント
福井イベント福井イベント
福井イベントYoshio Terada
 
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Hirofumi Iwasaki
 
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20Ryusuke Kajiyama
 
Java EE 再入門
Java EE 再入門Java EE 再入門
Java EE 再入門minazou67
 
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugJDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugYuji Kubota
 
ぽんぽこバレー勉強会 20120427
ぽんぽこバレー勉強会 20120427ぽんぽこバレー勉強会 20120427
ぽんぽこバレー勉強会 20120427Nobuhiro Sue
 
.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談Kentaro Inomata
 
Redmine 過去・2.1・未来
Redmine 過去・2.1・未来Redmine 過去・2.1・未来
Redmine 過去・2.1・未来Go Maeda
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaなおき きしだ
 

Similaire à Servlet3.0 overview (20)

WebSphere Application Server V8.5.5 Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
WebSphere Application Server V8.5.5 Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
 
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
 
Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_studyBeginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_study
 
Oracle Database Appliance 2.10 アップデート及びパッチ管理について
Oracle Database Appliance 2.10 アップデート及びパッチ管理について Oracle Database Appliance 2.10 アップデート及びパッチ管理について
Oracle Database Appliance 2.10 アップデート及びパッチ管理について
 
Spring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなしSpring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなし
 
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava
 
LL2021 Java update
LL2021 Java updateLL2021 Java update
LL2021 Java update
 
Oracle Database Appliance 12.1.2.2.0 アップデート及びパッチ管理について
Oracle Database Appliance 12.1.2.2.0 アップデート及びパッチ管理についてOracle Database Appliance 12.1.2.2.0 アップデート及びパッチ管理について
Oracle Database Appliance 12.1.2.2.0 アップデート及びパッチ管理について
 
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)
 
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
 
福井イベント
福井イベント福井イベント
福井イベント
 
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
 
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
 
Java EE 再入門
Java EE 再入門Java EE 再入門
Java EE 再入門
 
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugJDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
 
ぽんぽこバレー勉強会 20120427
ぽんぽこバレー勉強会 20120427ぽんぽこバレー勉強会 20120427
ぽんぽこバレー勉強会 20120427
 
120517 revert tomcat7
120517 revert tomcat7120517 revert tomcat7
120517 revert tomcat7
 
.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談
 
Redmine 過去・2.1・未来
Redmine 過去・2.1・未来Redmine 過去・2.1・未来
Redmine 過去・2.1・未来
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
 

Servlet3.0 overview

  • 2. Servlet API version Released Platform Important Changes 1.0 1997/01 -- -- 2.0 JDK 1.1 Java Servlet Development Kit 2.0の一部 としてリリース 2.1 1998/11 -- 公式な初版、RequestDispatcher, ServletContextを追加 2.2 1999/08 J2EE 1.2, J2SE 1.2 J2EEの一部となる 2.3 2001/08 J2EE 1.3, J2SE 1.2 Filter機能追加 2.4 2003/11 J2EE 1.2, J2SE 1.2 web.xml にXML Schema を利用 2.5 2005/09 JavaEE 5, JavaSE 5 JavaSE 5必須となる, annotationをサポー ト 3.0 2009/12 JavaEE 6, JavaSE 6 動的設定, login/logoutメソッドサポート, 非同期Servlet, アノテーションSecurity, Fileアップロード 出典 https://en.wikipedia.org/wiki/Java_Servlet#History History 1
  • 3. JCP/JSR • Servlet2.3(JSR-053) http://jcp.org/aboutJava/communityprocess/final/jsr053/index.html • Servlet2.4(JSR-154 Final Release) http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html • Servlet2.5(JSR-154 Maintenance Release) http://jcp.org/aboutJava/communityprocess/mrel/jsr154/index.html • Servlet3.0(JSR-315) http://jcp.org/en/jsr/detail?id=315 出典 https://en.wikipedia.org/wiki/Java_Servlet 2
  • 4. Servlet3.0 1. Ease of Development(EoD、開発容易性) アノテーションでServlet開発を簡単に 2. Pluggability and Extendibility(モジュール化と拡張性) Webアプリケーションのモジュール化と拡張性を推進 3. Asynchronous Processing(非同期処理) Servletで非同期処理を実行可能に 4. セキュリティ Servlet APIで認証メソッドを提供 5. Session Tracking Sessionのコンフィグレーションを柔軟に 6. マルチパート対応 Servlet APIでファイルアップロードを提供 3
  • 5. Ease of Development • Annotation based configuration – @WebServlet – @WebInitParam – @WebFilter – @WebListener – @MultipartConfig – @ServletSecurity – @HandlesTypes 4
  • 6. Pluggability and Extendibility • Support Web Fragment web.xmlファイルの内容をweb-fragment.xmlとして分割し、jarファイル毎に設定可能。 コンテナ側でデプロイ時に統合。 web-fragment.xmlを読み込む順番を絶対的順序と相対的順序の2種類の方法 JARごとにweb-fragment.xmlが記述できるようになったので、フレームワークやリソー スをモジュール化して、JARファイルをアプリケーションの「WEB-INF/lib」フォルダ に単に配置するだけで、自動的にWeb設定できるようになります。 また、フレームワーク特有の設定などをアプリケーションのweb.xmlから分離できる ため、本来のアプリケーションの設定以外によるweb.xmlの肥大化を抑制でき、非常に すっきりします。 http://www.atmarkit.co.jp/ait/articles/1104/12/news134_2.html 5
  • 7. Pluggability and Extendibility • プログラムによるWebアプリケーションの拡張 拡張メソッドを用いてをアプリケーションの初期化中にプログラムから動的にWeb アプリケーションの拡張が可能。 – Servletの生成、追加 – Filterの生成、追加 – Listenerの生成、追加 – URLマッピングの生成、追加 – loadOnStartup、初期パラメータの設定、非同期サポートの設定 • JSPのモジュール化 JARファイルの「META-INF/resources」配下に静的コンテンツやJSPを作成し、 Webアプリケーションの「WEB-INF/lib」にJARを配置が可能 6
  • 8. Asynchronous Processing • 非同期処理を利用することでスレッドの生成・起動をサポート – Servlet 2.5までは、Servlet上でスレッドを生成・起動し、リクエストやレスポンスなどのコンテナ管理オブ ジェクトにアクセスすることは非推奨 • Model – AsyncContext#start(Runnable) – AsyncContext#dispatch (...) • Config – web.xmlのタグにasync-supported属性を追加 – 「@WebServlet」「@WebFilterでasyncSupported」を指定 • リクエスト処理のFilterチェーンに含まれる全てのFilterやServletが非同期を有効にす る必要がある。 – asyncのServletの前にFilterが存在した場合、そのFilterも「asyncSupported=true」の設定が必要 7
  • 9. Security enhancements • 認証用APIの追加 – HttpServletRequest#login(String username, String password) – HttpServletRequest#logout() – HttpServletRequest#authenticate(HttpServletResponse response) • セキュリティ制約(security-constraint)を追加する3つの方法 – deployment descriptorに<security-constraint>を設定 – ServletRegistrationインターフェイスのsetServletSecurityメソッドを利用して設定 – アノテーションを利用して設定 8
  • 10. Session Tracking • JSESSION Cookieの設定による「Session Tracking」 • web.xmlまたはSessionCookieConfigのAPIで設定 9
  • 11. Miscellaneous • Support for HttpOnly cookie attribute • Add File upload APIs multipart/form-dataのリクエストを扱うAPIが追加 Servlet API のみでファイルのアップロード処理などの実装が可能 • Default error page 10
  • 12. Reference • Tomcat 7も対応したServlet 3.0の6つの主な変更点 - @IT – http://www.atmarkit.co.jp/ait/articles/1104/12/news134.html – http://www.atmarkit.co.jp/fjava/rensai4/tomcat7_02/01.html • その他 – http://www.hitachi.co.jp/Prod/comp/soft1/manual/cosmi/v0900/03Y0500D/EY050270.HTM – http://www.cresc.co.jp/tech/java/Servlet_Specifications/servlet_3-0_about.htm – http://www.infoq.com/presentations/Apache-Tomcat-7 – https://www.java.net//blog/mode/servlet3.0/servlet3.0-javaone09.pdf – https://today.java.net/pub/a/today/2008/10/14/introduction-to-servlet-3.html – http://java.dzone.com/articles/an-overview-servlet-30 11