※ ChatGPTを利用し、要約された質問です(原文:サーブレット Java )
サーブレットでサブクラスの内容をサーバで表示する方法
このQ&Aのポイント
サーブレット内でサブクラスを使用し、その内容をサーバで表示する方法を教えてください。
使用しているソースコードには、サーブレット内での標準出力をサーバで表示したいという要望があります。
また、サブクラスでサーブレットを宣言できるのかという疑問もあります。
サブクラス(内部クラス?)の内容をサーバで表示したいです
一度、同じ質問をしましたが解決できず、再質問いたしました。
ご回答よろしくお願いします。
まず、<jsp:include flush="true" page="/servlet/page.Sflow1"/>を使い
jspでサーブレットを表示しています。
サーブレットではサブクラスを使用していますが、そのサブクラスの内容をサーバで表示するにはどうすればいいでしょうか。
以下、そのソースです。
・・・・
public class Sflow1 extends HttpServlet{
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String sql="select id,c_id,barcode from Flow order by id,c_id,date";
System.out.println("sql="+sql);
//中略
HashMap<String,Keiro> hsFlow = new HashMap<String,Keiro>();
String idbk="";
String flowbk=null;
while(rs.next()){
String id=rs.getString(1)+":"+rs.getString(2);
String flow=rs.getString(3);
if(id.equals(idbk)){
if(flowbk!=null){Keiro keiro=hsFlow.get(flowbk);if(keiro == null) keiro = new Keiro();
keiro.addKeiro(flow);
hsFlow.put(flowbk,keiro);
}
}
idbk = id;
flowbk = flow;
}
PrintWriter out=response.getWriter();
Object maekeiro[]=hsFlow.keySet().toArray();
Arrays.sort(maekeiro);
for(int i=0;i<maekeiro.length;i++){
System.out.println(maekeiro[i]+"からの動き");
hsFlow.get(maekeiro[i]).viewData();
out.println(maekeiro[i]+"からの動き");
}
}
//中略
class Keiro{
private HashMap<String,Integer> hsNext = new HashMap<String,Integer>();
private int soukei = 0;
public void addKeiro(String atokeiro){
Integer i = hsNext.get(atokeiro);
if (i==null) i=new Integer(0);
hsNext.put(atokeiro,new Integer(i.intValue()+1));
soukei++;
}
public void viewData(){
Object atokeiro[]=hsNext.keySet().toArray();
Arrays.sort(atokeiro);
for(int i=0;i<atokeiro.length;i++){
System.out.println("→"+atokeiro[i]+" "+(hsNext.get(atokeiro[i]).intValue()*100/soukei)+"%");
//このSystem.out.println(・・・)の部分をサーバで表示したいです。
}
}
}
どうすれば標準出力(System.out.println)で表示した内容をサーバで表示することができるのでしょうか?
サーブレットを宣言できないのでレスポンスできず・・・(そもそもサブクラスでサーブレットは宣言できるのですか?)
具体的なソース等ご教示お願いいたします。
お礼
public void viewData(PrintWriter out) { //なるほど!解決できました。 ご回答ありがとうございました。