[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>
<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ヶ月も行ってみましょう.
Reference
この問題について([web]簡易ホームページの作成), 我々は、より多くの情報をここで見つけました https://velog.io/@yeddoen/web-간단-홈페이지-제작テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol