• 締切済み

サーブレットは広義・狭義があるのか?

「サーブレット」という言葉は、 文脈によって以下のそれぞれを指しますでしょうか? wikiなど「定義」としては一応あるわけですが、 その場の空気で、 (1)HttpServletを継承したコントローラ層部分 (2)サーバにletさせている部分(モデルとコントローラの両方) (3)サーバにletさせている部分(view(jsp)からモデルに処理をletさせているという場合に、jspがプレゼンテーション層以外も含んでしまい、サーバにletさせている部分=コントローラ+モデル+ビュー(すべて)) の何を指しているか、事実上変わるということであってますでしょうか? wikiなど「定義」としてはあるわけですが。。

  • Java
  • 回答数16
  • ありがとう数0

みんなの回答

回答No.16

>JSF(JavaServer Faces)の基本 >https://blog.pepese.com/entry/20131211/1386757110 > >>コントローラ(C) >>FacesServletというサーブレットを使う >>実装不要 >>設定は「faces-config.xml」で行う >良く分からないがFacesServlet自体はプログラマーが記述する必要は無いような感じ(プログラマーが記述してはならないと思われる)。 >プログラマーはfaces-config.xmlにザックリと言うと恐らくページの遷移ルールを記述すれば、そのとおりにFacesServletが動作するのだろうと思われる。 >つまり、ザックリと言うと恐らくfaces-config.xmlはFacesServletに指令を出す「ページ遷移ルール」言語を記述するのだろうと思われる。 つまり、FacesServletは完成されたコントローラであり、faces-config.xmlの「ページ遷移ルール」言語をInterpret(インタープリット)して、ページを遷移すると思われる。 つまり、ザックリと言うとFacesServletは「ページ遷移ルール」言語を解釈して動作するInterpreter(インタープリター)と考えれば分かりやすい。

回答No.15
回答No.14

JSF(JavaServer Faces)の基本 https://blog.pepese.com/entry/20131211/1386757110 >ビュー(V) >FaceletsとEL式で記述されたxhtmlファイル >FaceletsはJSFで使うタグライブラリ >http://docs.oracle.com/javaee/7/javaserverfaces/2.2/vdldocs/facelets/ >EL式はシャープと中括弧(#{hoge})で囲った式 EL式については下記参照。 Faceletsを書く時のEL式まとめ http://yoshiyuki9026.hatenablog.com/entry/2017/03/27/200403

回答No.13

JSF(JavaServer Faces)の基本 https://blog.pepese.com/entry/20131211/1386757110 >コントローラ(C) >FacesServletというサーブレットを使う >実装不要 >設定は「faces-config.xml」で行う 良く分からないがFacesServlet自体はプログラマーが記述する必要は無いような感じ(プログラマーが記述してはならないと思われる)。 プログラマーはfaces-config.xmlにザックリと言うと恐らくページの遷移ルールを記述すれば、そのとおりにFacesServletが動作するのだろうと思われる。 つまり、ザックリと言うと恐らくfaces-config.xmlはFacesServletに指令を出す「ページ遷移ルール」言語を記述するのだろうと思われる。

回答No.12

