0

わかりましたので、基本的な残りの例を作成しました。今度は、例で認証 (ユーザー ログイン) を使用して、さらに一歩進めたいと思いました。

データには Java Collection のみを使用しています。データベースがありません!!

メールがパスワードの鍵であるマップにユーザーデータを保存しています!!

しかし、フォームリクエストがユーザーから値を取得する残りの投稿メソッドに投稿されている基本認証部分で行き詰まっています...次のようなものです:

@POST
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED,
        public void newUser(
        @FormParam("email") String email,
        @FormParam("password") String password,@ContextHttpServletResponse servletResponse
) throws IOException {

    // Form Processing algo
if(emailexists){
servletResponse.sendRedirect("http://localhost:8080/xxx/LoginFailed.html");
  }
else{
    servletResponse.sendRedirect("http://localhost:8080/xxx/UserHomPage.html");
  }    
}

私が何を間違っているのかわかりません..また、Javaコレクションのみが使用されます(リスト、マップなど)。

私はここで正しいテクニックを使用していますか、それとも誰かが自分の処分でより良いテクニックを持っています.

どんな助けでも大歓迎です!

私はApache Tomcat 6..を使用してWindowsを使用しています。

そして、このことで完全なNOOB !!

4

1 に答える 1

0

データベースを使用せずに永続的なデータ (ユーザー名やパスワードなど) を保存するには、データをテキスト ファイル サーバー側に保存し、そのデータをコンストラクターのマップに読み込むことを検討する必要があります。

ただし、データが多ければ多いほど、このプロセスのコストは高くなります。多数のユーザーがいる場合は、データベースの使用を検討する必要があります。データベースの方が整理され、効率的で、はるかに使いやすいからです。

    @Path("myPath")
    public class MyResource {

        private static final String FILE_PATH="my/path/to/userdata.txt";

        private HashMap<String, String> _userData;

        public MyResource() {
            try {
                Scanner scanner = new Scanner(new File(FILE_PATH));
                _userData = new HashMap<String, String>();
                while(scanner.hasNext()) {
                    String[] line = scanner.nextLine().split(",");
                    _userData.put(line[0].trim(), line[1].trim());
                }
            } catch(IOException e) {
                e.printStackTrace();
            }
        }

        @POST
        @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
        public Response addNewUser(@FormParam("email") String email,
                                   @FormParam("password") String password)
                                   throws IOException {

            PrintWriter writer = new PrintWriter(new File(FILE_PATH));
            int statusCode = 200;
            // If that email already exists, don't print to file
            if(_userData.containsKey(email))
                statusCode = 400;
            else
                writer.println(email + "," + password);
            writer.close();
            return Response.status(statusCode);
        }
    }
于 2013-06-21T08:03:44.617 に答える