さて、すべてのコードを説明とともにここに投稿します...
さて、ここに最初のインデックスのコードがあります.. indexnpro.jsp は、値を取得すると、このように値を Servletnpro に転送します..
<form class="form-class" name="myform" action="Servletnpro" method="POST">
注: ここのアーキテクチャは MVC であるため、すべての jsp が独自のサーブレットを持ち、値が別の値に直接移動しないことを覚えておいてください。 jspが、それらを次のjspに渡すサーブレット.....今、Servletnproのdopostメソッドで...
String connectionURL = "jdbc:mysql://localhost/secnok?"+ "user=root&password=";
Connection connection=null;
response.setContentType("text/html");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession(true);
//これらは、indexnpro.jsp から取得したさまざまな値です。それらのいくつかはドロップダウン ボックスですが、あまり重要ではありません..
String exproject=request.getParameter("country");
String corrcust=request.getParameter("state");
String excust=request.getParameter("country1" );
String corrproject=request.getParameter("state1");
String corrtoepost= request.getParameter("corrtoe");
<--------------- この値は、戻るボタンを押すと失われ続けます..このサーブレットに再び戻ると、null に変わります..
System.out.println(corrtoepost);
System.out.println("doPost is running");
System.out.println("Session id on dopost: " + session.getId() );
request.setAttribute("corrtoepost", corrtoepost);
<--------------- セッションに値を保存していますが、それでも私はそれを失い続けています..
/////////// ここからは、データベースに接続して、ユーザーの選択、つまりセッションに保存した「corrtoepost」に基づいてデータをフェッチするデータベース接続の単純なコードです。その後、それを表示します。 indexa.jsp で ..
try{
int rs1;
// Load the database driver
Class.forName("com.mysql.jdbc.Driver");
// Get a Connection to the database
connection = DriverManager.getConnection(connectionURL);
//Add the data into the database
Statement stmt = connection.createStatement();
Statement stmt1 = connection.createStatement();
Statement stmt2 = connection.createStatement();
Statement stmt3 = connection.createStatement();
Statement stmt4 = connection.createStatement();
Statement stmt5 = connection.createStatement();
Statement stmt6 = connection.createStatement();
ResultSet rs = stmt.executeQuery( "Select * from toe_description where toe_id= '" + corrtoepost + "' " ) ;
ResultSet rs2 = stmt1.executeQuery( "Select * from toe_text where type_id=1 AND toe_id= '" + corrtoepost + "' " ) ;
ResultSet rs3 = stmt2.executeQuery( "Select * from toe_text where type_id=2 AND toe_id= '" + corrtoepost + "' " ) ;
ResultSet rs4 = stmt3.executeQuery( "Select * from toe_text where type_id=3 AND toe_id= '" + corrtoepost + "' " ) ;
ResultSet rs5 = stmt4.executeQuery( "Select * from toe_text where type_id=4 AND toe_id= '" + corrtoepost + "' " ) ;
ResultSet rs6 = stmt5.executeQuery( "Select * from toe_text where type_id=5 AND toe_id= '" + corrtoepost + "' " ) ;
ResultSet rs7 = stmt6.executeQuery( "Select * from toe_text where type_id=6 AND toe_id= '" + corrtoepost + "' " ) ;
while(rs.next()){
String toeid= rs.getString(1);
String toename= rs.getString(2);
String Intname= rs.getString(4);
String Assetname= rs.getString(5);
String Objname= rs.getString(6);
String ProjectID= rs.getString(7);
request.setAttribute("toeid", toeid);
request.setAttribute("toename", toename);
request.setAttribute("Intname", Intname);
request.setAttribute("Assetname", Assetname);
request.setAttribute("Objname", Objname);
request.setAttribute("ProjectID", ProjectID);
while(rs2.next()){
String purpose= rs2.getString(4);
request.setAttribute("purpose", purpose);
while(rs3.next()){
String scope= rs3.getString(4);
request.setAttribute("scope", scope);
System.out.println(scope);
while(rs4.next()){
String toe_desc= rs4.getString(4);
request.setAttribute("toe_desc", toe_desc);
System.out.println(toe_desc);
while(rs7.next()){
String toe_ass= rs7.getString(4);
request.setAttribute("toe_ass", toe_ass);
while(rs6.next()){
String enviroment= rs6.getString(4);
request.setAttribute("enviroment", enviroment);
while(rs5.next()){
String ass_env= rs5.getString(4);
request.setAttribute("ass_env", ass_env);
}
}
}
}
}
}
}
request.getRequestDispatcher("/WEB-INF/indexa.jsp").forward(request, response);
// ここでは、db から取得したすべてのデータを必要な jsp に送信しています。これにより、データが表示されます。つまり、「indexa.jsp」
System.out.println("Connected to the database");
connection.close();
System.out.println("Disconnected from database");
}
catch (Exception e) {
e.printStackTrace();
}
}
}
////////Indexa.jsp のコード
このページには、前述の Servletnpro からフェッチされたデータが表示されます。
ページの body タグの下で、以前にセッションで Servletnpro に保存した「corrtoepost」の値を取得します。現在、この値を確認できます。
String corrtoepost1=request.getParameter("corrtoepost");
String corrtoepost=(String) session.getAttribute("corrtoepost");
session.setAttribute("corrtoepost",corrtoepost);
そして、それをjspページに表示します..現在、正しい値を表示しています..
このページの次のボタンのコードです 次のボタンは、サーブレットから取得したのと同じ正しいtoepost値で次のページに移動することを想定しています。
次
次に、indexb.jsp である次のページに進みます。
ここで、このように indexa.jsp から「corrtoe」の値を再度取得します。
String corrtoe=(String) session.getAttribute("corrtoe");
session.setAttribute("corrtoe",corrtoe);
今までこのページでも正しい値を取得しています... このページで戻るボタンを押すと問題が発生します....
このページの戻るボタンのコードを作成します。
前
この前のボタンを押すと、indexa.jspページのtoe値が失われ、インターフェイスのcorrtoe値がnullとして表示されます.....この後、Servlets Getメソッドを使用して、一度だけ機能する値を取得しようとしましたが、 indexa.jsp で next を押すと、indexb.jsp と残りのページに null が表示されます...問題は、セッションにも保存しているときにこの値が失われるのはなぜですか.!!! よろしければお知恵をお貸しください……。
もう1つの質問は、indexnproページで送信を押すと、indexa.jspではなくアドレスバーにServletnproが表示されるのはなぜですか...しかし、indexa.jspの値が入力されたページindexa.jspが表示されます...これはJSPページ間で「corrtoe」値を失い続ける理由..