- PR -

Javaを教えてください!!

1
投稿者投稿内容
あい
会議室デビュー日: 2004/10/10
投稿数: 1
投稿日時: 2004-10-10 22:29
-------10|-------20|-------30|-------40|-------50|-------60|-------70|-------80|-------90|

はじめまして。
半月前からJavaを勉強しているものですが、二つ教えいただきたいことがあります。
JSPとサーブレットでDBを更新するというプログラムを作っています。
画面から数量を打ち込み確定を押すとDBが更新されるというところまでは作れたのですが確定ボタン
押下持に画面表示内容が更新後も更新前と変わらないのです。
@ボタン押下持に画面表示を更新後の内容にするには
 どのようなコーディングを足したらよいのでしょうか?

もう一つの質問ですが、数量を打ち込み持に半角数字以外を受け付けないような仕様にしていますが、
現在のコーディングでは半角数字以外の文字が入力された時に入力前の数量入力欄が0の画面になってしまいます。
A半角数字以外が入力されたところは空白(もしくは0)で、半角数字が入力されたことろは入力された
数字をそのまま画面にかえすにはどのようなコーディングを足したらよいのでしょうか?



siire JSP、SiireSuryoNyuryoku、ConnectDatabase javaを貼り付けさせていただきました。
長々と目を通すのだけでシンドイと思いますが、
できましたら上記質問を解決してください。

勉強不足の私をお助けください。

よろしくお願い致します。





*タイトル:siire JSP

<TABLE border="0">
<TBODY>
<TR>
<TH colspan="2" align="left">部門名 <%=bumon_name%></TH>
<TH colspan="3"></TH>
</TR>
<TR bgcolor="#0000FF">
<TH width="100">商品コード</TH>
      <TH width="100">在庫数量</TH>
      <TH width="100">仕入数量</TH>
     </TR>
<%
ShohinBean siireListBean = null;
if(siireList = null){
for(int i=0 ; i < siireList.size() ; i++){
siireListBean = (ShohinBean)siireList.get(i);
out.println("<TR bgcolor='#00CCFF'>");
out.println("<TD width='100'>");
out.println(siireListBean .getShohinCode());
out.println("</TD>");
out.println("<TD width='145'>");
out.println(siireListBean .getZaikosu());
out.println("</TD>");
out.println("<TD align='center'><INPUT type='text' size='10'
             maxlength='7' name='suryo" + i +"' value='0'></TD>");
}
}
%>
</TR>
<TR height="20">
<TD colspan="5"></TD>
</TR>




/**
*タイトル:SiireSuryoNyuryoku
*説明:仕入画面で数量を入力したときの処理を行う
package siire. command;
import javax. servlet.*;
import javax. servlet.http.*;

import common. bean. ShohinBean;
import common. bean. BumonInfoBean;
import common. util. StrUtils;

import java. io.*;
import java. sql.SQLException.*;
import java. util.ArrayList;

import common.ConstValue;
import common.ConnectDatabase;


public class SiireSuryoNyuryoku extends HttpServlet implements ConstValue {
//遷移先ページ
private static final String NEXT_PAGE = "/siire.jsp" ; //仕入画面
private static final String LAST_PAGE = "/menu.jsp" ; //メニュー画面

public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOExeption {
doPost(request,response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOExeption {
//セッションの開始
HttpSession session = request.getSession();

ArrayList siireList = (ArrayList) session.getAttribute("siireList");
//リストの分だけ数量を取得
//数量が半角数字かどうか
boolean errFlg = false;
for(int i=0;i < siireList.size();i++) {
ShohinBean siireListBean = (ShohinBean)siireList.get(i);
//数量が半角数字であれば、Beanにセット
      if(StrUtils.isNumeric((String)request.getParameter("suryo" + i))){
//取得した数量をintに変換してBEANにセット
      siireListBean.setSuryo(integer.parseInt((String)request.getParameter("suryo" + i)));
}else{
//取得した数量が半角数字以外の場合はセットせずにフラグをtrueに
             errFlg = true;
}
}

//フラグがtrueの場合
if(errFlg){
//エラーメッセージをセット
 request.setAttrbute("err_msg",MSG_005);
//仕入画面に遷移
getServletContext().getRequestDispatcher(NEXT_PAGE).forward(request,response);
return;
}
//ConnectDatabaseクラスの変数宣言
ConnectDatabase connectDatabase = null;
boolean rtn = true;
//DB接続
try{
connectDatabase = new ConnectDatabase();
//siireListを引数にsetZaikoInfoを呼び出す
rtn = connectDatabase setZaikoInfo(siireList);
}catch (SQLException e) {
//エラーメッセージを表示することができませんでした
request.setAttribute("err_msg",MSG_005);
e.printStackTrace();
}catch (ClassNotFoundException e) {
//エラーメッセージを表示することができませんでした
request.setAttribute("err_msg",MSG_005);
e.printStackTrace();
}
if(rtn==false){
//エラーメッセージを表示することができませんでした
request.setAttribute("err_msg",MSG_005);
}
//sessionに商品情報をセットする
session.setAttribute("siireList",siireList);
//仕入画面遷移
getServletContext().getRequestDispatcher(NEXT_PAGE),forward(request,response);
}
}






**
*タイトル:ConnectDatabase java
*仕入リストの更新

public boolean setZaikoInfo(ArrayList list){
//更新OKの場合はtrue,NGの場合はfalse
boolean return_flg = true;
//SQLの実行
try{
for(int i=0;i < list.size();i++){
ShohinBean sireListBean = (ShohinBean)list.get(i);
//SQLの生成
           StringBuffaer sb = new StringBuffer();
sb.append("update ZaikoMaster set");
sb.append(" ZaikoSu = ZaikoSu +" +
siireListBean.getSuryo());
sb.append("where SyohinCode=" + siireListBean.getShohinCode());
//SQLの実行 
           sttsql.executeUpdate(sb.toString());
}
//DB後始末
 sttaql.close();
db.close();
}catch(Exception e){
e.printStackTrace();
return_flg = false;
}
return return_flg;
}
YOU@IT
ぬし
会議室デビュー日: 2002/03/29
投稿数: 284
お住まい・勤務地: 大阪
投稿日時: 2004-10-11 22:38

うーん、ちょっとこの質問の仕方ではレスがつかないのではないでしょうか。

まず、1つのスレッドで全く異なる質問を2つするのは良くないと思います。
そういう場合はスレッドをわけるべきだと思いますよ。

それと@の質問は、Servletプログラミングの初級レベルの応用だと思います。
このような問題に対してどのように実装すればよいかイメージが湧かないようであれば
まだ基本ができていないのではないかと。

そのような状態では、回答する側もあいさんがどこまで知っていてどこからわからないのか
が見えない為、答えようとすると一から百まで説明しなければなりません。

まずはアクセスカウンタとかを実装してみてはどうでしょう?
私も始めて実装したServletプログラムはアクセスカウンタでしたよ。

あと、MVCモデルについて調べてみてください。ヒントが得られると思います。


1

スキルアップ/キャリアアップ(JOB@IT)