JSP 2023.3.27

문우림·2023년 3월 27일
0

JSP

목록 보기
2/4
post-thumbnail

1. Servlet

  • 서블릿이란 Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술.

  • 웹을 만들때는 다양한 요청(Request)과 응답(Response)이 있고, 이 요청과 응답에는 규칙이 존재한다.(HttpServletRequest, HttpServletResponse)

  • 함수 오버라이딩 = doGet() doPost()
    @WebServlet
    @는 하나의 기능을 가진 함수와 같은 기능.

  • HttpServletRequest, HttpServletResponse = http프로토콜을 캡슐화 시킨 객체

Servlet이란

2. JSP(JavaServer Pages)

HTML안에 Java프로그램을 넣을 수 있는 기능.

  • HTML은 정적 프로그램.
    ➡ HTML(클라이언트)을 동적으로 만들기 위해 프로그래밍언어 Javascript(클라이언트 언어)가 존재한다. 서버에 접속을 안하기 때문에 클라이언트 언어라고 한다.

📌HTML을 서버 쪽에서 동적으로 만들어주는 4개의 방법(프레임워크)

  • JSP
  • PHP
  • .NET
  • Node.js

Tomcat이 Servlet파일(.java)를 컴퓨터가 인식할 수 있는 .class로 컴파일해준다.

2-1. WebContent폴더

  • .html, .js, .jsp, .png, .css등은 WebContent폴더 안에 들어간다.(Java Resource폴더에는 들어가지 못한다.)
    ➡ 자바 문법이 들어가지않기 때문에 웹 브라우저가 해석을 못한다.

  • .jsp파일은 자바 문법을 삽입할 수 있는 HTML코드 파일.

2-2. .jsp ➡ servlet파일

  • jsp파일 = <% %> JSP문법이 포함되는 클래스. 자바 문법의 하나.
    ❗ 웹 브라우저는 자바 코드를 해석할 수 없다.

  • JSP문법을 사용해 자바 코드를 HTML, Javascript코드로 변환시켜서 response해줘야한다.
    ➡ .jsp를 servlet파일로 변환하기위해서 PrintWriter객체의 out.println() 을 사용해서 웹 브라우저에 뿌려준다.

3. 스크립트릿

구구단을 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>

4. 국어 영어 수학을 입력(grade.jsp)후 grade_result.jsp 에 총점 평균 학점이 나오도록 짜시오.

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

  • .jsp파일은 완벽한 HTML코드가 아니기 때문에 servlet으로 변환이 될 떄 에러가 날 수 있다. 그럴 때 위의 경로로 jsp파일을 열어 코드를 확인한다.

현업에서는 스크립 트릿 별로 안 사용.

0개의 댓글