本サイトはまだテスト中ですが、もしよかったら【こちら】からユーザー登録をしてください。「通知メール設定」機能を使えば、返信があったときに自動的にメールで通知されます。
旧掲示板(http://jamy.to/jamyto2/bbs/)も使えます。
旧掲示板(http://jamy.to/jamyto2/bbs/)も使えます。
投稿:竹形 誠司[takegata]/2006年 09月 24日 05時 10分
/更新:2006年 10月 05日 15時 02分
お願いします
by 慎太郎[muko]
アプリケーション構築入門の方なのですが、実際に作成したアプリケーションをネットワーク経由で他のパソコンからアクセスしようと試みているのですが、つながりません。
この場合、考えられる原因としてTomcatの設定があるのですが、著書同封のCDからインストールして以来、設定に関しては何も触ってないのですが、新たに設定しなおす必要はあるのでしょうか?
抽象的な質問で申し訳ありませんが、よろしくお願いします。
この場合、考えられる原因としてTomcatの設定があるのですが、著書同封のCDからインストールして以来、設定に関しては何も触ってないのですが、新たに設定しなおす必要はあるのでしょうか?
抽象的な質問で申し訳ありませんが、よろしくお願いします。
投稿:慎太郎[muko]/2007年 03月 24日 15時 33分
> 実際に作成したアプリケーションをネットワーク経由で他のパソコンから
> アクセスしようと試みているのですが、つながりません。
サーバー側のファイアウォールが効いている可能性があります。
コントロールパネルの「ファイアウォール」から、ポート 80(開発用に 8080 とかを使っているならそれに合わせて)が開いているかどうか確認してみてください。
> アクセスしようと試みているのですが、つながりません。
サーバー側のファイアウォールが効いている可能性があります。
コントロールパネルの「ファイアウォール」から、ポート 80(開発用に 8080 とかを使っているならそれに合わせて)が開いているかどうか確認してみてください。
投稿:KILROY[KILROY]/2007年 03月 25日 09時 46分
/更新:2007年 03月 25日 09時 46分
シリーズ第一巻、『―サーバーアプリケーション開発入門』以来の読者です。
『―Webアプリケーション構築入門』は『―サーバーアプリケーション開発入門』の増補改訂版、という位置づけだと思うのですが、前著にあった試作版ショッピングサイトがなくなってしまったのが少々残念です。
再公開の予定はありませんか?と訊こうかと思ったのですが、ありませんよね、たぶん。
と、いう訳で、現在改訂版を作成中です。改訂の内容としては、
一般公開については竹形さんの許可を受けてから、の予定。
以上、ご報告まで。
『―Webアプリケーション構築入門』は『―サーバーアプリケーション開発入門』の増補改訂版、という位置づけだと思うのですが、前著にあった試作版ショッピングサイトがなくなってしまったのが少々残念です。
再公開の予定はありませんか?と訊こうかと思ったのですが、ありませんよね、たぶん。
と、いう訳で、現在改訂版を作成中です。改訂の内容としては、
eclipse 上での Web アプリケーション開発に対応する形でディレクトリの整理。
JSP ファイルのインデントや Java ファイルのスタイルを整理して読みやすくした。
Java 5.0 対応。列挙(enum)と総称(ジェネリックだ(-_-!))を使用して可読性・保守性・安全性を強化。
他のアプリケーションと共通する部分を、jinx(汎用ユーティリティ)、spinstar(Webアプリケーション専用のユーティティ)の二つのパッケージに分離。
JSP 2.0、JSTL を用いてJSP のコードからスクリプトレット(Java のコード)を大幅に追放。テストが容易になり、安全性も向上しました。
といったところです。一般公開については竹形さんの許可を受けてから、の予定。
以上、ご報告まで。
投稿:KILROY[KILROY]/2007年 03月 27日 12時 38分
/更新:2007年 03月 27日 12時 38分
具体的にはコードはこんな感じ。
<?xml version="1.0" encoding="Shift_JIS" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<%@ page language="java" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="Windows-31J" %>
<%@ taglib prefix="core" uri="http://java.sun.com/jsp/jstl/core" %>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>ラトルズショッピング</title>
</head>
<body>
<div style="text-align: center;">
<h2>ラトルズショップへようこそ。</h2>
<br />
<hr />
注目の商品
<table>
<tr>
<td><img src="<%=request.getContextPath()%>/shop/images/kemushi.jpg" /></td>
<td><img src="<%=request.getContextPath()%>/shop/images/kezawa.jpg" /></td>
<td><img src="<%=request.getContextPath()%>/shop/images/shinikake.jpg" /></td>
</tr>
</table>
<hr />
<a href="<%=request.getContextPath()%>/shop/shopping/find_product_form.jsp">商品を検索する</a>
<br /><br />
<table>
<tr>
<td>
<div style="font-size: smaller;">
ショッピング中にこの画面が表示された場合は、セッションがタイムアウトになっています。<br />
タイムアウトの際に、バスケットは空になりました。<br />
ログインしていた方は、自動ログオフしましたので、もう一度ログインしてください。
</div>
</td>
</tr>
</table>
</div>
</body>
</html>
エンコードを Unicode にしたのは、SJIS だと「光る毛沢東」はおkだけど「光るケ小平」は NG になっちゃう(「ケ」がたしか MS 固有)とか、そういった理由。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<%@ page language="java" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="Windows-31J" %>
<%@ taglib prefix="core" uri="http://java.sun.com/jsp/jstl/core" %>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>ラトルズショッピング</title>
</head>
<body>
<div style="text-align: center;">
<h2>ラトルズショップへようこそ。</h2>
<br />
<hr />
注目の商品
<table>
<tr>
<td><img src="<%=request.getContextPath()%>/shop/images/kemushi.jpg" /></td>
<td><img src="<%=request.getContextPath()%>/shop/images/kezawa.jpg" /></td>
<td><img src="<%=request.getContextPath()%>/shop/images/shinikake.jpg" /></td>
</tr>
</table>
<hr />
<a href="<%=request.getContextPath()%>/shop/shopping/find_product_form.jsp">商品を検索する</a>
<br /><br />
<table>
<tr>
<td>
<div style="font-size: smaller;">
ショッピング中にこの画面が表示された場合は、セッションがタイムアウトになっています。<br />
タイムアウトの際に、バスケットは空になりました。<br />
ログインしていた方は、自動ログオフしましたので、もう一度ログインしてください。
</div>
</td>
</tr>
</table>
</div>
</body>
</html>
投稿:KILROY[KILROY]/2007年 03月 27日 22時 08分
/更新:2007年 03月 27日 22時 09分
「Java+MySQL+Tomcatで始めるWebアプリケーション」
のp.122〜p.124で、質問があります。
my.iniを修正し保存しようとすると、
「\my.iniへのアクセスは拒否されました。」
というエラーが出て、保存できませんでした。
読み取り専用にもなっていませんし、
管理者権限も、Administratorで実行しました。
再起動をしても同じ状況です。
OSは、Windows Vista SP1です。
どうしたらよいか分かりません。
よろしくお願いします。
のp.122〜p.124で、質問があります。
my.iniを修正し保存しようとすると、
「\my.iniへのアクセスは拒否されました。」
というエラーが出て、保存できませんでした。
読み取り専用にもなっていませんし、
管理者権限も、Administratorで実行しました。
再起動をしても同じ状況です。
OSは、Windows Vista SP1です。
どうしたらよいか分かりません。
よろしくお願いします。
投稿:JB[TTBASSTT]/2008年 11月 05日 17時 46分
/更新:2008年 11月 05日 17時 46分
Vistaは守備範囲外なので環境を持っていないのですが(そろそろそうも言ってられないんですけど)Googleで検索したら↓のような情報が見つかりました。
http://oshiete1.goo.ne.jp/qa3124340.html
このあたりは関係ないでしょうか。
http://oshiete1.goo.ne.jp/qa3124340.html
このあたりは関係ないでしょうか。
投稿:竹形 誠司[takegata]/2008年 11月 06日 00時 35分
/更新:2008年 11月 06日 00時 35分
ご回答ありがとうございました。
ご指摘のページを拝見しましたが、
所有権もAdministratorsで、
セキュリティーのアクセス許可もすべてチェック済みでした。
従って解決はできませんでした。
申し訳ありません。
大変ご迷惑をおかけいたしますが、
もし他に解決策がお分かりになられました時は、
もう一度ご回答をよろしくお願いいたします。
ご指摘のページを拝見しましたが、
所有権もAdministratorsで、
セキュリティーのアクセス許可もすべてチェック済みでした。
従って解決はできませんでした。
申し訳ありません。
大変ご迷惑をおかけいたしますが、
もし他に解決策がお分かりになられました時は、
もう一度ご回答をよろしくお願いいたします。
投稿:JB[TTBASSTT]/2008年 11月 06日 12時 46分
/更新:2008年 11月 06日 12時 46分
あぁ、そうですか(すみませんねぇ、役に立たなくて)。
↓のページにはVistaにMySQLをインストールした人の話が載っていますが、
こちらは読まれましたか?
http://dream.mods.jp/news/mysql.html
↓のページにはVistaにMySQLをインストールした人の話が載っていますが、
こちらは読まれましたか?
http://dream.mods.jp/news/mysql.html
投稿:竹形 誠司[takegata]/2008年 11月 06日 13時 16分
/更新:2008年 11月 06日 13時 16分
ありがとうございました。
MySQLをアンインストールしてもう一度再インストールしたり、
最新版と思われる"mysql-5.0.67-win32"をダウンロードしまして、
再インストールしたり、いろいろ試してみましたが、
やはり、"my.ini"のファイルは書き換え保存ができませんでした。
今回は、ご迷惑をおかけいたしまして申し訳ありませんでした。
MySQLをアンインストールしてもう一度再インストールしたり、
最新版と思われる"mysql-5.0.67-win32"をダウンロードしまして、
再インストールしたり、いろいろ試してみましたが、
やはり、"my.ini"のファイルは書き換え保存ができませんでした。
今回は、ご迷惑をおかけいたしまして申し訳ありませんでした。
投稿:JB[TTBASSTT]/2008年 11月 08日 11時 50分
/更新:2008年 11月 08日 11時 50分
「Java+MySQL+Tomcatで始めるWebアプリケーション構築入門」について
開発経験のない初心者です。
この本をみながら、以下の技術でWebアプリの構築は可能でしょうか?
Windowsベースの解説なのかLinuxベースの解説なのかググってもわかりませんでした。
OS:SentOS5.3
Webアプリ言語:Java
開発環境:NetBeans
DB:PostgresSQL
GTDによるプロジェクト/タスク管理Webシステムを作る予定です。
CentOSで、Apachi⇔Tomcat⇔JDBC⇔PostgresSQL、このような接続構成にしたいのですが、参考になる本を探し、竹形様の本を見つけました。
専門学校の卒業課題として取り組んでいます。
よろしくお願いします。
開発経験のない初心者です。
この本をみながら、以下の技術でWebアプリの構築は可能でしょうか?
Windowsベースの解説なのかLinuxベースの解説なのかググってもわかりませんでした。
OS:SentOS5.3
Webアプリ言語:Java
開発環境:NetBeans
DB:PostgresSQL
GTDによるプロジェクト/タスク管理Webシステムを作る予定です。
CentOSで、Apachi⇔Tomcat⇔JDBC⇔PostgresSQL、このような接続構成にしたいのですが、参考になる本を探し、竹形様の本を見つけました。
専門学校の卒業課題として取り組んでいます。
よろしくお願いします。
投稿:saki[saki]/2010年 02月 11日 16時 33分
/更新:2010年 02月 11日 16時 34分
竹形です。こんばんは。
私の本ではApacheとTomcatの連動やPostgresSQLについては扱っていません。
これらのシステムの設定については他の方の著書やウェブなどの資料を参照
してください。
私の本ではApacheとTomcatの連動やPostgresSQLについては扱っていません。
これらのシステムの設定については他の方の著書やウェブなどの資料を参照
してください。
投稿:竹形 誠司[takegata]/2010年 02月 11日 20時 58分
/更新:2010年 02月 11日 20時 58分
早速のご返事ありがとうございます。
そうですか。
Tomcat,Postgresqlの各専門書をあたってみます。
java、JPS/サーブレット、CentOS、NetBeansなどは勉強中でしたが、Webサーバーの構築に手間取ってました。目的のものを作る為に、必要な技術を一冊にまとめた便利な書籍はないものですね。。。
そうですか。
Tomcat,Postgresqlの各専門書をあたってみます。
java、JPS/サーブレット、CentOS、NetBeansなどは勉強中でしたが、Webサーバーの構築に手間取ってました。目的のものを作る為に、必要な技術を一冊にまとめた便利な書籍はないものですね。。。
投稿:saki[saki]/2010年 02月 11日 23時 20分
/更新:2010年 02月 11日 23時 20分
「JSP帳票アプリケーション実践開発入門」のCD-ROM
pdfbuilder.jarの中にPdfExceptionが含まれていません。
サンプルソース実行でエラーが出ます。
理由を教えてください。
よろしくお願いします。
pdfbuilder.jarの中にPdfExceptionが含まれていません。
サンプルソース実行でエラーが出ます。
理由を教えてください。
よろしくお願いします。
投稿:吉沢和雄[yoshi]/2012年 06月 17日 10時 55分
/更新:2012年 06月 17日 10時 55分
え、そうですか。
すみません、急いで調べます。
すみません、急いで調べます。
投稿:竹形 誠司[takegata]/2012年 06月 17日 11時 02分
/更新:2012年 06月 17日 11時 02分
CD-ROMのINSTALL/PdfBuilderフォルダに古いjarファイルを収録してしまったようです、すみません。
Sample/JSP/WEB-INF/lib/フォルダのpdfbuilder.jarをコピーして使ってください。
ご報告ありがとうございました。
後ほど正誤表を作成します。
Sample/JSP/WEB-INF/lib/フォルダのpdfbuilder.jarをコピーして使ってください。
ご報告ありがとうございました。
後ほど正誤表を作成します。
投稿:竹形 誠司[takegata]/2012年 06月 17日 11時 15分
/更新:2012年 06月 17日 11時 22分
pdfbuilderの使用方法について
<document>
<table cols="2" widths="30mm 50mm">
<tr>
<td>氏名</td>
<td id="field1"></td>
</tr>
</table>
</document>
いつもお世話になっております。
上記、レイアウトxmlに
下記の様に「様」を書いても出力されません。
どうしてでしょうか?
このように記述できると、非常にありがたいのですが。
ご回答のほどよろしくお願いいたします。
<document>
<table cols="2" widths="30mm 50mm">
<tr>
<td>氏名</td>
<td id="field1">様</td>
</tr>
</table>
</document>
<document>
<table cols="2" widths="30mm 50mm">
<tr>
<td>氏名</td>
<td id="field1"></td>
</tr>
</table>
</document>
いつもお世話になっております。
上記、レイアウトxmlに
下記の様に「様」を書いても出力されません。
どうしてでしょうか?
このように記述できると、非常にありがたいのですが。
ご回答のほどよろしくお願いいたします。
<document>
<table cols="2" widths="30mm 50mm">
<tr>
<td>氏名</td>
<td id="field1">様</td>
</tr>
</table>
</document>
投稿:吉沢和雄[yoshi]/2012年 06月 30日 16時 32分
/更新:2012年 06月 30日 16時 33分
あー、それは id="field1" の欄がプログラムで上書きされてしまうからですね。
プログラム側で名前に"様"を追加してからid="field1"にセットするというのはどうでしょうか。
プログラム側で名前に"様"を追加してからid="field1"にセットするというのはどうでしょうか。
投稿:竹形 誠司[takegata]/2012年 06月 30日 16時 38分
/更新:2012年 06月 30日 16時 38分
少し古い本なのですが
【Java+MySQL+Tomcatで始めるサーバーアプリケーション入門】のP417で
upload_image.jsp プログラムの下記部位で productDataとありますが
これは親ウィンドウのフォームの名前とかではないようですし、他プログラム
でもこのproductDataという文字がみつかりません。
これは、何でしょうか? ここの部分はどのように扱ったら良いでしょうか?
また、プログラム先頭の<jsp:useBean id="product" の id と関係あるのでしょうか?
※現在、このプログラムを応用して別のデータベースで別のidを割り当てて
いますが、ここの部分だけうまく行きません。
例えばここのid が test だった場合 下記 productData のところを
testDataにしても、productDataにしてもうまくいきません。
プログラムがこの部分で止まっているようで、uploadのボタンで画像を
指定して送信ボタンを押すと、通常ウィンドウが閉じて親ウィンドウの
データが更新されますが、ウィンドウが閉じないです。
<BODY onLoad="
opener.document.productData.imagefilename.value='<%=strFilename%>';
opener.document.productData.reload.value='true';
opener.document.productData.submit();
window.close();">
【Java+MySQL+Tomcatで始めるサーバーアプリケーション入門】のP417で
upload_image.jsp プログラムの下記部位で productDataとありますが
これは親ウィンドウのフォームの名前とかではないようですし、他プログラム
でもこのproductDataという文字がみつかりません。
これは、何でしょうか? ここの部分はどのように扱ったら良いでしょうか?
また、プログラム先頭の<jsp:useBean id="product" の id と関係あるのでしょうか?
※現在、このプログラムを応用して別のデータベースで別のidを割り当てて
いますが、ここの部分だけうまく行きません。
例えばここのid が test だった場合 下記 productData のところを
testDataにしても、productDataにしてもうまくいきません。
プログラムがこの部分で止まっているようで、uploadのボタンで画像を
指定して送信ボタンを押すと、通常ウィンドウが閉じて親ウィンドウの
データが更新されますが、ウィンドウが閉じないです。
<BODY onLoad="
opener.document.productData.imagefilename.value='<%=strFilename%>';
opener.document.productData.reload.value='true';
opener.document.productData.submit();
window.close();">
投稿:hide[nisimura]/2014年 10月 29日 02時 45分
/更新:2014年 10月 29日 02時 49分
記述のミスです、すみません
正誤表 http://www.orquesta.org/takegata/Article/hoi.txt
の以下の部分を参照してください。
------------------------------------------------------------
No.47
P410 <FORM>
edit_product.jspの<FORM>の NAME="productData"が抜けている。
(CD-ROMのコードには入っています)
------------------------------------------------------------
よろしくお願いします。
正誤表 http://www.orquesta.org/takegata/Article/hoi.txt
の以下の部分を参照してください。
------------------------------------------------------------
No.47
P410 <FORM>
edit_product.jspの<FORM>の NAME="productData"が抜けている。
(CD-ROMのコードには入っています)
------------------------------------------------------------
よろしくお願いします。
投稿:竹形 誠司[takegata]/2014年 10月 29日 03時 35分
記述のミスです、すみません
正誤表 http://www.orquesta.org/takegata/Article/hoi.txt
の以下の部分を参照してください。
------------------------------------------------------------
No.47
P410 <FORM>
edit_product.jspの<FORM>の NAME="productData"が抜けている。
(CD-ROMのコードには入っています)
------------------------------------------------------------
よろしくお願いします。
正誤表 http://www.orquesta.org/takegata/Article/hoi.txt
の以下の部分を参照してください。
------------------------------------------------------------
No.47
P410 <FORM>
edit_product.jspの<FORM>の NAME="productData"が抜けている。
(CD-ROMのコードには入っています)
------------------------------------------------------------
よろしくお願いします。
投稿:竹形 誠司[takegata]/2014年 10月 29日 03時 36分
/更新:2014年 10月 29日 03時 36分
お忙しいところご回答ありがとうございました。
おかげさまで、問題が解決して、うまく行きました。
おかげさまで、問題が解決して、うまく行きました。
投稿:hide[nisimura]/2014年 10月 29日 09時 15分
/更新:2014年 10月 29日 09時 15分
初めまして。
java+mysql+tomcatで作る掲示板とブログ blog/L/send_trackback_ping_3.jspで
HttpClientが4.3.6だとHttpClient、PostMethod、
Documentの各クラスがdeprecatedされておりうまく動きません。
この部分のサンプルがまだあまり出ておらず、javadocを読んで
試しているのですが、上手く動作しません。
もし解決方法がお分かりでしたら、ご教授下さい。
java+mysql+tomcatで作る掲示板とブログ blog/L/send_trackback_ping_3.jspで
HttpClientが4.3.6だとHttpClient、PostMethod、
Documentの各クラスがdeprecatedされておりうまく動きません。
この部分のサンプルがまだあまり出ておらず、javadocを読んで
試しているのですが、上手く動作しません。
もし解決方法がお分かりでしたら、ご教授下さい。
投稿:くろの[Chrono]/2015年 01月 15日 23時 29分
/更新:2015年 01月 15日 23時 30分
竹形です、どうも。
ちょっと事務所のある東京を離れているので、すぐに動くコードを作ることはできませんすみません。
HttpClient 4.3.6をダウンロードすると、その中にexampleというフォルダがあり、client/QuickStart.java が参考になると思います。
ちょっと事務所のある東京を離れているので、すぐに動くコードを作ることはできませんすみません。
HttpClient 4.3.6をダウンロードすると、その中にexampleというフォルダがあり、client/QuickStart.java が参考になると思います。
/*
* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.http.examples.client;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
public class QuickStart {
public static void main(String[] args) throws Exception {
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpGet httpGet = new HttpGet("http://targethost/homepage");
CloseableHttpResponse response1 = httpclient.execute(httpGet);
// The underlying HTTP connection is still held by the response object
// to allow the response content to be streamed directly from the network socket.
// In order to ensure correct deallocation of system resources
// the user MUST call CloseableHttpResponse#close() from a finally clause.
// Please note that if response content is not fully consumed the underlying
// connection cannot be safely re-used and will be shut down and discarded
// by the connection manager.
try {
System.out.println(response1.getStatusLine());
HttpEntity entity1 = response1.getEntity();
// do something useful with the response body
// and ensure it is fully consumed
EntityUtils.consume(entity1);
} finally {
response1.close();
}
HttpPost httpPost = new HttpPost("http://targethost/login");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("username", "vip"));
nvps.add(new BasicNameValuePair("password", "secret"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
CloseableHttpResponse response2 = httpclient.execute(httpPost);
try {
System.out.println(response2.getStatusLine());
HttpEntity entity2 = response2.getEntity();
// do something useful with the response body
// and ensure it is fully consumed
EntityUtils.consume(entity2);
} finally {
response2.close();
}
} finally {
httpclient.close();
}
}
}
分からなければまた聞いてください。* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.http.examples.client;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
public class QuickStart {
public static void main(String[] args) throws Exception {
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpGet httpGet = new HttpGet("http://targethost/homepage");
CloseableHttpResponse response1 = httpclient.execute(httpGet);
// The underlying HTTP connection is still held by the response object
// to allow the response content to be streamed directly from the network socket.
// In order to ensure correct deallocation of system resources
// the user MUST call CloseableHttpResponse#close() from a finally clause.
// Please note that if response content is not fully consumed the underlying
// connection cannot be safely re-used and will be shut down and discarded
// by the connection manager.
try {
System.out.println(response1.getStatusLine());
HttpEntity entity1 = response1.getEntity();
// do something useful with the response body
// and ensure it is fully consumed
EntityUtils.consume(entity1);
} finally {
response1.close();
}
HttpPost httpPost = new HttpPost("http://targethost/login");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("username", "vip"));
nvps.add(new BasicNameValuePair("password", "secret"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
CloseableHttpResponse response2 = httpclient.execute(httpPost);
try {
System.out.println(response2.getStatusLine());
HttpEntity entity2 = response2.getEntity();
// do something useful with the response body
// and ensure it is fully consumed
EntityUtils.consume(entity2);
} finally {
response2.close();
}
} finally {
httpclient.close();
}
}
}
投稿:竹形 誠司[takegata]/2015年 01月 16日 06時 39分
/更新:2015年 01月 16日 06時 40分
竹形様
回答ありがとうございます。
そのサンプルコードも既に見ているのですが、
1)Postのためのパラメタのサンプルがない
2)戻ってくるxmlの解析方法も現在は使用不可(Documentクラスもdeprecated)
のため苦心しています。
この辺りを教えて頂けないでしょうか。
回答ありがとうございます。
そのサンプルコードも既に見ているのですが、
1)Postのためのパラメタのサンプルがない
2)戻ってくるxmlの解析方法も現在は使用不可(Documentクラスもdeprecated)
のため苦心しています。
この辺りを教えて頂けないでしょうか。
投稿:くろの[Chrono]/2015年 01月 17日 04時 09分
/更新:2015年 01月 17日 04時 09分
postは上記のコードで
HttpPost httpPost = new HttpPost("http://targethost/login");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("username", "vip"));
nvps.add(new BasicNameValuePair("password", "secret"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
CloseableHttpResponse response2=httpclient.execute(httpPost);
try {
System.out.println(response2.getStatusLine());
HttpEntity entity2 = response2.getEntity();
// do something useful with the response body
// and ensure it is fully consumed
EntityUtils.consume(entity2);
} finally {
response2.close();
}
の部分ですね。
DocumentはHttpClientではなくorg.w3c.domですね。↓のリンクを見るとJava 8 でも deprecatedにはなっていないように思いますが、どうでしょう。
https://docs.oracle.com/javase/jp/8/api/org/w3c/dom/Document.html
HttpPost httpPost = new HttpPost("http://targethost/login");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("username", "vip"));
nvps.add(new BasicNameValuePair("password", "secret"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
CloseableHttpResponse response2=httpclient.execute(httpPost);
try {
System.out.println(response2.getStatusLine());
HttpEntity entity2 = response2.getEntity();
// do something useful with the response body
// and ensure it is fully consumed
EntityUtils.consume(entity2);
} finally {
response2.close();
}
nvps.add(new BasicNameValuePair("username", "vip"));
nvps.add(new BasicNameValuePair("password", "secret"));
のようにすればパラメータを指定できると思います。nvps.add(new BasicNameValuePair("password", "secret"));
DocumentはHttpClientではなくorg.w3c.domですね。↓のリンクを見るとJava 8 でも deprecatedにはなっていないように思いますが、どうでしょう。
https://docs.oracle.com/javase/jp/8/api/org/w3c/dom/Document.html
投稿:竹形 誠司[takegata]/2015年 01月 17日 14時 34分
/更新:2015年 01月 17日 14時 34分
竹形様
回答ありがとうございます。
著書のサンプルを以下のに組みなおしました。
これでよろしいでしょうか?
CloseableHttpClient httpClient = HttpClients.createDefault();
の部分で
HTTPステータス 500
javax.servlet.ServletException: java.lang.NoClassDefFoundError:
が発生します。
回答ありがとうございます。
著書のサンプルを以下のに組みなおしました。
これでよろしいでしょうか?
---------------originai source-------------------
HttpClient client = new HttpClient();
PostMethod pm = new PostMethod(strTrackbackUrl);
pm.setParameter("title",strTitle);
pm.setParameter("url", strUrl);
pm.setParameter("blog_name", strBlogName);
pm.setParameter("excerpt", strExcerpt);
int statusCode = client.executeMethod(pm);
---------------------end-------------------------
HttpClient client = new HttpClient();
PostMethod pm = new PostMethod(strTrackbackUrl);
pm.setParameter("title",strTitle);
pm.setParameter("url", strUrl);
pm.setParameter("blog_name", strBlogName);
pm.setParameter("excerpt", strExcerpt);
int statusCode = client.executeMethod(pm);
---------------------end-------------------------
---------------adjusted source-------------------
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(strTrackbackUrl);
List<NameValuePair> formParams = new ArrayList<NameValuePair>();
formParams.add(new BasicNameValuePair("title", strTitle));
formParams.add(new BasicNameValuePair("url", strUrl));
formParams.add(new BasicNameValuePair("blog_name", strBlogName));
formParams.add(new BasicNameValuePair("excerpt", strExcerpt));
httpPost.setEntity(new UrlEncodedFormEntity(formParams));
CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
try {
HttpEntity entity2 = httpResponse.getEntity();
EntityUtils.consume(entity2);
} finally {
httpResponse.close();
}
---------------------end-------------------------
ですが、このコードで実行すると、CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(strTrackbackUrl);
List<NameValuePair> formParams = new ArrayList<NameValuePair>();
formParams.add(new BasicNameValuePair("title", strTitle));
formParams.add(new BasicNameValuePair("url", strUrl));
formParams.add(new BasicNameValuePair("blog_name", strBlogName));
formParams.add(new BasicNameValuePair("excerpt", strExcerpt));
httpPost.setEntity(new UrlEncodedFormEntity(formParams));
CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
try {
HttpEntity entity2 = httpResponse.getEntity();
EntityUtils.consume(entity2);
} finally {
httpResponse.close();
}
---------------------end-------------------------
CloseableHttpClient httpClient = HttpClients.createDefault();
の部分で
HTTPステータス 500
javax.servlet.ServletException: java.lang.NoClassDefFoundError:
が発生します。
投稿:くろの[Chrono]/2015年 01月 17日 18時 54分
/更新:2015年 01月 18日 12時 20分
import文が足りてないのではないでしょうか。
org.apache.http.client.methods.CloseableHttpResponse
はインポートしてありますか?
org.apache.http.client.methods.CloseableHttpResponse
はインポートしてありますか?
投稿:竹形 誠司[takegata]/2015年 01月 17日 21時 37分
/更新:2015年 01月 17日 21時 37分
竹形様
回答ありがとうございます。
以下を確認すると
http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/client/CloseableHttpClient.html
Class CloseableHttpClient
org.apache.http.impl.client.CloseableHttpClient
となっておりますので、以下をインポートしております。
<%@ page import="org.apache.http.impl.client.*"%>
HTTP ステータス 500のエラー内容ですが不足しておりました。
以下のようになっております。
javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class org.apache.http.conn.ssl.SSLConnectionSocketFactory
また本に記載がなかったのですが、トラックバックのテストできる
URLがありましたら、ご教授お願いします。
---------------追記---------------------
jarファイルが不足しているとのため以下を追加しました。
log4j-1.2-api-2.1.jar
log4j-api-2.1.jar
log4j-core-2.1.jar
commons-logging-1.2.jar
現在のエラーは以下となっています。
HTTP ステータス 500のエラー
java.io.IOException: java.io.IOException: Attempted read on closed stream.
回答ありがとうございます。
以下を確認すると
http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/client/CloseableHttpClient.html
Class CloseableHttpClient
org.apache.http.impl.client.CloseableHttpClient
となっておりますので、以下をインポートしております。
<%@ page import="org.apache.http.impl.client.*"%>
HTTP ステータス 500のエラー内容ですが不足しておりました。
以下のようになっております。
javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class org.apache.http.conn.ssl.SSLConnectionSocketFactory
また本に記載がなかったのですが、トラックバックのテストできる
URLがありましたら、ご教授お願いします。
---------------追記---------------------
jarファイルが不足しているとのため以下を追加しました。
log4j-1.2-api-2.1.jar
log4j-api-2.1.jar
log4j-core-2.1.jar
commons-logging-1.2.jar
現在のエラーは以下となっています。
HTTP ステータス 500のエラー
java.io.IOException: java.io.IOException: Attempted read on closed stream.
投稿:くろの[Chrono]/2015年 01月 17日 21時 56分
/更新:2015年 01月 17日 22時 38分
あー、なるほど、jarが足りなかったんですね。
で、次のエラーは「既にクローズされたストリームから読み出そうとしている」
という意味ですね。
ストリームからデータを読み出す場所は
で、次のエラーは「既にクローズされたストリームから読み出そうとしている」
という意味ですね。
ストリームからデータを読み出す場所は
HttpEntity entity2 = httpResponse.getEntity();
と EntityUtils.consume(entity2);
の間です。このあたりの処理はどのようにされていますか?
投稿:竹形 誠司[takegata]/2015年 01月 17日 22時 52分
/更新:2015年 01月 17日 22時 52分
竹形様
回答ありがとうございます。
-------------------------追記-----------------------
Entityを閉じる前にStreamを読むようにしました。
HTTPステータスコード500
javax.servlet.ServletException: org.xml.sax.SAXParseExceptionpublicId: -//W3C//DTD HTML 4.01 Transitional//EN; systemId: http://www.w3.org/TR/html4/loose.dtd; lineNumber: 31; columnNumber: 3; エンティティ"HTML.Version"の宣言は'>'で終了する必要があります。
エラーの個所は
Document doc = db.parse(httpResponse.getEntity().getContent());
となっています。
回答ありがとうございます。
try {
HttpEntity entity2 = httpResponse.getEntity();
EntityUtils.consume(entity2);
} finally {
httpResponse.close();
}
としております。HttpEntity entity2 = httpResponse.getEntity();
EntityUtils.consume(entity2);
} finally {
httpResponse.close();
}
-------------------------追記-----------------------
Entityを閉じる前にStreamを読むようにしました。
try {
HttpEntity entity = httpResponse.getEntity();
int responseStatus = httpResponse.getStatusLine().getStatusCode();
if (responseStatus != HttpStatus.SC_OK) {
sbHtml.append("送信に失敗しました:"+ responseStatus);
}
DocumentBuilder db
= DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = db.parse(httpResponse.getEntity().getContent());
NodeList nlError = doc.getElementsByTagName("error");
Element elError = (Element) nlError.item(0);
String strError = elError.getFirstChild().getNodeValue();
if(strError.equals("0")){
sbHtml.append("トラックバックPingの送信が成功しました。<BR>");
}else{
sbHtml.append("トラックバックPingの送信に失敗しました。<BR>");
NodeList nlMessage = doc.getElementsByTagName("message");
Element elMessage = (Element) nlMessage.item(0);
sbHtml.append(elMessage.getFirstChild().getNodeValue());
}
if(entity.isStreaming())
{
EntityUtils.consume(entity);
}
} finally {
httpResponse.close();
}
現在は、HttpEntity entity = httpResponse.getEntity();
int responseStatus = httpResponse.getStatusLine().getStatusCode();
if (responseStatus != HttpStatus.SC_OK) {
sbHtml.append("送信に失敗しました:"+ responseStatus);
}
DocumentBuilder db
= DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = db.parse(httpResponse.getEntity().getContent());
NodeList nlError = doc.getElementsByTagName("error");
Element elError = (Element) nlError.item(0);
String strError = elError.getFirstChild().getNodeValue();
if(strError.equals("0")){
sbHtml.append("トラックバックPingの送信が成功しました。<BR>");
}else{
sbHtml.append("トラックバックPingの送信に失敗しました。<BR>");
NodeList nlMessage = doc.getElementsByTagName("message");
Element elMessage = (Element) nlMessage.item(0);
sbHtml.append(elMessage.getFirstChild().getNodeValue());
}
if(entity.isStreaming())
{
EntityUtils.consume(entity);
}
} finally {
httpResponse.close();
}
HTTPステータスコード500
javax.servlet.ServletException: org.xml.sax.SAXParseExceptionpublicId: -//W3C//DTD HTML 4.01 Transitional//EN; systemId: http://www.w3.org/TR/html4/loose.dtd; lineNumber: 31; columnNumber: 3; エンティティ"HTML.Version"の宣言は'>'で終了する必要があります。
エラーの個所は
Document doc = db.parse(httpResponse.getEntity().getContent());
となっています。
投稿:くろの[Chrono]/2015年 01月 17日 23時 12分
/更新:2015年 01月 18日 12時 20分
ストリームから読み込んだデータがXMLの形式になっていないようですね。
一度文字列に変換して表示してみてはどうでしょう。
ストリーム→文字列の変換は以下のページが参考になると思います。
http://web.plus-idea.net/2012/10/java-string-inputstream/
一度文字列に変換して表示してみてはどうでしょう。
ストリーム→文字列の変換は以下のページが参考になると思います。
http://web.plus-idea.net/2012/10/java-string-inputstream/
投稿:竹形 誠司[takegata]/2015年 01月 18日 00時 54分
/更新:2015年 01月 18日 00時 54分
竹形様
回答ありがとうございます。
提案頂いた方法は何をするためのものでしょうか?
StringBuilderに変換して何を確認すべきなのかを
回答頂けないでしょうか。
回答ありがとうございます。
提案頂いた方法は何をするためのものでしょうか?
StringBuilderに変換して何を確認すべきなのかを
回答頂けないでしょうか。
投稿:くろの[Chrono]/2015年 01月 18日 02時 43分
/更新:2015年 01月 18日 08時 52分
Document doc = db.parse(httpResponse.getEntity().getContent());
でSAXParseException
のエラーが出ているということなので、ストリームの内容を確認してはどうかと思いました。ここでは、docにXML形式のデータを渡す前提です
が、実際に渡しているデータがXML形式になっていないのではないかと
思います。
投稿:竹形 誠司[takegata]/2015年 01月 18日 10時 31分
/更新:2015年 01月 18日 10時 31分
竹形様
回答ありがとうございます。
以下の通りにしたところ、動作確認できましたので、
ご報告します。
お忙しい所ありがとうございました。
httpcomponents-core-4.4-bin
apache-log4j-2.1-bin
commons-logging-1.2-bin
をダウンロードし、以下を参照させます。
log4j-1.2-api-2.1.jar
log4j-api-2.1.jar
log4j-core-2.1.jar
commons-logging-1.2.jar
コードは以下に置き換えます。
回答ありがとうございます。
以下の通りにしたところ、動作確認できましたので、
ご報告します。
お忙しい所ありがとうございました。
java+mysql+tomcatで作る掲示板とブログsend_trackback_ping_3.jspでHttpClient4.3を使う
httpcomponents-client-4.3.6-binhttpcomponents-core-4.4-bin
apache-log4j-2.1-bin
commons-logging-1.2-bin
をダウンロードし、以下を参照させます。
log4j-1.2-api-2.1.jar
log4j-api-2.1.jar
log4j-core-2.1.jar
commons-logging-1.2.jar
コードは以下に置き換えます。
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(strTrackbackUrl);
List<NameValuePair> formParams = new ArrayList<NameValuePair>();
formParams.add(new BasicNameValuePair("title", strTitle));
formParams.add(new BasicNameValuePair("url", strUrl));
formParams.add(new BasicNameValuePair("blog_name", strBlogName));
formParams.add(new BasicNameValuePair("excerpt", strExcerpt));
httpPost.setEntity(new UrlEncodedFormEntity(formParams));
CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
try {
HttpEntity entity = httpResponse.getEntity();
int responseStatus = httpResponse.getStatusLine().getStatusCode();
if (responseStatus != HttpStatus.SC_OK) {
sbHtml.append("送信に失敗しました:"+ responseStatus);
}
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse(httpResponse.getEntity().getContent());
NodeList nlError = doc.getElementsByTagName("error");
Element elError = (Element) nlError.item(0);
String strError = elError.getFirstChild().getNodeValue();
if(strError.equals("0")){
sbHtml.append("トラックバックPingの送信が成功しました。<BR>");
}else{
sbHtml.append("トラックバックPingの送信に失敗しました。<BR>");
NodeList nlMessage = doc.getElementsByTagName("message");
Element elMessage = (Element) nlMessage.item(0);
sbHtml.append(elMessage.getFirstChild().getNodeValue());
}
if(entity.isStreaming())
{
EntityUtils.consume(entity);
}
}catch(Exception e){%>
トラックバックPing送信可能なURLを入力してください。
<%}finally {
httpResponse.close();
}
httpClient.close();
HttpPost httpPost = new HttpPost(strTrackbackUrl);
List<NameValuePair> formParams = new ArrayList<NameValuePair>();
formParams.add(new BasicNameValuePair("title", strTitle));
formParams.add(new BasicNameValuePair("url", strUrl));
formParams.add(new BasicNameValuePair("blog_name", strBlogName));
formParams.add(new BasicNameValuePair("excerpt", strExcerpt));
httpPost.setEntity(new UrlEncodedFormEntity(formParams));
CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
try {
HttpEntity entity = httpResponse.getEntity();
int responseStatus = httpResponse.getStatusLine().getStatusCode();
if (responseStatus != HttpStatus.SC_OK) {
sbHtml.append("送信に失敗しました:"+ responseStatus);
}
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse(httpResponse.getEntity().getContent());
NodeList nlError = doc.getElementsByTagName("error");
Element elError = (Element) nlError.item(0);
String strError = elError.getFirstChild().getNodeValue();
if(strError.equals("0")){
sbHtml.append("トラックバックPingの送信が成功しました。<BR>");
}else{
sbHtml.append("トラックバックPingの送信に失敗しました。<BR>");
NodeList nlMessage = doc.getElementsByTagName("message");
Element elMessage = (Element) nlMessage.item(0);
sbHtml.append(elMessage.getFirstChild().getNodeValue());
}
if(entity.isStreaming())
{
EntityUtils.consume(entity);
}
}catch(Exception e){%>
トラックバックPing送信可能なURLを入力してください。
<%}finally {
httpResponse.close();
}
httpClient.close();
投稿:くろの[Chrono]/2015年 01月 18日 12時 00分
/更新:2015年 01月 18日 12時 17分
あーそうですか、
上げていただいたコードを追いかける余裕がなくて申し訳ないですが、
とりあえず納得していただいたようでよかったです。
また何かあればいつでもどうぞ。
上げていただいたコードを追いかける余裕がなくて申し訳ないですが、
とりあえず納得していただいたようでよかったです。
また何かあればいつでもどうぞ。
投稿:竹形 誠司[takegata]/2015年 01月 18日 20時 26分
/更新:2015年 01月 18日 20時 26分
お世話になります。
PdfBuilderについて
前提ですが、
A4 2枚での帳票作成は問題ないのですが、
これに
<img src="BG_Syain.gif" top="27mm" left="180mm" width="20mm" height="20mm" background="false"/>
を追加して、社印画像を挿入したところ、
2枚目に社印画像が挿入されてしまいました。
そこで質問なのですが、
1枚目に「BG_Syain.gif」の社印画像を出力したいのですが、
その方法はありますでしょうか。1枚目に社印画像を出力する方法を教えて下さい。
よろしくお願いいたします。
<?xml version="1.0" encoding="UTF8" standalone="yes"?>
<document size="A4" margin-top="10mm" margin-right="10mm" margin-left="20mm" margin-bottom="10mm">
<img src="BG_Syain.gif" top="7mm" left="180mm" width="20mm" height="20mm" background="false"/>
<table cols="1" widths="50mm" margin-top="17mm" margin-bottom="0mm" border-width="0mm" font-size="15pt" font-family="ゴシック" font-style="bold">
<tr>
<td align-h="left" padding-bottom="0mm">お見積書</td>
</tr>
〜以下省略〜
※2枚のPDF
PdfBuilderについて
前提ですが、
「TableLayout」クラスを使用している
この帳票はA4 1枚に収まらないため、A4 2枚構成となっている
A4 2枚での帳票作成は問題ないのですが、
これに
<img src="BG_Syain.gif" top="27mm" left="180mm" width="20mm" height="20mm" background="false"/>
を追加して、社印画像を挿入したところ、
2枚目に社印画像が挿入されてしまいました。
そこで質問なのですが、
1枚目に「BG_Syain.gif」の社印画像を出力したいのですが、
その方法はありますでしょうか。1枚目に社印画像を出力する方法を教えて下さい。
よろしくお願いいたします。
<?xml version="1.0" encoding="UTF8" standalone="yes"?>
<document size="A4" margin-top="10mm" margin-right="10mm" margin-left="20mm" margin-bottom="10mm">
<img src="BG_Syain.gif" top="7mm" left="180mm" width="20mm" height="20mm" background="false"/>
<table cols="1" widths="50mm" margin-top="17mm" margin-bottom="0mm" border-width="0mm" font-size="15pt" font-family="ゴシック" font-style="bold">
<tr>
<td align-h="left" padding-bottom="0mm">お見積書</td>
</tr>
〜以下省略〜
※2枚のPDF
投稿:kkyy[kkyy]/2015年 06月 07日 17時 20分
/更新:2015年 06月 07日 17時 27分
竹形です、こんにちは。
出先なのですぐに確認はできていませんが、TableLayoutは1ページごとにテンプレートを作る前提になっていたかと思います。
2ページ組みの帳票を出力する場合は、ページごとにテンプレートを作るという方法ではどうでしょう。
出先なのですぐに確認はできていませんが、TableLayoutは1ページごとにテンプレートを作る前提になっていたかと思います。
2ページ組みの帳票を出力する場合は、ページごとにテンプレートを作るという方法ではどうでしょう。
投稿:竹形 誠司[takegata]/2015年 06月 08日 17時 47分
/更新:2015年 06月 08日 17時 47分
「JSP帳票アプリケーション実践開発入門」を学習しています。226頁で直線の表示の仕方はわかりましたが点線等の表示はどのようにするのでしょうか?
投稿:yasuhiro[yasuhiro]/2015年 11月 04日 10時 28分
/更新:2015年 11月 04日 10時 29分
竹形です、こんにちは。
本を書いた当初は点線の描画に対応していませんでしたが、ライブラリに点線の
dash属性を追加しました。
http://www.orquesta.org/takegata/files/pdfbuilder1.1.jar
使い方は次のような感じです。
試してみてください。
(表の罫線はiTextのライブラリに該当の機能が無いので対応していません。)
本を書いた当初は点線の描画に対応していませんでしたが、ライブラリに点線の
dash属性を追加しました。
http://www.orquesta.org/takegata/files/pdfbuilder1.1.jar
使い方は次のような感じです。
<line from="40mm 30mm" to="90mm 100mm" dash="3mm"/>
dash属性の値は、破線の間隔です。試してみてください。
(表の罫線はiTextのライブラリに該当の機能が無いので対応していません。)
投稿:竹形 誠司[takegata]/2015年 11月 06日 00時 34分
/更新:2015年 11月 06日 00時 36分
pdfbuilder1.1.jarが取得できません。認証画面にWeb−Logのid='yasuhiro' password='a833_6936' を入力してもThis request requires HTTP authentication()と表示されるだけなのですが
投稿:yasuhiro[yasuhiro]/2015年 11月 06日 10時 32分
/更新:2015年 11月 06日 10時 32分
すみません、
http://www.orquesta.org/takegata/public/pdfbuilder1.1.jar
でした。
http://www.orquesta.org/takegata/public/pdfbuilder1.1.jar
でした。
投稿:竹形 誠司[takegata]/2015年 11月 06日 12時 28分
/更新:2015年 11月 06日 12時 29分
たびたびお世話になります。感謝しております。
PdfBuilderについて
前提ですが、
<table cols="2" widths="30mm 50mm">
<tr>
<td>氏名</td>
<td id="field11"></td>
</tr>
<tr>
<td>年齢</td>
<td id="field12"></td>
</tr>
<tr>
<td>職業</td>
<td id="field13"></td>
</tr>
</table>
<table cols="2" widths="30mm 50mm">
<tr>
<td>氏名</td>
<td id="field21"></td>
</tr>
<tr>
<td>年齢</td>
<td id="field22"></td>
</tr>
<tr>
<td>職業</td>
<td id="field23"></td>
</tr>
</table>
</document>
質問させていただきます。
職業のfield13に複数行のデータをセットすると、
なぜか職業の印字位置が改ページされてしまい、次ページの先頭からとなってしまいます。
これを改ページさせない方法はありますでしょうか。
つまり、<table>〜</table>間の印字は、「間(スペース)」を開けたくないのですが。
ご回答のほどよろしくお願いいたします。
PdfBuilderについて
前提ですが、
「TableLayout」クラスを使用している
この帳票はA4 1枚に収まらない場合がある
下記のようなテンプレートで、
<document><table cols="2" widths="30mm 50mm">
<tr>
<td>氏名</td>
<td id="field11"></td>
</tr>
<tr>
<td>年齢</td>
<td id="field12"></td>
</tr>
<tr>
<td>職業</td>
<td id="field13"></td>
</tr>
</table>
<table cols="2" widths="30mm 50mm">
<tr>
<td>氏名</td>
<td id="field21"></td>
</tr>
<tr>
<td>年齢</td>
<td id="field22"></td>
</tr>
<tr>
<td>職業</td>
<td id="field23"></td>
</tr>
</table>
</document>
質問させていただきます。
職業のfield13に複数行のデータをセットすると、
なぜか職業の印字位置が改ページされてしまい、次ページの先頭からとなってしまいます。
これを改ページさせない方法はありますでしょうか。
つまり、<table>〜</table>間の印字は、「間(スペース)」を開けたくないのですが。
ご回答のほどよろしくお願いいたします。
投稿:吉沢和雄[yoshi]/2015年 12月 26日 18時 53分
/更新:2015年 12月 26日 18時 53分
竹形です、こんにちは。
上のテンプレートを使って、以下のプログラムを実行してみましたが、
改ページはされませんでした。
よろしくお願いします。
上のテンプレートを使って、以下のプログラムを実行してみましたが、
改ページはされませんでした。
import jp.veltec.pdf.TableLayout;
import jp.veltec.pdf.PdfException;
import java.io.File;
import java.io.OutputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
public class Test{
public static void main(String[] args) throws PdfException,FileNotFoundException,IOException{
//--- STEP 1 ---
FileOutputStream fos = new FileOutputStream("Test.pdf");
TableLayout layout= new TableLayout(fos);
//--- STEP 2 ---
File template = new File("template.xml");
layout.setTemplateFile(template);
//--- STEP 3 ---
layout.setData("field11","氏名1");
layout.setData("field12","年齢1");
layout.setData("field13","職業1\r\n職業1b");
layout.setData("field21","氏名2");
layout.setData("field22","年齢2");
layout.setData("field23","職業2");
layout.addPage();
//--- STEP 4 ---
layout.close();
}
}
どのようなプログラム/データで改ページが起こるか、教えていただけますか。import jp.veltec.pdf.PdfException;
import java.io.File;
import java.io.OutputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
public class Test{
public static void main(String[] args) throws PdfException,FileNotFoundException,IOException{
//--- STEP 1 ---
FileOutputStream fos = new FileOutputStream("Test.pdf");
TableLayout layout= new TableLayout(fos);
//--- STEP 2 ---
File template = new File("template.xml");
layout.setTemplateFile(template);
//--- STEP 3 ---
layout.setData("field11","氏名1");
layout.setData("field12","年齢1");
layout.setData("field13","職業1\r\n職業1b");
layout.setData("field21","氏名2");
layout.setData("field22","年齢2");
layout.setData("field23","職業2");
layout.addPage();
//--- STEP 4 ---
layout.close();
}
}
よろしくお願いします。
投稿:竹形 誠司[takegata]/2015年 12月 27日 12時 19分
/更新:2015年 12月 27日 12時 20分
ご返信ありがとうございます。説明が足りなくて申し訳ありません。
field13に出力する行数が多くて末尾の行がそのページ内に収まらないと
改ページして、field13のデータが次ページの先頭から印字されてしまいます。
(ソースを開示できないこともありますので、
一度、御社にお邪魔して、有償にての技術指導をお願いしたいのですが。)
よろしくお願いいたします。ありがとうございます。
field13に出力する行数が多くて末尾の行がそのページ内に収まらないと
改ページして、field13のデータが次ページの先頭から印字されてしまいます。
(ソースを開示できないこともありますので、
一度、御社にお邪魔して、有償にての技術指導をお願いしたいのですが。)
よろしくお願いいたします。ありがとうございます。
投稿:吉沢和雄[yoshi]/2015年 12月 27日 19時 06分
/更新:2015年 12月 27日 23時 04分
技術支援という形でしたら、1時間あたり5,000円(+税)ほどの予算を組んでいただければ対応致します。
詳しくはこのサイトのフッターにありますアドレスまでメールでご連絡ください。
よろしくお願いします。
詳しくはこのサイトのフッターにありますアドレスまでメールでご連絡ください。
よろしくお願いします。
投稿:竹形 誠司[takegata]/2015年 12月 30日 20時 48分
/更新:2015年 12月 30日 20時 48分
テーブルの枠線にround属性で角の丸みをつけると4角とも丸みができてしまいます。上側だけ角丸にする方法があるのでしょうか?
投稿:yasuhirobito[yasuhirobito]/2016年 05月 21日 21時 34分
/更新:2016年 05月 21日 21時 34分
竹形です、どうも。
本書ではiTextライブラリのPdfContentByteクラスを利用していますが、このクラスでは4つの角を別々に設定できる機能がありません。そのため、現状では本書のライブラリでも残念ながら4つの角は同じ設定にしかなりません。
本書ではiTextライブラリのPdfContentByteクラスを利用していますが、このクラスでは4つの角を別々に設定できる機能がありません。そのため、現状では本書のライブラリでも残念ながら4つの角は同じ設定にしかなりません。
投稿:竹形 誠司[takegata]/2016年 05月 21日 21時 51分
/更新:2016年 05月 21日 21時 52分
新しいアプリを作成したところ以下のようなエラーがでました。ご教授ください。文字を入力するとエラーになります。線などは表示されます。
Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: java.lang.IllegalArgumentException: font-family not found:明朝
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
root cause
java.lang.IllegalArgumentException: font-family not found:明朝
jp.veltec.pdf.FontManager.getBaseFont(Unknown Source)
jp.veltec.pdf.Cell.<init>(Unknown Source)
jp.veltec.pdf.TableLayout.process(Unknown Source)
jp.veltec.pdf.PdfLayout.addPage(Unknown Source)
jp.veltec.pdf.PdfLayout.addPage(Unknown Source)
org.apache.jsp.jsp.ryoshu1_jsp._jspService(ryoshu1_jsp.java:168)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
投稿:yasuhiro[yasuhiro]/2017年 12月 21日 08時 19分
/更新:2017年 12月 21日 08時 20分