>>どうやらJSF(JavaServer Faces)はフレームワークで、そのフレームワーク内に「Faces Servlet、Managed Bean」の2つのJava言語仕様が有るようです。 >>つまり、サーバー・サイドJavaには、JSP(JavaServer Page)、Servletについては「Java Servlet、Faces Servlet」、(サーバー・サイドJava)Beanについては「EJB(Enterprise JavaBeans)、Managed Bean」が有ると言う事になります。 >>「ManagedBeanは次のJSFバージョンで無くなる予定だ」そうですので ご注意下さい。 >現在は、JSP(JavaServer Page)ではなくJSF(JavaServer Faces)フレームワークのFacelets(XHTML)が推奨されていると思われます。 JSF(JavaServer Faces)フレームワークを使うなら、当然(Java Servletでは無く)Faces Servletが採用されます。 JSF(JavaServer Faces)の基本 https://blog.pepese.com/entry/20131211/1386757110 >JSF2.2のMVCは以下の通り。 >モデル(M) >CDI(Context Dependency Injection)で管理されたオブジェクト >クラスに「@Named」ってアノテーションをつけるとCDIコンテナで管理される >CDIの設定は「bean.xml」で行う(無くてもアノテーションだけでなんとかなるみたい) >ビューからはEL式で呼び出せる >JSFのビューから呼び出されるコンポーネントを「JSFマネージドBean」って呼ぶみたい >ビュー(V) >FaceletsとEL式で記述されたxhtmlファイル >FaceletsはJSFで使うタグライブラリ >http://docs.oracle.com/javaee/7/javaserverfaces/2.2/vdldocs/facelets/ >EL式はシャープと中括弧(#{hoge})で囲った式 >コントローラ(C) >FacesServletというサーブレットを使う >実装不要 >設定は「faces-config.xml」で行う http://www.oracle.com/technetwork/jp/ondemand/branch/wls12c-1524119-ja.pdf >Servlet3.0 > > アノテーションによるプログラミング >  従来、web.xmlへの記述が必要だった構成情報をアノテーションで指定することが可能になりました。 > > Webフラグメント >  ライブラリの設定をweb.xmlではなくwebfragment.xmlというファイルに記載し、ライブラリ自身で保有しておくことが可能になりました。 >JSF2.0のFacelets >• JSF1.2までは、ユーザインターフェースとなるビュー層にJSPを利用するアーキテクチャでしたが、JSPはサーブレットに変換、コンパイルされて実行時にビューを生成するためオーバーヘッドが高く、効率的な仕組みとはいえませんでした。 >• JSF2.0では、Faceletsというコンポーネントを提供しています。Faceletsではビュー層にXHTMLを利用するアーキテクチャになるため、ビュー生成のオーバーヘッドは低く、かつテンプレートなどの機能を活用することが可能になっています。 >• また、faces-config.xmlで複雑な設定を行わずに、アノテーションを使いManagedBean等を定義できるようになっています ↑「ManagedBeanは次のJSFバージョンで無くなる予定だ」そうですので ご注意下さい、良く分からないが「CDI(Contexts and Dependency Injection)/EJB(Enterprise Java Beans)」で そのアノテーションが記述できると言うことだろうか? web.xmlについては下記参照(現状ではwebfragment.xmlが推奨されている)。 web.xmlの記述 https://www.javadrive.jp/servlet/context/index3.html >web.xmlファイルにはServletの呼び出し方や初期値などの設定を記載するようになっています。 faces-config.xmlについては下記参照(ザックリと言うと恐らくページの遷移ルールだろうと思われる)。 JSF 2.0 の詳細について https://yoshio3.com/2012/08/24/ >JSF の内部アーキテクチャについて紹介します。クライアント(ブラウザ)から HTTP リクエストをサーバに対して送信すると、Faces Servlet がリクエストを受信します。Faces Servlet は JSF に関する設定 (faces-config.xml の設定ファイル) を読み込み、各種機能、設定、プロパティ等を読み込みリクエストに対する処理を行います。 >JSF 2.0 から faces-config.xml ファイルは省略可能(オプション化)となり、faces-config.xml ファイルで記載していた設定項目についてはプログラム中のアノテーションで記載できるようになりました。Faces Servlet がリクエストを受信した後、適切なコンテンツに対してリクエストをリダイレクトします。

回答No.11

>どうやらJSF(JavaServer Faces)はフレームワークで、そのフレームワーク内に「Faces Servlet、Managed Bean」の2つのJava言語仕様が有るようです。 >つまり、サーバー・サイドJavaには、JSP(JavaServer Page)、Servletについては「Java Servlet、Faces Servlet」、(サーバー・サイドJava)Beanについては「EJB(Enterprise JavaBeans)、Managed Bean」が有ると言う事になります。 >「ManagedBeanは次のJSFバージョンで無くなる予定だ」そうですので ご注意下さい。 現在は、JSP(JavaServer Page)ではなくJSF(JavaServer Faces)フレームワークのFacelets(XHTML)が推奨されていると思われます。

回答No.10

どうやらJSF(JavaServer Faces)はフレームワークで、そのフレームワーク内に「Faces Servlet、Managed Bean」の2つのJava言語仕様が有るようです。 つまり、サーバー・サイドJavaには、JSP(JavaServer Page)、Servletについては「Java Servlet、Faces Servlet」、(サーバー・サイドJava)Beanについては「EJB(Enterprise JavaBeans)、Managed Bean」が有ると言う事になります。 「ManagedBeanは次のJSFバージョンで無くなる予定だ」そうですので ご注意下さい。

