LINUX文字化け

このQ&Aのポイント
  • LINUXで2バイト文字が文字化けしてしまう問題の解決方法
  • LINUXで2バイト文字が正常に登録されない問題の解決方法
  • LINUXで2バイト文字の文字化けを防ぐ方法
回答を見る
  • ベストアンサー

LINUX文字化け

こんにちは。 いつも勉強させていただいています。 質問があるのでよろしくお願いします。 以下のjsp、サーブレットプログラムによって DBアカウント"DBtest"のテーブル"test"に 2バイト文字を登録すると"?"と文字化けしてしまいます。 文字化けせず登録する方法(コーディング) を教えていただけないでしょうか 非常に困っております。 ご回答よろしくお願いします。 【環境】 データベース MYSQL 4.1.1 TOMCAT 4.1.31 【手順】 1. http://ドメイン/コンテキスト/test.jspにアクセス 2. 2バイト文字をテキストボックスに入力する。 3. 送信ボタンを押下する。 確認:mysqlにログインし"select * from test"    とコマンドを入力し実行する。 結果:2バイト文字の部分が"?"となっている。 ------------test.jsp--------------- <html> <head></head> <body> <form action="test" method="post" > <input type="text" name="test"> <input type="submit" value="送信"> </form> </body> </html> --------test.java-------- import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.RequestDispatcher; import java.io.PrintWriter; import java.sql.*; import java.util.*; public class test extends HttpServlet { String testStr="";   Connection con_info = null; Statement stmt = null; ResultSet rs_master = null;   ResultSet rs_transaction = null; Exception exception; public void doPost( HttpServletRequest req, HttpServletResponse res ) throws Exception { req.setCharacterEncoding( "Shift_JIS" ); res.setContentType( "text/html; charset=Shift_JIS" ); testStr=req.getParameter("test"); try { Class.forName( "com.mysql.jdbc.Driver" ); String jdbcurl = "jdbc:mysql://localhost/DBtest"; Properties props = new Properties(); props.put("user", "root"); props.put("password", "password"); props.put("useUnicode", "true"); props.put("characterEncoding", "Shift_JIS"); con_info = DriverManager.getConnection( jdbcurl, props ); String sql="insert into test(input_str) values('"+testStr+"')"; stmt = con_info.createStatement(); int kekka = stmt.executeUpdate(sql);    //省略 } catch(Exception e) { //省略(エラー画面遷移するコード) } } } -------------------------------------------------------

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • hofchan
  • ベストアンサー率62% (17/27)
回答No.1

まず MySQL のほうのエンコードはなんでしょうか? MySQL に接続して mysql>status Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8 のような部分があるはずです、これを変更してやれば 大丈夫だと思います、設定ファイルは /etc/mysql/my.cnf 多分ここです(私の環境ではここ)無ければ適当に find /etc -name "my.cnf" あたりで見付けられます、設定ファイルのそれぞれの部分に 下のように文字コードを設定すればいいかと思います [client] default-character-set = utf8 [mysqld] default-character-set = utf8 MySQL のデフォルトではたしか latin1 というのが使われていた と思います、後 Linux であればディストリビューションも 記述していただければ助かります

19746999
質問者

お礼

hofchanさん。 大変申し訳ございません 質問締め切るのをわすれていました。。 なかなかうまくいかなかったので、 手っ取り早く、文字コードをDBに登録して データを取り出すときにShift_JISでデコードすることにしました。 もっと勉強して、普通に文字化けをなおせるよう 努力したいと思います。 以上、今後ともよろしくお願いします。

