質問: ### 前提・実現したいこと ごく普通なJSPとServletを使ったログイン画面&FORM認証を作りたいのですが サーブレットの作り方が分からなくて困っています。 MySQLのデータベースにIDとパスワードを照合して合っていれば 次の一覧ページへ~。間違っていれば再度ログインページを表示としたいです。 JSPは下記の通りです。 データベース名はTest。 テーブル名はtest。 JSPファイル名はLogin.jsp ServletはLogin.java 次の一覧ページはTest.javaです。 ご指摘等、よろしくお願いいたします。 ### 発生している問題・エラーメッセージ ``` エラーメッセージ ``` ### 該当のソースコード ``` <%@ page contentType="text/html;charset=UTF-8" import="java.sql.*, javax.naming.*, javax.sql.*" %> ログイン ログイン ID パスワード ``` ### 試したこと FORM認証で無くても構いません。 何かいい方法があれば教えていただけると幸いです。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: 現在どこまでサーブレット側ができているのか分からないのでざっくり説明になりますが、 スクリプトとは違うのでaction先は.javaという表記にはなりません。 現在のアクセス先URLもサーブレットであれば ローカルの場合、 **http://localhost:8080/{プロジェクト名}/Login** となっているはず。 action先は何か特別な指定をしていない限り下記ですね。 ``` ``` submitした情報はサーブレット側(Login.java)のdoPost()メソッドで受け取れます。 request.getParameter() の引数に入力コントロールのnameに指定した値を渡します。 ``` public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{ String name=request.getParameter("username"); System.out.println("username:"+name); //入力したusernameが出力されるはず } ``` * リクエストパラメータの取得(getParameter) > > 今回は「GET」メソッドを使いましたが「POST」メソッドを使った場合は「doPost」メソッド内にまったく同じプログラムを記述すれば大丈夫です。 > > > あとは受け取った情報を元にDBに対してSELECT文を実行し、 取得できればセッションにログイン情報を保存しリダイレクト、できなければエラーメッセージをsetしてそのままlogin.jspを表示。 少し調べれば出てくる情報ばかりなので、あとは調べた内容を元に試行してみるだけです。 質問するときのヒントにも書いてあります。 > > 投稿前に自分で一度調べてみましょう。そして調べたことを元に、一度は自分でやってみましょう。 > > > やってみないことには覚えませんので、上記参考に(リンクも散りばめてありますので)、自身で色々やってみてください。 一気にやろうとすると混乱するかもしれないので、下記のように対応項目を細分化して1個ずつおさえていくと良いです。 * Login.javaのdoPost()にて入力した情報を受け取り、画面出力する * DBに接続する * SELECT文でデータを取得する * 取得したデータが意図したデータか出力して確認する * リダイレクトする * セッションに情報を保存して出力する * リダイレクトした先に保存したセッション情報を出力する 上記を併せて、やりたいことを構成する。 ※入力チェックも入れたければ適宜入れてください。 失敗したとしてもプログラムが関知している範囲の中でエラーメッセージが画面に出力されるだけで、 PCが壊れたりそういうような悪影響は(意図的にそのようにプログラムをしない限りは)まずありません。 プログラミングに限らずですが、失敗しただけ技術力が身に付きます。 がんばってください。