質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

1042閲覧

画面遷移がうまくいきません。

gamavone

総合スコア3

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/06/28 11:03

Java初心者です。
現在、ログインが成功した場合のみ取り扱い商品一覧の画面に移動し、ログイン失敗の場合は強制的にログイン画面にフォワードするプログラムを作っているのですが、ログイン成功しても画面遷移がうまくいきません。また、ログイン失敗すると、フォワード先の画面が文字化けしてしまいます。

また、ログインに成功する前に直接additems.jsp、displaycart.jspにアクセスした場合もlogin.htmlへリダイレクトするようにしたいです。
どのように改善すれば良いでしょうか。

・CartController.java

Servlet

1package shop; 2 3import java.io.IOException; 4import java.io.PrintWriter; 5 6import javax.servlet.ServletException; 7import javax.servlet.RequestDispatcher; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11import javax.servlet.http.HttpSession; 12import javax.servlet.ServletContext; 13import javax.servlet.annotation.WebServlet; 14 15import beans.CartBean; 16import beans.StocksBean; 17 18@WebServlet("/controller") // URLパターンを /controller とする 19public class CartController extends HttpServlet { 20 public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException { 21 response.setContentType("text/html;charset=utf-8"); 22 request.setCharacterEncoding("utf-8"); 23 RequestDispatcher dispatch = request.getRequestDispatcher("./displaycart.jsp"); 24 dispatch.forward(request, response); 25 } 26 public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException { 27 response.setContentType("text/html;charset=utf-8"); 28 request.setCharacterEncoding("utf-8"); 29 PrintWriter out = response.getWriter(); 30 String ui = request.getParameter("userid"); 31 String up =request.getParameter("userpass"); 32 if(ui.equals("user")&& up.equals("password")){ 33 response.sendRedirect("additems.jsp"); 34 } 35 36 else{ 37 RequestDispatcher dispatch = request.getRequestDispatcher("./login.html"); 38 dispatch.forward(request, response); 39 } 40 41 HttpSession session = request.getSession(); 42 CartBean cart = (CartBean)session.getAttribute("cart"); 43 StocksBean stocks = (StocksBean)session.getAttribute("stocks"); 44 45 String id = request.getParameter("id"); 46 //注文か取消かの判定 47 String func = request.getParameter("submit"); 48 if(func.equals("注文")){ 49 //注文処理 50 for(String[] goods : stocks.getStocks()){ 51 if(goods[0].equals(id)){ 52 cart.addItem(id, goods[1],goods[2], 1); 53 break; 54 } 55 } 56 }else if(func.equals("取消")){ 57 //取消処理 58 cart.deleteItem(id); 59 } 60 RequestDispatcher dispatch = request.getRequestDispatcher("./additems.jsp"); 61 dispatch.forward(request, response); 62 } 63}

・additems.jsp

JSP

1<%@ page contentType = "text/html;charset=utf-8" import="java.util.*" %> 2<jsp:useBean id="cart" scope="session" class="beans.CartBean" /> 3<jsp:useBean id="stocks" scope="session" class="beans.StocksBean" /> 4 5<!DOCTYPE html> 6<html lang="ja"> 7 <head> 8 <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 9 <title>商品カタログ</title> 10 </head> 11 <body> 12 <h1> 13 <% 14 request.setCharacterEncoding("utf-8"); 15 //セッションが開始されているか名前が登録されているか確認する 16 if(session.isNew() || session.getAttribute("name") == null) { 17 // 強制的に login.html へリダイレクト 18 response.sendRedirect("login.html"); 19 } 20 %> 21 </h1> 22 <a href="/shopping-cart/controller">現在の注文数:</a><%=cart.getItemCounts() %> 23 <hr> 24 <center><h3> - 取り扱い商品一覧 - </h3></center> 25 <table border="1" width="300" cellspacing="0" cellpadding="2" align="center"> 26 <tr><th>商品</th><th>価格</th><th>注文/取消</th></tr> 27 <% 28 for(String[] goods : stocks.getStocks()){ 29 %> 30 <tr> 31 <form action="/shopping-cart/controller" method="post"> 32 <input type="hidden" name="id" value="<%=goods[0] %>"> 33 <td><%=goods[1] %></td> 34 <td align="right">&yen;<%=String.format("%1$,3d",Integer.parseInt(goods[2])) %></td> 35 <td><input type="submit" name="submit" value="注文"><br><br> 36 <input type="submit" name="submit" value="取消"></td> 37 </form> 38 </tr> 39 <% 40 } 41 %> 42 </table> 43 </body> 44</html>

・displaycart.jsp

JSP

1<%@ taglib uri="carttag" prefix="cart" %> 2<%@ page language="java" contentType="text/html; charset=UTF-8" 3 pageEncoding="UTF-8" import="java.util.HashMap" %> 4<jsp:useBean id="cart" scope="session" class="beans.CartBean" /> 5<!DOCTYPE html> 6<html lang="ja"> 7 <head> 8 <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 9 <title>カート内の商品</title> 10 </head> 11 <body> 12 <h1> 13 <% 14 request.setCharacterEncoding("utf-8"); 15 //セッションが開始されているか名前が登録されているか確認する 16 if(session.isNew() || session.getAttribute("name") == null) { 17 // 強制的に login.html へリダイレクト 18 response.sendRedirect("login.html"); 19 } 20 %> 21 </h1> 22 <center> 23 <table width="300" border="1" cellspacing="0" cellpadding="2" border="0"> 24 <caption><b>カート内の商品</b></caption> 25 <tr> 26 <th>商品名</th><th>価格</th><th>個数</th><th>小計</th> 27 </tr> 28 <% 29 HashMap<String,String[]> hm = cart.getItems(); 30 for(String[] goods : hm.values()){ 31 %> 32 <tr> 33 <td><%=goods[1] %></td> 34 <td align="right">&yen;<%=String.format("%1$,3d",Integer.parseInt(goods[2])) %></td> 35 <td align="right"><%=goods[3] %>個</td> 36 <td align="right"> 37 &yen;<%=String.format("%1$,3d",cart.getEachSale(goods[0])) %></td> 38 </tr> 39 <% 40 } 41 %> 42 <tr> 43 <td align="right" colspan=3 >合計</td> 44 <td align="right"> 45 &yen;<cart:total/> 46 </td> 47 </tr> 48 <tr> 49 <td align="right" colspan=3>消費税</td> 50 <td align="right"> 51 &yen;<%=String.format("%1$,3d",(int)(cart.getTotalSales() * 0.08)) %> 52 </td> 53 </tr> 54 <tr> 55 <td align="right" colspan=3>注文金額</td> 56 <td align="right"><b>&yen; 57 <%= String.format("%1$,3d",(int)(cart.getTotalSales() * 1.08)) %> 58 </b> 59 </td> 60 </tr> 61 </table> 62 </center> 63 <br> 64 <a href="additems.jsp">商品一覧に戻る</a> 65 </body> 66</html>

・login.html

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 5 <title>LoginTest</title> 6 </head> 7 <body> 8 <form action="/shopping-cart/controller" method="post"> 9   ユーザー IDを入力してください : 10 <input type="text" name="userid" size="20" /> 11 <br><br> 12   パスワードを入力してください : 13 <input type="password" name="userpass" size="20" /> 14 <br><br> 15 <input type="submit" value="ログイン" /> 16 </form> 17 </body> 18</html>

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問