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

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

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

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

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

4829閲覧

snsの新規登録で、おなじidとpasswordでは、アカウントを作れないようにしたいです。

edoooooo

総合スコア476

JSP

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

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2015/11/28 13:31

snsの新規登録画面で、userId、password、mailadressを登録して、
そのservletクラス内で、にすでに同姓同名で、password、mailadressが同じ人がいないかを
このコードの中に組み込み判断したいのですが、どのように書けばいいのでしょうか?
自分の書いた、新規登録のコードのnewRegistration.javaという、jspで入力したuserId、pass、mailadressを取得したリクエストパラメータに取得させ、servletクラスは、どのように書けばいいのでしょうか?
足りない情報がありましたら、指摘のほどどうぞよろしくお願いします。

----------(newRegistraction.java)----------

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//リクエストパラメータの取得 request.setCharacterEncoding("UTF-8"); String name=request.getParameter("userId"); String pass=request.getParameter("pass"); //Userインスタンス(ユーザー情報)の生成 User user=new User(name,pass); //Accountにすでに同じuserがあった場合は・・・ //↓この行の( )のところに何を入れれば、リクエストパラメータから先ほどnewで作った、userがuserIdとpassが他の人とかぶらなくなるのかがわかりません boolean isLogin=( ).execute(user); //もしtrueが返された場合は、すでに登録済みだから、 if(isLogin){ //can not set(登録済みのため登録できません) cannot.jspにフォワード RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/cannotset.jsp"); dispatcher.forward(request, response); } else{ //おなじ人は、いないということなので、ユーザー情報をセッションスコープに保存 HttpSession session=request.getSession(); //sessionスコープに保存して、今後ようこそ〜さんという時に使う session.setAttribute("userId",userId); } //引数が2つのLoginも作成 Login login=new Login(userId,pass); //ログイン結果画面にフォワード RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/loginResult.jsp"); dispatcher.forward(request, response); }

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

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

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

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

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

guest

回答1

0

ベストアンサー

すみません、技術的な回答でなく設計面での意見なのですが

新規登録ではIDの重複チェックだけで十分ではないでしょうか?

IDは一意である必要があるでしょうから、それが重複したらPasswordをチェックするまでもないですね
また、Passwordの一致までチェックしていることがユーザーに知られたら、既存アカウントでのログイン方法が知られてしまいます

mailaddressの重複チェックもまた、エラーを返せば有効であることを知らせることになるし、普通に利用しようとする人なら他人のアドレスを入れてシステムからの情報を受け取らないようにする…なんて人もいないかと思います

同姓同名のチェックも、たとえば鈴木一郎さんは日本には結構いらっしゃいますので同じく不要…というか、そこはチェックしたらダメかなと思います

SNSのユーザー登録に関する設計ポリシーがそのようなものでしたら仕方ないですが…

投稿2015/11/28 14:40

takito

総合スコア3111

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

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

edoooooo

2015/11/28 14:55

 ありがとうございます。設計面での考えが浅かったです。 言われてみればなのですが、その通りでした。  userIdをこちらで決めて、与えるという方法を取りたいと思います。 リクエストスコープなどに?数字(乱数の組み合わせ)を保存して、それをidとして発行し、初回だけ入力して、その後は、自動入力という設計でいきたいと思います。それらの登録番号と、パスワードの一致で判断したいと思います。  ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問