요르딩딩
Servlet&JSP 프로그래밍 (36강 ~ 45강) 본문
728x90
반응형
[36. 계산기 서블릿 완성하기]
@Webservlet("/calcpage") public class Calc extend... protected void service(HttpServletRequest request...){ Cookie[] cookies = request.getCookies(); String exp ="0"; if(cookies != null) for(Cookie c : cookies) if(c.getName().equals("exp")) { exp =c.getValue(); break; } /// out.write("~~~ exp"); out.write("<form action=/calc3\" method=\"post\">}); // 호출 ...
@WebServlet("/calc3") public class Calc3 extend HttpServlet { protected void service(HttpServlet ~): Cookie[] cookies = request.getCookies(); String value = request.getParameter("value"); String operator = request.getParameter("operator"); String dot = request.getParameter("dot"); // 쿠키 읽어오기 String exp = ""; if(cookies != null) for(Cookie c : cookies) if(c.getName().equals("exp")) { exp =c.getValue(); break; } ... exp += (value == null)? "" : value; exp += (operator == null)? "" : operator; exp += (dot == null)? "" : dot; Cookid expCookie = new Cookie("exp", exp); response.addCookie(expCookie); response.sendReditrect("calcpage"); // 위치가 같기때문에 경로로 안해도됨.
[37. 쿠키 삭제하기]
- expCookie.setMaxAge(0); // 쿠키 지우는 방법
Cookid expCookie = new Cookie("exp", ""); expCookie.setMaxAge(0); // 쿠키 지우는 방법
[38. GET과 POST에 특화된 서비스 함수]
- @WebServlet("/calc") // GET, POST 둘다 호출할 수 있습니다.
- req.getMethod() : html의 form에서 보낸 method를 읽을 수 있습니다.
- init() -> service(...) -> doGet(...) OR doPoset(...)
: do함수를 못찾으면 405Error 발생 -> do메소드 오버라이드 해주면 정상
[html]
<!DOCTYPE> <html> ... <body> <form action ="calc" method="POST"> <input type ="submit" value=""> </form> </body> </html>
[controller]@WebServlet("/calc") public ... (HttpServletRequest req ...){ if(req.getMethod().equals.("GET"){ ... } else if(req.getMethod().equals.("POST"){ ... } super.service(req, resp); // 요청에따른 do함수를 찾는다. *** 못찾을시 405Error 발생 } @Override Protected void doGet(HttpServlet req, ...){ // 이부분을 추가하면 405에러 안남. 로그 } @Override Protected void doPost(HttpServlet req, ...){ // 이부분을 추가하면 405에러 안남. 로그 } }
[controller : 공통부분 없애서 최적화]@WebServlet("/calc") public ... (HttpServletRequest req ...){ @Override Protected void doGet(HttpServlet req, ...){ // 이부분을 추가하면 405에러 안남. 로그 } @Override Protected void doPost(HttpServlet req, ...){ // 이부분을 추가하면 405에러 안남. 로그 } }
[39. 계산기 프로그램 하나의 서블릿으로 합치기]
- 하나의 url로 get, post 둘다 처리가능합니다.
- 추가로 sendRedirect를 통해 자기자신을 다시 호출할 수도 있으며, 특정url만 쿠키를 받도록 setPath()도
지정할 수 있습니다.
@WebServlet("/calc") public ... (HttpServletRequest req ...){ @Override Protected void doGet(HttpServlet req, ...){ // 이부분을 추가하면 405에러 안남. // Calculator.java 내용 가져오기 } @Override Protected void doPost(HttpServlet req, ...){ // 이부분을 추가하면 405에러 안남. // Calc3.java 내용 가져오기 } }
[40. JSP 시작하기 (Jasper를 이용한 서블릿 프로그래밍)]
- calculator.jsp 생성
- ${ } : 단순 html파일과는 다르게 jsp파일은 값을 계산해서 보여줄 수 있다.
- 배포하게되면, tomcat의 home 디렉토리에 넣야하는데, 이클립스 같은 경우는 Server Path에 임시 배포디렉토리를 사용한다. (왜냐 서버를 다양하게 사용할 수 있어야하니깐 임시를 만들어서 사용한다.)
- Jasper :JSP파일을 write함수가 붙은 서블릿코드(java)로 만들어준다
즉, html에 동적기능을 적용하려면 java파일로 만들어야하는데, html을 java파일로 만드는것은 공수가 큼.
그렇기떄문에 jsp파일은 html에 동적인 기능(java코드)을 추가하였고, 그러므로 컴파일이 필요하고, 컴파일을 통해 java파일/class파일로 만들어주는 역할을함.
- 코드블록 : <% %>
[jsp파일]
<% int x = 3; inㅅ y = 4; %> <!DOCTYPE html> ... <html>
[41. JSP의 코드블록]
- 코드블록의 종류
1. 출력코드 : 환영합니다.
2. 코드블록 : <% %>
3. y의 값은: <%= y%>
4. 선언부 : <%! public int sum(int a, int b) { return a + b; } %>
5. 초기 설정을 위한 Page 지시자 : <%@ page language="java" contentTye = "text.html; charset=UTF-8" pageEncoding="UTF-8" %>
[42. JSP 내장객체 간단히 알아보기]
- 내장객체 : Jasper가 만들어낸 서블릿안에 있는 미리 선언된 변수
- request : HttpServletRequest
- response : HttpServletResponse
- out : javax.servlet.jsp.JspWriter
- session : javax.servlet.http.HttpSession
- application : javax.servlet.ServletContext
[43. JSP로 만드는 Hello 서블릿]
[코드블록 사용 1]
<%@ page ...> .. <body> <% for (int i=0; i<10; i ++){ %> // 한줄마다 <% %> 선언 필요 안녕 <br> <% } %> // 한줄마다 <% %> 선언 필요 </body>
[코드블록 사용 2]
<%@ page ...> <% // 코드블록 String cnt_ = request.getParameter("cnt"); int cnt = 100; if(cnt_ !=null && !cnt_.equals("")) cnt =Integer.parseInt(cnt_); %> .. <body> <% for (int i=0; i<cnt; i ++){ %> // 한줄마다 <% %> 선언 필요 안녕 <br> <% } %> // 한줄마다 <% %> 선언 필요 </body>
[44. 스파게티 코드를 만드는 JSP]
- 호출 : http://127.0.0.1:8080/spag.jsp?n=3
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <% int num =0; String num = request.getParamter("n"); if(num != null && !num_.equals("")) num = Integer.parseInt(num_); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> Insert title here </title> </head> <body> <% if(num%2 != 0) { %> 홀수 입니다. <% } %> <% else {%> 짝수 입니다. <% } %> </body> </html>
[45. JSP MVC model1]
- 코드에 대한 블록을 최소화 하자
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> // 입력과 제어를 담당: Controller (자바코드)** <% String num = request.getParamter("n"); if(num%2 != 0) model = "홀수"; else model = "짝수"; %> // 출력데이터 : Model** // 출력 담당 : View (HTML코드)** <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> Insert title here </title> </head> <body> <%=model%>입니다. </body> </html>
728x90
반응형
'[강의] > [서블릿 JSP 강의] (뉴렉처)' 카테고리의 다른 글
Servlet&JSP 프로그래밍 (57강 ~ 67강) (0) | 2024.09.30 |
---|---|
Servlet&JSP 프로그래밍 (46강 ~ 55강) (0) | 2024.09.11 |
Servlet&JSP 프로그래밍 (26강 ~ 35강) (0) | 2024.08.09 |
Servlet&JSP 프로그래밍 (15강 ~ 25강) (1) | 2024.06.07 |
Servlet&JSP 프로그래밍 (04강 ~ 14강) (0) | 2024.06.05 |
Comments