-
[JSP] servlet, action tag formWEB/JSP 2022. 9. 9. 19:08
servlet
예전 자료처리 방식
-정보입력 페이지(jsp) → 정보처리페이지(jsp) → 처리결과페이지(jsp)
-주로 윈도우 서버(Window NT)에서 ASP 언어를 사용할 때 많이 사용하던 방식
다른 방식으로 JAVA&JSP로 넘어오면서 자바 프로그램 코드가 실행가능해지는 WAS 서버를 사용하고 이 서버에서는 정보처리페이지(jsp)를 사용하지 않는 대신 Servlet이라는 웹용 클래스(서버에 생성하고 서버에서 실행하는)를 생성하여 정보 처리 명령을 실행하게함
-서블릿을 사용한다는 의미는 앞선 예제(081~083, 071~073)의 XXX_do.jsp 파일의 역할을 서버 내부에 감춰져서 공개되지 않을 웹클래스를 일임하는 것과 같음
-프로그래밍 명령등의 로직과 알고리즘이 공개되는 것이 부담스럽거나 자료이동을 감추고 싶다면 위와 같은 서블릿에 그 동작을 일임하듯 이름 불러 사용함. Forward_useServlet: 서블릿 이름
-사용할 서블릿의 위치는 파일들이 저장되는 최상단 위치한 것으로 인식하기 때문에 현재 페이지에서의 상대 위치는 (../)로 연결하여 지정함
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>101_Forward_UseServlet.jsp</title> </head> <body> <form method="post" action="../Forward_useServlet"> <label for="useid">아이디: </label> <input type="text" id="id" name="useid"><br> <label for="usepwd">암 호: </label> <input type="password" id="pwd" name="usepwd"><br> <input type="submit" value="로그인"> </form> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>102_Forward_UseServlet_ok.jsp</title> </head> <body> <h1><%=request.getAttribute("name") %>님 로그인하셨습니다.</h1> <h1>저희 사이트에 방문해 주셔서 감사합니다</h1> </body> </html>
Servlet 파일 생성
package com.forward.servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/Forward_useServlet") public class Forward_useServlet extends HttpServlet { private static final long serialVersionUID = 1L; public Forward_useServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // form에서 get 방식으로 서블릿으로 이동되었을 때 // 실행될 명령이 적힘 } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // form에서 post 방식으로 서블릿으로 이동되었을 때 // 실행될 명령이 적힘 // doGet(request, response); // 서블릿을 호출할 때 방식이 post이든 get이든 // 실행할 명령이 똑같다면 doGet에 코드를 쓰고 // doPost에서는 doGet을 재호출해서 사용함 // 전달된 파라미터에 한글이 있다면 // 또는 다시 내보내질 데이터에 한글이 있다고 인코딩 방식을 설정함 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); // 전달된 파라미터 변수에 저장 String id=request.getParameter("id"); String pwd=request.getParameter("pwd"); if(id.equals("hong")&&pwd.equals("1234")) { request.setAttribute("name", "홍길동"); RequestDispatcher dp =request.getRequestDispatcher("02/102_Forward_UseServlet_ok.jsp"); dp.forward(request, response); }else { response.sendRedirect("02/101_Forward_UseServlet.jsp"); // 아이디와 암호가 틀리면 리셋됨 } } }
servlet을 이용하여 회원정보 입력
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>111_JSP_Servlet_Ex01.jsp</title> </head> <body> <form method="post" action="../Join_Servlet"> <label for="id">아이디: </label> <input type="text" id="id" name="id"><br> <label for="pwd">암 호: </label> <input type="password" id="pwd" name="pwd"><br> <label for="gender">성별: </label> <input type="radio" id="gender" name="gender" value="남자"> 남자 <input type="radio" id="gender" name="gender" value="여자"> 여자 <br><br> <label for="chk_mail"> 메일 정보 수신 여부: </label> <input type="radio" id="chk_mail" name="chk_mail" value="수신">수신 <input type="radio" id="chk_mail" name="chk_mail" value="거부">거부<br><br> <label for="content"> 간단한 가입 인사를 적어주세요. </label><br> <textarea name="content" rows="3" cols="35"></textarea><br><br> <label for="item">구입항목</label><br><br> <input type="checkbox" name="item" value="신발"> 신발 <input type="checkbox" name="item" value="가방"> 가방 <input type="checkbox" name="item" value="벨트"> 벨트 <br> <input type="checkbox" name="item" value="모자"> 모자 <input type="checkbox" name="item" value="시계"> 시계 <input type="checkbox" name="item" value="쥬얼리"> 쥬얼리 <br><br> <span style="float:left; margin-right:20px"> <label for="job">직업</label> <select id="job" name="job" size="1"> <option value="">선택</option> <option value="학생">학생</option> <option value="컴퓨터/인터넷">컴퓨터/인터넷</option> <option value="언론">언론</option> <option value="공무원">공무원</option> <option value="군인">군인</option> <option value="서비스업">서비스업</option> <option value="교육">교육</option> </select> </span> <label for="interest" style="float:left;">관심분야</label><br> <select id="interest" name="interest" size="5" multiple="multiple"> <option value="1">에스프레소</option> <option value="2">로스팅</option> <option value="3">생두</option> <option value="4">원두</option> <option value="5">핸드드립</option> </select><br><br> <input type="submit" value="회원가입"> </form> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>112_JSP_Servlet_Ex02.jsp</title> </head> <body> <% String id=(String)request.getParameter("id"); String pwd=(String)request.getParameter("pwd"); String gender=(String)request.getParameter("gender"); String chk_mail=(String)request.getParameter("chk_mail"); String content=(String)request.getParameter("content"); String [] item=(String[])request.getParameterValues("item"); // 배열로 저장 String job=(String)request.getParameter("job"); String interest []=(String[])request.getParameterValues("interest"); %> 아이디: <%=id %><br/> 암호: <%=pwd %><br/> 성별: <%=gender %><br/> 메일수신: <%=chk_mail %><br/> 하고싶은말: <%=content %><br/> 구입항목: <% for(String s: item) out.print(s+" "); %><br/> 직업: <%=job %><br/> 관심분야: <% for(String s: interest) out.print(s+" "); %><br/> </body> </html>
package com.join.servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/Join_Servlet") public class Join_Servlet extends HttpServlet { private static final long serialVersionUID = 1L; public Join_Servlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); String id=request.getParameter("id"); String pwd=request.getParameter("pwd"); String gender=request.getParameter("gender"); String chk_mail=request.getParameter("chk_mail"); String content=request.getParameter("content"); String [] item= request.getParameterValues("item"); // 배열로 저장 String job=request.getParameter("job"); String [] interest = request.getParameterValues("interest"); request.setAttribute("id",id); request.setAttribute("pwd",pwd); // if(Integer.parseInt(gender)==1) // request.setAttribute("gender", "남성"); if(gender.equals("1")) request.setAttribute("gender", "남성"); else request.setAttribute("gender", "여자"); if(chk_mail.equals("1")) request.setAttribute("chk_mail", "수신"); else request.setAttribute("chk_mail", "거부"); request.setAttribute("content",content); // item 처리 // 선택된 번호에 따른 물건 이름이 저장될 배열을 전달된 배열의 크기와 같은 크기로 생성함 String [] sItem=new String[item.length]; for(int i=0; i<item.length; i++) { switch(item[i]) { case "1": sItem[i]="신발"; break; case "2": sItem[i]="가방"; break; case "3": sItem[i]="벨트"; break; case "4": sItem[i]="모자"; break; case "5": sItem[i]="시계"; break; case "6": sItem[i]="쥬얼리"; break; } } request.setAttribute("item",sItem); switch(job) { case "1": request.setAttribute("job","학생"); break; case "2": request.setAttribute("job","컴퓨터/인터넷"); break; case "3": request.setAttribute("job","언론"); break; case "4": request.setAttribute("job","공무운"); break; case "5": request.setAttribute("job","군인"); break; case "6": request.setAttribute("job","서비스업"); break; case "7": request.setAttribute("job","교육"); break; } String [] inter=new String[interest.length]; for(int i=0; i<interest.length; i++) { switch(interest[i]) { case "1": inter[i]="에스프레소"; break; case "2": inter[i]="로스팅"; break; case "3": inter[i]="생두"; break; case "4": inter[i]="원두"; break; case "5": inter[i]="핸드드립"; break; } } request.setAttribute("interest",inter); RequestDispatcher dp=request.getRequestDispatcher("02/112_JSP_Servlet_Ex02.jsp"); dp.forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
action tag form
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>121_ActionTagForm.jsp</title> </head> <body> <form action="122_ActionTag_do.jsp"> 아아디: <input type="text" name="userID"><br> 암 호: <input type="password" name="userPwd"><br> <input type="radio" name="loginCheck" value="user" checked="checked"> 사용자 <input type="radio" name="loginCheck" value="manager"> 관리자<br> <input type="submit" value="회원가입"> </form> </body> </html>
1. respose.sendRedirect로 사용한 경우
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.net.URLEncoder" %> <% String userID=request.getParameter("userID"); String userPwd=request.getParameter("userPwd"); String loginCheck=request.getParameter("loginCheck"); // 사용자 로그인일 경우...123_ActionUser.jsp로 이동 // 관리자 로그인일 경우...124_ActionManager.jsp로 이동 if(userID.equals("scott")&&userPwd.equals("1234")&&loginCheck.equals("user")){ response.sendRedirect( "123_ActionUser.jsp?userID="+userID+"&userName="+URLEncoder.encode("홍길남","UTF-8") ); } else if(userID.equals("scott")&&userPwd.equals("1234")&&loginCheck.equals("manager")){ response.sendRedirect( "124_ActionManager.jsp?userID="+userID+"&userName="+URLEncoder.encode("홍길동","UTF-8") ); } else{ response.sendRedirect("121_ActionTagForm.jsp"); } %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>123_ActionUser.jsp</title> </head> <body> <h3>사용자로 로그인 성공</h3> <% String userName=request.getParameter("userName"); %> <%=userName %> ( <%=request.getParameter("userID") %> )님 환영합니다. </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>124_ActionManager</title> </head> <body> <h3>관리자로 로그인 성공</h3> <% String userName=request.getParameter("userName"); %> <%=userName %> ( <%=request.getParameter("userID") %> )님 환영합니다. </body> </html>
2. forward를 사용한 경우
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.net.URLEncoder" %> <% String userID=request.getParameter("userID"); String userPwd=request.getParameter("userPwd"); String loginCheck=request.getParameter("loginCheck"); String url=null; if(userID.equals("scott")&&userPwd.equals("1234")&&loginCheck.equals("user")){ url="123_ActionUser.jsp"; request.setAttribute("userName","홍길남"); RequestDispatcher dp=request.getRequestDispatcher(url); dp.forward(request, response); } else if(userID.equals("scott")&&userPwd.equals("1234")&&loginCheck.equals("manager")){ url="124_ActionManager.jsp"; request.setAttribute("userName","홍길동"); RequestDispatcher dp=request.getRequestDispatcher(url); dp.forward(request, response); } else{ response.sendRedirect("121_ActionTagForm.jsp"); } %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>123_ActionUser.jsp</title> </head> <body> <h3>사용자로 로그인 성공</h3> <% String userName=(String)request.getAttribute("userName"); %> <%=userName %> ( <%=request.getParameter("userID") %> )님 환영합니다. </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>124_ActionManager</title> </head> <body> <h3>관리자로 로그인 성공</h3> <% String userName=(String)request.getAttribute("userName"); %> <%=userName %> ( <%=request.getParameter("userID") %> )님 환영합니다. </body> </html>
3. Action 태그를 사용한 경우
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.net.URLEncoder" %> <% String userID=request.getParameter("userID"); String userPwd=request.getParameter("userPwd"); String loginCheck=request.getParameter("loginCheck"); if(userID.equals("scott")&&userPwd.equals("1234")&&loginCheck.equals("user")){ %> <jsp:forward page="123_ActionUser.jsp"> <jsp:param name="userName" value='<%=URLEncoder.encode("홍길남","UTF-8") %>'/> </jsp:forward> <% } else if(userID.equals("scott")&&userPwd.equals("1234")&&loginCheck.equals("manager")){ %> <jsp:forward page="124_ActionManager.jsp"> <jsp:param name="userName" value='<%=URLEncoder.encode("홍길동","UTF-8") %>'/> </jsp:forward> <% } else{ response.sendRedirect("121_ActionTagForm.jsp"); } %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.net.URLDecoder" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>123_ActionUser.jsp</title> </head> <body> <h3>사용자로 로그인 성공</h3> <% String userName=URLDecoder.decode(request.getParameter("userName"),"UTF-8"); %> <%=userName %> ( <%=request.getParameter("userID") %> )님 환영합니다. </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.net.URLDecoder" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>124_ActionManager</title> </head> <body> <h3>관리자로 로그인 성공</h3> <% String userName=URLDecoder.decode(request.getParameter("userName"),"UTF-8"); %> <%=userName %> ( <%=request.getParameter("userID") %> )님 환영합니다. </body> </html>
결과
'WEB > JSP' 카테고리의 다른 글
[JSP] session을 이용한 loginform (0) 2022.09.09 [JSP] cookie, session, removeAttribute (0) 2022.09.09 [JSP] login form, forward form, server object (0) 2022.09.09 [JSP] variable, import, request, include (0) 2022.09.09 [JSP] table, calendar, operator, declare (0) 2022.09.09