関連するQ&A

  • 画面遷移時のデータ遷移について

    文字数制限があったので短くして投稿させていただきます。 入力画面で入力した値を次の確認画面で表示したいと思っているんですがどのようにしたらよいでしょうか? web.xmlでは定義してあります。 入力前のJSPは作成しました。 入力後のJSPをどのようにしたらいいでしょうか? また入力画面のJSPは変更する必要があるでしょうか? --------------------------------------------- package monndai; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Monsyo_NewFileDate extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { RequestDispatcher reqDis = null; try { System.out.println(); //表示JSP決定 reqDis = req.getRequestDispatcher("/jsp/Monsyo_newFileDate.jsp"); //forward reqDis.forward(req,res); } catch (Exception e) { System.out.println("err"); e.printStackTrace(); req.setAttribute("exception", e); reqDis = req.getRequestDispatcher("/jsp/error.jsp"); reqDis.forward(req, res); } } } --------------------------------------------- package monndai; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Monsyo_NewFileInputData extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { RequestDispatcher reqDis = null; try { System.out.println(); //表示JSP決定 reqDis = req.getRequestDispatcher("/jsp/Monsyo_newFileInputData.jsp"); //forward reqDis.forward(req,res); } catch (Exception e) { System.out.println("err"); e.printStackTrace(); req.setAttribute("exception", e); reqDis = req.getRequestDispatcher("/jsp/error.jsp"); reqDis.forward(req, res); } } } --------------------------------------------- <%@page language="java" %> <%@page contentType="text/html;charset=EUC-JP"%> <% String returnPath0 = null; String returnPath1 = null; %> <html> <head> <script language="JavaScript"> <!--//  function checkLength(obj, maxlen) {   if(obj.value.length > maxlen) {    obj.disabled = true;    obj.value = obj.value.substring(0,maxlen);   }   obj.disabled = false;   obj.focus(); // BackSpace防止  } function sendRequest(path) { document.fr.action = path; document.fr.submit(); } --> </script> </head> <title>新問処発行</title> <body> <form name="fr" onSubmit="true" method="POST" > <div align="left"> <h3> 新問処発行</h3> <br> <日付> (XXXX/XX/XX)<br> <input type="text" align="left" maxlength="10" name=" " size="15" > <br> <タイトル>(100文字以内)<br> <textarea rows="5" cols="60" name="title" onkeyup="checkLength(this, 100);" style="ime-mode:active"></TEXTAREA> <br> <% returnPath0 = "sendRequest('/mondai/Monsyo_NewFileInputDataServlet')"; returnPath1 = "sendRequest('/mondai/Monsyo_ToppageServlet')"; %> <br> <input type="button" value="入力" onClick="<%= returnPath0 %>"/> <input type="button" value="戻る" onClick="<%= returnPath1 %>"/> </div> </form> </body> </html> ---------------------------------------------

  • カスタムタグで日本語の文字化けを解決できない

    カスタムタグでパラメータから取得した日本語の文字化けを解決できません。 実行しているのは以下のソースです。 test.java package test; public class test extends javax.servlet.jsp.tagext.TagSupport{ private static final long serialVersionUID=1L; private String testStr; public void setTestStr(String testStr){ this.testStr=testStr; } //タグの開始時に実行されるメソッド public int doStartTag() throws javax.servlet.jsp.JspException{ try{ response.setContentType("text/html;charset=UTF-8"); pageContext.getOut().write(new String(this.testStr.getBytes("8859_1"),"JISAutoDetect")); }catch(java.io.IOException e){ throw new javax.servlet.jsp.JspException(e.getMessage()); } return SKIP_BODY; } } test.jsp <%@ page contentType="text/html;charset=UTF-8"%> <%@ taglib uri="custom" prefix="custom"%> <html> <head><title>test</title></head> <body> <custom:test testStr="${param.test}" /> </body> </html> どのようにすれば解決できるでしょうか。

    • ベストアンサー
    • Java
  • Javaで、TomCatプロジェクトを使用したJDBCを使用したデータベースのアクセスについて教えてください。

    すぐに回答を! TomCatプロジェクトでDBアクセスできず困っています。 ●Javaプロジェクトの場合(成功)  ・Javaプロジェクト作成 → 新規 → クラスを作成。  ・プロジェクト選択 → メニューバー「プロジェクト」 → プロパティー   → Javaのビルド・パス → ライブラリーの追加 → ユーザーライブラリー   → 新規 → MySQLドライバを追加  ・次のソースの実行にて、JDBC Dirverの接続を確認。 [JdbcSample.java] import java.sql.*; class JdbcSample { public static void main(String[] args) { try { // 1.JDBC Driver の登録 Class.forName("com.mysql.jdbc.Driver").newInstance(); // 2.データベースへの接続 Connection con = DriverManager.getConnection( "jdbc:mysql://localhost/db1", "(ユーザー名)", "(パスワード)"); // 3.SQL ステートメント・オブジェクトの作成 Statement stmt = con.createStatement(); // 4.SQL ステートメントの発行 ResultSet rs = stmt.executeQuery("SELECT * from null_test_tbl"); // 5.結果の出力 while (rs.next()) { System.out.println(rs.getString("allow_null")); } // 6.データベースのクローズ rs.close(); stmt.close(); con.close(); } catch (SQLException e1) { System.out.println( "SQLException: " + e1.getMessage()); System.out.println( " SQLState: " + e1.getSQLState()); System.out.println( " VendorError: " + e1.getErrorCode()); } catch (Exception e2) { System.out.println( "Exception: " + e2.getMessage()); } } } ●TomCatプロジェクト作成の場合(失敗)  (1)TomCatプロジェクト作成 → 新規 → クラスを作成。  (2)プロジェクト選択 → メニューバー「プロジェクト」 → プロパティー   → Javaのビルド・パス → ライブラリーの追加 → ユーザーライブラリー   → 新規 → MySQLドライバを追加  (3)サーブレットからBeanの呼び出し。  「​http://localhost:8080/test_mvc/jdbcSample​」  (4)エラー「Exception: com.mysql.jdbc.Driver」 が発生。(ドライバーが見つかりません?) [servlet] package ne.jp; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestMvc extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { JdbcSample da = new JdbcSample(); try { da.dbAccessTest(); (※)←ここでBeanのデータベースアクセスメソッドを呼び出し } catch (Exception e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } // HTML出力の準備 response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html><body><p>こんにちわ!</p></body>"); } } [Bean] package ne.jp; import java.sql.*; class JdbcSample { //Beanコンストラクタ public JdbcSample(){ } //データベースアクセス確認 public void dbAccessTest(){ try { // 1.JDBC Driver の登録 Class.forName("com.mysql.jdbc.Driver").newInstance(); // 2.データベースへの接続 Connection con = DriverManager.getConnection( "jdbc:mysql://localhost/db1", "***", "*****"); // 3.SQL ステートメント・オブジェクトの作成 Statement stmt = con.createStatement(); // 4.SQL ステートメントの発行 ResultSet rs = stmt.executeQuery("SELECT * from null_test_tbl"); // 5.結果の出力 while (rs.next()) { System.out.println(rs.getString("allow_null")); } // 6.データベースのクローズ rs.close(); stmt.close(); con.close(); } catch (SQLException e1) { System.out.println( "SQLException: " + e1.getMessage()); System.out.println( " SQLState: " + e1.getSQLState()); System.out.println( " VendorError: " + e1.getErrorCode()); } catch (Exception e2) { System.out.println( "Exception: " + e2.getMessage()); } } }

    • ベストアンサー
    • Java
  • 画面遷移時のデータ遷移について

    Javaにも記載してしまったのですがこちらに記載すべきかと思い投稿させていただきました。 2重投稿になってしまうため削除しようとしたのですが24時間経たないと削除できませんでした。 24時間後に1つにしようと思います。 皆様のお力をお貸しください。 よろしくお願いします。 入力画面で入力した値を次の確認画面で表示したいと思っているんですがどのようにしたらよいでしょうか? web.xmlでは定義してあります。 入力前のJSPは作成しました。 入力後のJSPをどのようにしたらいいでしょうか? また入力画面のJSPは変更する必要があるでしょうか? --------------------------------------------- package monndai; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Monsyo_NewFileDate extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { RequestDispatcher reqDis = null; try { System.out.println(); //表示JSP決定 reqDis = req.getRequestDispatcher("/jsp/Monsyo_newFileDate.jsp"); //forward reqDis.forward(req,res); } catch (Exception e) { System.out.println("err"); e.printStackTrace(); req.setAttribute("exception", e); reqDis = req.getRequestDispatcher("/jsp/error.jsp"); reqDis.forward(req, res); } } } --------------------------------------------- package monndai; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Monsyo_NewFileInputData extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { RequestDispatcher reqDis = null; try { System.out.println(); //表示JSP決定 reqDis = req.getRequestDispatcher("/jsp/Monsyo_newFileInputData.jsp"); //forward reqDis.forward(req,res); } catch (Exception e) { System.out.println("err"); e.printStackTrace(); req.setAttribute("exception", e); reqDis = req.getRequestDispatcher("/jsp/error.jsp"); reqDis.forward(req, res); } } } --------------------------------------------- <%@page language="java" %> <%@page contentType="text/html;charset=EUC-JP"%> <% String returnPath0 = null; String returnPath1 = null; %> <html> <head> <script language="JavaScript"> <!--//  function checkLength(obj, maxlen) {   if(obj.value.length > maxlen) {    obj.disabled = true;    obj.value = obj.value.substring(0,maxlen);   }   obj.disabled = false;   obj.focus(); // BackSpace防止  } function sendRequest(path) { document.fr.action = path; document.fr.submit(); } --> </script> </head> <title>新問処発行</title> <body> <form name="fr" onSubmit="true" method="POST" > <div align="left"> <h3> 新問処発行</h3> <br> <日付> (XXXX/XX/XX)<br> <input type="text" align="left" maxlength="10" name=" " size="15" > <br> <タイトル>(100文字以内)<br> <textarea rows="5" cols="60" name="title" onkeyup="checkLength(this, 100);" style="ime-mode:active"></TEXTAREA> <br> <% returnPath0 = "sendRequest('/mondai/Monsyo_NewFileInputDataServlet')"; returnPath1 = "sendRequest('/mondai/Monsyo_ToppageServlet')"; %> <br> <input type="button" value="入力" onClick="<%= returnPath0 %>"/> <input type="button" value="戻る" onClick="<%= returnPath1 %>"/> </div> </form> </body> </html> ---------------------------------------------

  • サーブレットに関して

    ポスグレのデータベースをイクリプスと連携させようとしています。 現状は接続の確認として下記Connect13.javaを実行し接続確認をしています。 しかし、405が表示されてしまい接続が上手くいきません。 どこが間違っているのか教えて頂きたいです。 下記が現在のスペックです。 OS:Windows バージョン 10 Eclipse 4.0 ※ソースコードは------で分けて今回はここに記載しています。 よろしくお願いいたします。 Connect13.java package jp.co.sss.dao; import java.io.IOException; import java.sql.Connection; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jp.co.sss.dao.DBManager; @WebServlet("/connect13") public class Connect13 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection con = null; con = DBManager.getConnection(); if(con !=null){request.setAttribute("message","接続に成功しました。"); } DBManager.close(con); request.getRequestDispatcher("/jsp/sample13/pizza_result2.jsp").forward(request, response); } } ----------------------------------------------------------------------------------------------------------------------- DBManager.java package jp.co.sss.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class DBManager { public static Connection getConnection(){ String url="jdbc:postgresql://localhost:5432/postgres"; String user = "postgres"; String password = "reds1113"; try{ Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection(url,user,password);////urlの指定のみ return con; }catch (Exception e){ throw new IllegalStateException(e); } } public static void close(Connection con){ if (con !=null){ try{ con.close(); }catch (SQLException e){ e.printStackTrace(); } } } public static void close(PreparedStatement ps, Connection con){ if (ps !=null) { try { ps.close(); }catch (SQLException e){ e.printStackTrace(); } } if (con != null){ try { ps.close(); }catch (SQLException e){ e.printStackTrace(); } } } } ----------------------------------------------------------------------------------------------------------------------- pizza_result.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>シェアードピザ</title> </head> <body> <article class ="main"> <h2>${message}</h2> <form action="<%=request.getContextPath()%>/connect13"method="post"> <input type="submit" value="接続画面に戻る"/> </form> </article> </body> </html>

  • jspのエラー

    <%@ page contentType="text/html; charset=UTF-8" import="java.io.*, java.sql.*" %> <% Class.forName("com.mysql.jdbc.Driver"); Connection con=DriverManager.getConnection("jdbc:mysql://localhost/database1?user=user1&password=password1&useUnicode=true&characterEncoding=UTF-8"); Statement stmt=con.createStatement(); ResultSet result=stmt.executeQuery("select * from table1;"); %> <table> <tr> <th>country</th> <th>city</th> </tr> <% while(result.next()) { %> <tr> <td> <%= result.getString(1) %></td> <td> <%= result.getString(2) %></td> </tr> <% } stmt.close(); con.close(); %> </table> でエラーがでてデータベースに接続できません メッセージは以下の通りです org.apache.jasper.JasperException: Exception in JSP: /gomitable1.jsp:12 11: Class.forName("com.mysql.jdbc.Driver"); 12: Connection con=DriverManager.getConnection("jdbc:mysql://localhost/database1?user=user1&password=password1&useUnicode=true&characterEncoding=UTF-8"); 13: Statement stmt=con.createStatement(); 14: ResultSet result=stmt.executeQuery("select * from table1;"); 15: %> 原因 javax.servlet.ServletException: Error during query: Unexpected Exception: java.io.CharConversionException message given: null このメッセージの意味もわかりません 何が悪いのでしょうか?

    • ベストアンサー
    • Java
  • JBoss(EJB)へのアクセスがエラーになります。

    今回初めて、JBossを利用してステートレスJavaBeanをクライアントからアクセスしようとしています。クライアントでJBossサーバのアドレスを"localhost"または"127.0.0.1"とするとアクセスできますが、実際のIPアドレスを指定すると以下のエラーが出ます。 Could not obtain connection to any of these urls: 10.200.33.181:1099 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] もし、原因などが判る方がいらっしゃれば、アドバイスをお願いします。 【環境】 JBoss jboss-4.2.0.GA Java Sun JDK1.6.0 サーバOS Windows XP/Redhat Enterprise Linux4(両方とも同じ現象) 【インターフェースプログラム】 package sample; public interface Bank { String getName(); } 【Bean本体プログラム】 package sample; import javax.ejb.Local; import javax.ejb.Remote; import javax.ejb.Stateless; @Stateless @Remote @Local public class BankBean implements Bank { public String getName() { return "Hello World"; } } 【クライアントプログラム】 package sample; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import java.util.Properties; public class Client { public static void main(String[] args) { Properties props = new Properties(); props.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); props.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces"); props.put("java.naming.provider.url", "10.200.33.181:1099"); // エラー //props.put("java.naming.provider.url", "127.0.0.1:1099"); // OK // props.put ("java.naming.provider.url", "158.214.125.162:1099"); // エラー //props.put ("java.naming.provider.url", "MY-SERVER"); // エラー // props.put ("java.naming.provider.url", "localhost:1099"); // OK try { Context ctx = new InitialContext(props); Bank ejb = (Bank) ctx.lookup("BankBean/remote"); // エラー発生場所 System.out.println(ejb.getName()); } catch (NamingException e) { System.err.println(e.getMessage()); e.printStackTrace(); } } }

  • java servletからMySQLに情報を登録したいのです。

    ホームページのフォームに名前と番号の二つの列があってname[1],bango[1]...のようになっています。 それを番号があるものだけをMySQLに登録したいのですがうまくいきません。 以下に試しに作ったservletを書きます。 import java.io.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class program2 extends HttpServlet{ private static final String CONTENT_TYPE = "text/html; charset=Shift_JIS"; //private static final String CONTENT_TYPE = "text/html; charset=EUC_JP"; //private static final String CONTENT_TYPE = "text/html; charset=UTF-8"; private String server; private String db; private String user; private String pass; private String url; private Connection con = null; //グローバル変数の初期化 public void init() throws ServletException{ /*変数の初期化*/ server = "localhost"; //MySQLサーバ名またはIPアドレス db = "database"; //データベース名 user = "root"; //MySQLユーザ名 pass = "data"; //MySQLパスワード /* 必要であればオプションの指定 */ url = "jdbc:mysql://" + server + ":3306/" + db + "?useUnicode=true&characterEncoding=Shift_JIS"; //JDBC URL Shift_JIS /*DB初期処理*/ try{ /* JDBCドライバのロード */ Class.forName("com.mysql.jdbc.Driver").newInstance(); /* MySQLサーバ接続 */ con = DriverManager.getConnection(url, user, pass); } catch (SQLException e){ e.printStackTrace(); } catch (Exception e){ e.printStackTrace(); } } /*HTTP Get リクエストの処理*/ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ //エンコード request.setCharacterEncoding("Shift_JIS"); //FORMからの第一次受け渡し String name = "naoki"; String jikoku = "1200"; //for文の始まり for(int i = 1; name != null; i++){ //if文の始まり if(jikoku != null){ //FORMからの第一次受け渡し name = request.getParameter("name["+ i +"]"); jikoku = request.getParameter("jikoku["+ i +"]"); response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); Statement stmt = null; ResultSet rs = null; try{ /* 検索するSQL文を作成 */ String sql = "INSERT INTO table1 (eki,jikoku) VALUES ('"+name+"','"+jikoku+"') "; /* Statementオブジェクトの生成とクエリの実行 */ stmt = con.createStatement(); stmt.executeUpdate(sql); /* 切断 */ stmt.close(); } catch (SQLException e){ out.println("<h3>登録に失敗しました</h3>"); e.printStackTrace(); } catch (Exception e){ e.printStackTrace(); } finally{ /* finallyを使って資源の解放 */ try{ if (stmt != null){ stmt.close(); stmt = null; } } catch (Exception e){ e.printStackTrace(); } } }//if文の終了 }//for文終了 } /*サーブレットインスタンスが破棄されるときに、サーブレットコンテナに最後に1度呼び出される*/ public void destroy(){ /* 切断 */ try{ if (con != null){ con.close(); con = null; } } catch (Exception e){ e.printStackTrace(); } } }

    • ベストアンサー
    • Java
  • servletからjspへの遷移時に文字化け

    質問します。 用件:servletからjspに遷移する際に文字化けが発生します。 環境: Eclipse3.7 java6 ApacheTomcat7.0 フレームワークはなし 内容: フォワードでTest.jspに遷移します。 RequestDispatcher requestdispatcher = request.getRequestDispatcher("/Test.jsp"); requestdispatcher.forward(request, response); Test.jspに遷移すると、Test.jspの「<body>テスト</body>」がブラウザ表示時に文字化けします。 (英数字は化けません。) servletを使用せず、Test.jspに直接アクセスすると文字化けが起きません。 servletで、Test.jspで適当なhiddenを作成し、servletでgetParameterをSystem.out.printしても 文字化けなどはおきません。 また、RequestDispatcherでは文字化けが起こりますが、 response.sendRedirect("/Test.jsp"); だと文字化けがおきません。 現状、sendRedirectとsessionを使用して値の受け渡しを行っておりますが、 RequestDispatcherを使用したいので困っております。 また文字コードは javaファイルそのものはSJIS jspは<%@ page language="java" contentType="text/html; charset=SJIS" %> となっております。 わかりにくい文章で申し訳ありませんが、ご回答の程よろしくお願いします。

    • ベストアンサー
    • Java
  • サーブレットをeclipseで作りたい

    ですが //////////////////////////////////////// package member; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; ・・・・・・・・・・・・・・・・・・・・・・・ //////////////////////////////////////// をeclipseのエディタに書くと import javax.servlet.*; と import javax.servlet.http.*; の javax.servlet の下に赤の波線がつきます。 どうも javax.servlet.*; と javax.servlet.http.*; を認識できないようです。 これらを認識できるようにするにはどうしたらいいのでしょうか?

    • ベストアンサー
    • Java

専門家に質問してみよう