回答No.9

JSF 2への第一歩 https://builder.japan.zdnet.com/sp_oracle/35040792/ >Model:Managed Bean、またはCDI(Container Dependency Injection) ↑「ManagedBeanは次のJSFバージョンで無くなる予定だ」そうですので ご注意下さい、これからは「CDI(Contexts and Dependency Injection)/EJB(Enterprise Java Beans)」が主流になると思われます。 JavaEE使い方メモ(CDI) https://qiita.com/opengl-8080/items/431de9175dca33a09ba8 >CDI とは >Contexts and Dependency Injection の略。 >Java EE 7 には ver 1.1 が含まれている。 >JSR は 346。 > >DI (依存性の注入)に加えて、管理しているインスタンスのスコープの管理まで行ってくれる。 > >CDI 誕生の経緯と JBoss Seam の変遷 >CDI は、 JBoss が提供していた独自フレームワークである Seam が前身となっている。 > >Seam は日本語で「継ぎ目」という意味。 >Java EE 5 の頃の JSF と EJB をシームレスに連携させることを目的に作られたのが、この Seam というフレームワーク。 > >この Seam の中で、 DI やコンテキストの管理を担っていたコアの部分が抽出され、 JSR として標準化されたものが CDI 1.0 (JSR299)になる。 >参照実装は Weld で、 Red Hat によって開発されている。 > >JSR299 は Java EE 6 に取り込まれ、標準仕様となった。 > >コア部分が標準仕様として EE に取り込まれたあと、 Seam は CDI の拡張機能を提供するフレームワークとして開発されることになった(Seam 3)。 >しかし、同じように CDI を拡張するサードパーティのフレームワークは、他にも存在していた(Apache MyFaces CODI、CDISource)。 > >せっかく CDI という形で仕様を一本化したのに、このままだと結局また分岐が進んでいくことになる。 >このことを危惧した各フレームワークのコミュニティは、これらのフレームワークを1つにまとめ、新しく Apache DeltaSpike という Apache プロジェクトを立ち上げることにした。 > >現在は、この Apache DeltaSpike というプロジェクトで CDI の拡張機能が実装されている(例えば、 EE 6 環境でも EE 7 相当の機能 @Transactional とかが使えるようになる拡張機能とか)。 > >今後の CDI >はじめは JSF と EJB を繋ぐ目的で導入された CDI だが、 EE 7 ではそれ以外にも様々なコンポーネントを連携させる役割を担うようになっている(JAX-RS、Bean Validation などなど)。 > >今後も、 CDI を利用した連携の強化は進められていくらしい(Java Day Tokyo 2015 より)。

回答No.8

JSF 2への第一歩 https://builder.japan.zdnet.com/sp_oracle/35040792/ >JSF 1からJSF 2へのバージョンアップにおいて、どのような点が変更されたのだろうか >そもそもWebページのデザインは、Webアプリケーションのライフサイクルを通じて何度も変更されるものだ。そのため、Webアプリケーション開発者はその都度、Webデザイナーが修正したHTMLファイルに対してJSPコードを追加し、修正したWebページをプレビューする際にはいったんWebページ(JSPファイル)をコンパイルする必要があるなど、作業効率が悪いという問題を抱えていた。 >JSP 2では、この問題を「Facelets」の導入によって解決している。Faceletsとは、XHTMLをベースにしたテンプレート技術であり、これによってWebデザイナーとWebアプリケーション開発者が1つのXHTMLファイルに対し、それぞれ次のような具合に互いの作業を阻害することなくWebページの作成が行えるようになっている。 >JSF 2によるWebアプリケーションは、次に挙げる3つの要素から構成される。 > >Controller:Faces Servlet >View:XHTML(Facelets) >Model:Managed Bean、またはCDI(Container Dependency Injection) JSF 2.0 の詳細について https://yoshio3.com/2012/08/24/detail-of-jsf20/ >JSF は MVC アーキテクチャに基づく開発を行います。モデル部分を JSF の Managed Bean (もしくは CDI) を使って実装し、ビュー部分を JSF の Facelets (xhtml)、コントローラ部分を Faces Servlet で担当し実装を行っていきます。どの URL に対してリクエストが来たのか、どのビューのページで処理を行うのか等のコントロールを Faces Servlet が行いますが、この Faces Servlet は web.xml 設定ファイルに設定を行った後は、プログラマは直接この Servlet に対して操作を行う事はありません、実際にプログラマが開発を行う際には、ビューの部分とモデルの部分を中心に開発を行っていきます。

