[web]簡易ホームページの作成


簡易ホームページの作成


会員加入,登録,ログアウト,修正,脱退機能を持つページを作成した.
  • ログインが成功すると、セッションを使用してログイン状態の接続が維持され、ログアウト時にセッションが削除されます.
  • 会員情報を確認し、会員情報を修正し、会員を脱退し、ログイン結果ページはログイン後のみ使用できます.
  • 会員登録ページ


    <クライアント>

    <サーバ>
    private void memberInsert(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	String userid=request.getParameter("userid");
    	String password=request.getParameter("password");
    	String email=request.getParameter("email");
    	String emailAgree=request.getParameter("emailAgree");
    	String[] interest=request.getParameterValues("interest"); 
    	String phone=request.getParameter("phone");
    	String introduce=request.getParameter("introduce");
    		
    	MemberVO vo=new MemberVO(userid, password, email, emailAgree, phone, introduce, interest);
    	System.out.println(CLASSNAME+" "+ vo);
    		
    	int result=dao.insert(vo);
    	System.out.println(CLASSNAME+" 저장 결과 : "+result+"행이 삽입되었습니다.");
    		
    	if(result==1) { 
    		out.print("<head><meta charset='UTF-8'>");
    		out.print("<script>alert('회원가입 성공!');</script>");
    		out.print("<script>location.href='login.jsp';</script>")
    		out.print("</head>");
    	}
    }//end memberInsert()
    データベースに配列を格納できません.配列内のデータをデータベースに格納するには、join()で,に接続し、文字列に変更します.
    public String getInterestJoin() {
    	String result=(interest==null)? "없음" : String.join(",", interest);
    	return result;
    }
    逆に、DBからデータをインポートする場合は、配列形式で再使用する必要があります.split()は、,を基準に並べられています.
    String interstJoin=rs.getString(COL_INTEREST);
    String[] interest=interstJoin.split(",");

    ログインページ


    <クライアント>
    <form action="login_auth.do" method="post">
      <p>아이디<br><input type="text" name="userid" required placeholder="아이디 입력"></p>
      <p>비밀번호<br><input type="password" name="password" required placeholder="비밀번호 입력"></p>
      <p><a href="member-register.jsp"><input type="button" value="회원 가입"></a>
      &nbsp;<input type="submit" value="로그인"></p>
    </form>
    フォームからのID/パスワード入力の取得
    <サーバ>
    private void memberLogin(HttpServletRequest request, HttpServletResponse response) throws IOException {
    	PrintWriter out=response.getWriter();
    	
    	String userid=request.getParameter("userid");
    	String password=request.getParameter("password");
    
    	String idConfirm=dao.select(userid, password);
    	if(idConfirm!=null) {
    		HttpSession session=request.getSession(); //세션 생성
    		session.setAttribute("userid", idConfirm);
    		session.setMaxInactiveInterval(60);
    		System.out.println(CLASSNAME+" "+idConfirm +" session 생성"); 
    		out.println("<script>location.href='/Homepage/login-result.jsp';</script>");
    	}else {
    		out.println("<script>alert('아이디와 비밀번호가 잘못 입력되었습니다.');</script>");
    		out.println("<script>location.href='/Homepage/login.jsp';</script>");
    	}		
    }//end memberLogin()
    データベースのid/pwが一致すると、正常にログイン結果ページに移動します.
    ログイン時にセッションを作成し、60秒のログイン状態id値を保持
    ログイン結果が一致しない場合は、「再ログイン」ページに移動します.

    ログアウト

    PrintWriter out=response.getWriter();
    HttpSession session=request.getSession();
    String userid=(String)session.getAttribute("userid");
    		
    if(userid!=null) {
    	session.removeAttribute("userid");
    	out.println("<script>alert('로그아웃 했습니다.');</script>");
    	out.println("<script>location.href='/Homepage/login.jsp';</script>");
    }else {
    	out.println("<script>alert('로그인 해주세요!');</script>");
    	out.println("<script>location.href='login.jsp';</script>");
    	return;
    }
    formのpost形式でデータを転送する場合は、get形式でアクセスするのはエラーアクセスであることを示すべきです.
    urlアクセス時にパスを変更してセキュリティを確保
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	System.out.println(CLASSNAME+" doGet() 호출");
    	response.sendRedirect(클라이언트 주소);
    }

    urlにデータを送信


    formを使用せずにGETでデータを転送するにはurlを使用します.
    会員情報の表示、会員情報の変更、会員の脱退、ログイン結果ページは、該当ページにログイン情報を送信する必要があります.
    セッションを使用してログ情報を維持することもできますが、urlにidデータを含める方法で移動することもできます.<button onclick="location.href='update.do?userid=<%=userid%>'">회원정보 수정</button>get方式でデータを送信するサーバはdoPost()メソッドを使用しません.String userid=request.getParameter("userid");rourlに含まれるデータを使用できます.

    「メンバー情報の変更」ページ



    会員の入金とサーバーの動作はほぼ同じです

    フィルタの使用


    PrintWriterクラスを使用するたびにout.print("<head><meta charset='UTF-8'>");を使用するのではなく、response.setContentType("text/html;charset=utf-8");をfilterに登録し、スクリプトコードを直接作成できます.
    フィルタを使用してログイン接続を維持することもできます.
    すべてのコードにセッションがあるかどうかを検証することから始めますが、すべてのurlが最初に同じセッションチェックを実行すると、ファイルで設定してurlに適用できます.
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    	HttpServletRequest req=(HttpServletRequest)request;
    	//하위request클래스로 받아옴
    	HttpSession session=req.getSession();
    	String userid=(String)session.getAttribute("userid");
    	
    	if(userid==null) {
    		//userid 세션이 없는 경우 미로그인 상태
    		HttpServletResponse res=(HttpServletResponse)response;
    		res.sendRedirect("/Homepage/login.jsp");
    		return;
    	}
    	chain.doFilter(request, response);
    }
    セッションが存在するかどうかを確認するコードをフィルタとして指定し、セッションが存在する必要があるページurlに接続します.
    url接続はweb.xmlから!セッション・メンテナンスは、両方のクライアント・サーバに適用する必要があります.

    に感銘を与える


    拙作の時は、フロントが適任かと思いました.しかし、私がWeb開発を真剣に勉強していたとき、私は...フロント...絶体絶命、自白終了!👏
    公費はもう3か月になった.
    これは個人が単位のために無名の4年間よりも有益だ.
    今まで学んだことを使っていても他の人が见ると面白いですが….中秋節の連休はよく休んで、残りの3ヶ月も行ってみましょう.