서블릿이란 Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술.
웹을 만들때는 다양한 요청(Request)과 응답(Response)이 있고, 이 요청과 응답에는 규칙이 존재한다.(HttpServletRequest, HttpServletResponse)
함수 오버라이딩 = doGet() doPost()
@WebServlet
@는 하나의 기능을 가진 함수와 같은 기능.
HttpServletRequest, HttpServletResponse = http프로토콜을 캡슐화 시킨 객체
HTML안에 Java프로그램을 넣을 수 있는 기능.
Tomcat이 Servlet파일(.java)를 컴퓨터가 인식할 수 있는 .class로 컴파일해준다.
.html, .js, .jsp, .png, .css등은 WebContent폴더 안에 들어간다.(Java Resource폴더에는 들어가지 못한다.)
➡ 자바 문법이 들어가지않기 때문에 웹 브라우저가 해석을 못한다.
.jsp파일은 자바 문법을 삽입할 수 있는 HTML코드 파일.
jsp파일 = <% %> JSP문법이 포함되는 클래스. 자바 문법의 하나.
❗ 웹 브라우저는 자바 코드를 해석할 수 없다.
JSP문법을 사용해 자바 코드를 HTML, Javascript코드로 변환시켜서 response해줘야한다.
➡ .jsp를 servlet파일로 변환하기위해서 PrintWriter객체의 out.println() 을 사용해서 웹 브라우저에 뿌려준다.
구구단을 gugudan.jsp로 짜시오.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
for(int i = 1; i <= 9; i++){
out.println("=====" + i + "단" + "=====<br />");
for(int j = 1; j <= 9; j++){
out.println(i + " * " + j + " = " + (i * j) + "<br>");
//System.out.println(i + " * " + j + " = " + (i * j)); System은 콘솔 창에 출력된다.
}
out.println("<hr>");
}
%>
<%! //!붙이면 변수 선언, 함수를 메모리에 올린다.
int i =10;
String str = "abc";
private int sum(int a, int b){
return a + b;
}
%>
<%out.println("<hr>"); %>
<%= i%><br><!-- =붙이면 out.println()기능, 위의 코드와 같은 기능 -->
<%= str %><br>
<%= sum(1,5) %>
</body>
</html>
grade.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="grade_result.jsp" method="post" > 국어 : <input type="number" name="kor" size=10><br> 영어 : <input type="number" name="eng" size=10><br> 수학 : <input type="number" name="math" size=10><br> <input type="submit" value="전송"> <input type="reset" value="리셋"> </form> </body> </html>
Grade.java
package edu.global.ex.java; public class Grade { private double kor; private double eng; private double math; public Grade(double kor, double eng, double math) { this.kor = kor; this.eng = eng; this.math = math; } public double getSum() { return (kor + eng + math); } public double getAvg() { return getSum() / 3.0; } public char getGrade() { char ch = '가'; double avg = getAvg(); if (avg >= 90) { ch = '수'; } else if (avg >= 80) { ch = '우'; } else if (avg >= 70) { ch = '미'; } else if (avg >= 60) { ch = '양'; } else { ch = '가'; } return ch; } }
grade_result.jsp
<%@page import="edu.global.ex.java.Grade"%> <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% String getKor = request.getParameter("kor"); String getEng = request.getParameter("eng"); String getMath = request.getParameter("math"); double kor = Double.valueOf(getKor); double eng = Double.valueOf(getEng); double math = Double.valueOf(getMath); Grade grade = new Grade(kor, eng, math); %> 총점: <%= grade.getSum() %><br> 평균: <%= grade.getAvg() %><br> 학점: <%= grade.getGrade() %> </body> </html>
Catalina에러 -> JSP개발에서 유명한 에러
E:\utility\apache-tomcat-9.0.73\work\Catalina\localhost\servert_example\org\apache\js
현업에서는 스크립 트릿 별로 안 사용.