回答No.7

JavaServer Faces https://ja.wikipedia.org/wiki/JavaServer_Faces >JSF 2.2(2013年5月21日) : HTML5の対応、テンプレートを切り替えるリソース・ライブラリ・コントラクト、画面遷移を管理するFacesフロー、サーバー側でコンポーネントツリーを保持しないステートレス・モードの追加、といった変更が加えられている。 JSPはもう古い?Faceletsとは https://ti-tomo-knowledge.hatenablog.com/entry/2018/06/14/161613 >当初JSFはビューを記載する方法として、アクションベース(URLによってサーバ側の処理を決定する)で動作するJSPを使っていましたが、 >バージョン2.0以降はFaceletsが標準仕様内に組み込まれ、サーブレットと組み合わせずに動作をさせることができるようになりました。

関連するQ&A

  • HttpServletとjsp負荷はどっちが高い?

    ◆全く同じ処理をさせたとき、サーバーの負荷は変わるのでしょうか? Aの処理のあと、Bの処理をして、その後Cの処理をさせるとき、 (1)HttpServletを継承したクラスから呼ぶか? (2)jspで呼ぶか? でサーバ負荷は変わるのでしょうか? ファッション層の処理を、 案1◆コントローラ層部分が呼んで、結果を踏まえて処理制御して、、  という形にするか? ファッション層の処理を、 案2◆View層部分に呼ばせるか? で、パフォーマンス観点で、どう判断すれば良いかわからず困っています。 ※もし良ければ「構成」の観点でも、何か「こうあるべき」的なものがあると、それもご教授頂けますと幸いです。 .

  • コントローラの役割はJSPにはやらせないですよね?

    コントローラの役割を、HttpServletだけでなくjspにやらせる構成も 正しい思想の1つなのでしょうか?? 「コントローラ」は、 基本「依頼と、依頼結果をもとにした次の依頼」をする。 という風に役割を捉えていました。 例えば Aに処理依頼をしたあと、 処理が成功したから今度はBに処理依頼をして、 その結果データが 1件以上だったらCに依頼をして、 0件だったら次はDに処理を依頼する。 のような。 そして、それはHttpServletのところにやらせるものなのかと捉えています。 (※間違っているのかもですが。。) しかし、 書こうと思えば、サーブレットを撤廃して、 画面遷移は、x.jsp ⇒ y.jsp ⇒ z.jsp と、サーブレットを介さずにチェーンを作ることも可能だと思います。 (1)そういう仕組もわりと一般的なのでしょうか? (2)jspになんでもやらせすぎると、それぞれのソースが、 ◆A:プレゼンテーション層としての処理なのか?(イテレータでの描画とか) ◆B:ファンクション層の処理なのか?(例えば入力チェック処理など) ◆C:コントローラ層の処理なのか? (各結果を元に、次にどこの処理にどういうデリゲートするのか等処理) がパッと分かりにくく、カオスになりやすいと思っています。 そんな風になるくらいだったら、 コントローラはサーブレットにさせた方が良いと思うのですが、あえて全てJSPにさせるメリットもあったりするのでしょうか? ◆確認 画面遷移は、コントローラの役割だと思っていたのですが、 もしかしたらそこが間違っているのでしょうか? (WEB系の開発かどうかでも違うのかもですが。) .

  • 静的ページからのサーブレット起動について

    今、JSPとサーブレットの勉強を行っております。 サーブレット側でデータを取得して JSP側で表示を行いたいと思っているのですが フォームアクション等を行わずに、JSP⇒サーブレット⇒JSPと 実施する事は可能でしょうか? URLアクセス ⇒ JSPからサーブレットの処理を呼び出し ⇒ サーブレットから クラスを利用してデータを取得 ⇒ JSPへデータを渡して表示   というように、URLアクセスのみで一連の処理を行いたいです。 サーブレットからJSPにセッション経由でデータを渡して表示する事や JSPからクラスを利用する方法では成功していますが できるだけMVCモデルに準拠した方法で行いたく思っており かつ、コントローラとしてサーブレットを使ってみたくて このような事に挑戦しております。 可能かどうかだけでもわかると非常に有難いですので ご存知の方、どうかよろしくお願い致します。

    • ベストアンサー
    • Java
  • JSP/サーブレットについて

    JSP/サーブレットのMVCモデル風にJSP、サーブレットと、Beanを作成したばあい、サーバーに各プログラム?をどう配置し、プログラム内でのお互いの具体な指定の仕方がぴんときません。 指定の仕方とはたとえばサーブレットからJSPを呼ぶときgetServletContext().getRequestDispatcher("xxxxx/aaaaaa.jsp").forward(......); とコーディングするとおもいますが、この場合のxxxxxと実際にサーバーに配置する場合の関連です。 サーブレットは...../WEB-INF/classesに置くとか、Beanは...../WEB-INF/classes/パッケージ名に配置するのはわかります。JSPは通常どこにおくのでしょうか?たとえばC:\Tomcat\webapps\examplesなのか C:\Tomcat\webapps\examples\jspなのか? その場合プログラムないではどう指定するのが一般的なのでしょうか? 文章がわかりにくくてすいません。 開発環境はWindowsXP,Apache,Tomcatの場合です。

  • サーブレットを動かすためには?

    Tomcat5.0を使ってサーブレットを動かそうとしましたが、動きません。 JSPは問題なく動きます。 サーブレットのコンパイルは問題なくできているようです。また、ほかで動いていたものをためしに使ってみたのですが、動きません。 何か、設定をしなければならないのでしょうか。 現在は、サーブレットを動かそうとすると、 HTTPステータス 500 - type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 javax.servlet.ServletException: パス /yoko/servlet/test にサーブレットインスタンスを割り当てられません org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:388) org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:133) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 原因 java.lang.IllegalAccessException: Class org.apache.catalina.core.StandardWrapper can not access a member of class test with modifiers "" sun.reflect.Reflection.ensureMemberAccess(Reflection.java:57) java.lang.Class.newInstance0(Class.java:302) java.lang.Class.newInstance(Class.java:261) org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:369) org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:133) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) このように表示されています。 何が原因なのか、対処策など、わかることがありましたらお教えください。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • サーブレットの動作

    以下のようなサーブレットのプログラムがあります。 本サーブレットを実行すると、simpleDB.jspに飛ぶようになっています。 疑問点は以下です。 ・GetやPostを使って送られてくるデータがないのに、なぜ  本プログラムが動くのか分かりません(根本的に分かって  ないんですが)。 ・getServletContext().setAttribute("list", employeeList)で  listに設定をしてますが、listは飛ぶ先のsimpleDB.jspで定義  されています。なぜこのサーブレットで定義されていないものを、  設定することが可能なのでしょうか? 以上、ご回答頂けると幸いです。 ---------- import java.io.IOException; import文以下略 public class EmployeeServlet extends javax.servlet.http.HttpServlet { /** * 初期化メソッド * 社員一覧をapplicationスコープにセットします */ public void init() { EmployeeDAO dao = new EmployeeDAO();     //EmployeeDAOクラスは他で定義済み ArrayList<Employee> employeeList = dao.findAll(); getServletContext().setAttribute("list", employeeList); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } /** * リクエストを処理するメソッド * simpleDB.jspに移動し、社員一覧を表示します */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String nextPage = "/view/simpleDB.jsp"; ServletContext context = getServletContext(); RequestDispatcher rd = context.getRequestDispatcher(nextPage); rd.forward(request, response); } }

    • ベストアンサー
    • Java
  • JSPとサーブレットでのJARの使い方

    現在,jspやサーブレットにダウンロードしてきたjarの中のクラスを使おうとするとエラーをはいてしまいます。自分的にはエラーの原因はなんかしらの設定かソースがおかしいのではないかと考えております。なので自分がやった設定の手順とソースを説明させていただき、そこでおかしいと思った点を指摘していただきたいと思い投稿させてもらいました。 開発環境はEclipseとTomcatを合したものなのですが、 まずダウンロードしてきたJARをデスクトップに置きました。 次にEclipseでjspのプロジェクトを作成し、 プロジェクトの設定で、外部JARの追加を選択しデスクトップのJARを追加しました。 次にエラーが出るまでのソースを説明させていただくと、 まずJSPの方は <%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%> <%@ page import="java.util.Date" %> <%@ page import="com.lowagie.text.Document" %>//これがダウンロードしてきたjarのクラス この様に書いたところEclipseのエディタ上ではエラーは出ないのですが、 デバックすると、 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: というエラーが出てしまいます。なお4行目をコメントアウトすると正常に動作します。 次にサーブレットの方は import java.io.*; import com.lowagie.text.Document;//こっちはこのimport文ではエラーが出ない import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class selfreport_Pdf extends javax.servlet.http.HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Document doc = new Document();//ここでエラーがでる こちらもEclipseのエディタ上ではエラーは出ないのですが、デバックして jspからサーブレットにsubmit(?)をすると 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 javax.servlet.ServletException: サーブレットの実行により例外を投げました 原因 java.lang.NoClassDefFoundError: com/lowagie/text/Document selfinfo.selfreport_Pdf.doGet(selfreport_Pdf.java:29) javax.servlet.http.HttpServlet.service(HttpServlet.java:690) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) この様なエラーが出ます。なおこちらはDcoment doc = enw Docment() の処をコメントアウトすると、正常に動作します。またこのプログラムを 最も基本的なjavaアプリケーションに落とし込んで実行すると、正常に動作します。 また自分はjsp初心者なので、何か書き損じている点があるかもしれません。 もしそのような点があった場合はお手数ですが書いていただけると、後で補足させていただきます。 お返事おまちしております。

    • ベストアンサー
    • Java
  • サーブレットの動かし方が分からないです・・・

    フォームにユーザ名・パスワードを入れてログイン出来たら次のページに進んでメニューを表示させる、というようなWebアプリを作っています。 そのユーザ名・パスワードで先生か生徒か判断し、生徒なら授業を表示する画面、先生なら授業の表示とテストの点の追加やら修正が出来る管理者メニューに行けるといった感じにしたいです。 ログインを判断するサーブレットは出来てコンパイルも通ったのですが、web.xmlやらserver.xmlの編集がイマイチ分かりません… 環境はwindows2000、Tomcat4.1、Apache1.3で連携は出来てます。 ディレクトリは C:WebApp------login        |---add        |---update        |---WEB-INF って感じです。(自分の力ではこの書き方が限界…) loginの中にtop.htmlやらstudent.jsp、loginFailure.jsp、admin.jspをぶち込んでます。 (生徒と管理者の画面を同じとこに入れるのもマズイですかね…?) 長々とすいませんが初心者なので説明足りない部分あるかと思いますがよろしくお願いしますm(__)m

    • ベストアンサー
    • Java
  • サーブレットについて

    こんにちは。 サーブレットに質問したいことがあります。 以下のサンプルソースで、 response.setContentType("text/html;charset=Shift_JIS"); の部分があるのですが、このようにすると日本語が文字化けしてしまいます。 ちなみにresponse.setContentType("text/html); とすると、日本語も文字化けせずに正しく表示されます。 ここで質問なのですが、 サーブレットの場合はJSPと違い、charsetを指定しなくてもよろしいのでしょうか? 何か分かることがありましたらご教授御願い致します。 ---------☆サンプルソース(HelloWorldExample.java)☆---------------- import java.io.*; import java.text.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorldExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>ハローワールド</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>HelloWorld ハローワールド</h1>"); out.println("</body>"); out.println("</html>"); out.close(); } } ---------------------------------------------------

    • ベストアンサー
    • Java
  • 文字化け MySQL Java JSP サーブレット

    こんにちは。よろしくお願いします。 jdk 1.5 MySQL 5 tomcat 5 を使用しています。 MVCモデルの練習に Model(javaBeans) View(jsp) Controller(サーブレット) に分けて作成しています。 MySQLから取ってきたデータの文字化けに困っています。 全角日本語1文字が半角ハテナ1文字に変わっています。 数字(int)は文字化けせずにちゃんと表示されています。 DBから取ってきた以外の文字に文字化けはありません。 DBのテーブルの中の時点では文字化けはありません。 MySQLの環境を確認すると以下のようです。 | character_set_client | sjis | character_set_connection | sjis | character_set_database | sjis | character_set_filesystem | binary | character_set_results | sjis | character_set_server | sjis | character_set_system | utf8 何かご存知の方アドバイスよろしくお願いします。 また他に必要な情報や確認すべきことがありましたらご指摘よろしくお願いします。

    • ベストアンサー
    • MySQL