2022-코딩 수업 정리
JSP, HTML 활용 코드
lee-coding
2022. 9. 26. 17:45
함수, 변수의 연산
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.util.Date" %>
<%//<%@page import="java.util.Date" 로 Date를 사용할 수 있게 한다 %>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<mata http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>함수, 변수의 연산</title>
</head>
<body>
<%
//지역 변수 선언
Date date=new Date();//Date(날짜, 시간)을 사용할 수 있게 한다.
int hour=date.getHours();//hour은 date에서 시간을 가져온 수
int one=10;
int two=12;
%>
<%! //함수는 변수와 달리 무조건 !를 붙여서 전역변수&함수 선언을 해야한다.
public int operation(int i, int j){
if(i>j) return i;//i>j이면 i값을 반환한다.
else return j;// 아닌 경우 j값을 반환한다.
//return i>j? i: j; ==>삼항 연산자로도 할 수 있다.
}
%>
<p>지금은 <%=hour %>시</p>
<p>오전인가 오후인가?:<%= hour<12? "오전": "오후"%></p>
<%
//hour=현재 시간 출력
//삼항 연산자
//hour이 12보다 작다면 오전 출력, 12보다 크다면 오후 출력
%>
<p><%=one %> or <%=two %> 중 큰 수는 <%=operation(one, two) %></p>
<%
//operation(one, two)을 사용하여 함수를 호출하고 함수 안의 내용을 실행시킨 후 출력한다
%>
</body>
</html>
폼 데이터를 다음 페이지로 전송하기
formtest_input.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>폼 데이터 전송</title>
</head>
<body>
<form action="formtest_output.jsp" name="form" method="post">
<p>
<label for="name">이름:</label><input type="text" name="name" id="name" value="이름을 입력하세요">
</p>
<p><label for="color">좋아하는 색상:</label>
<select name="color" id="color">
<option value="skyblue">하늘색</option>
<option value="red">붉은색</option>
<option value="green">초록색</option>
<option value="yellow">노란색</option>
</select>
</p>
<%//좋아하는 색상 p태그 종료 %>
<p><input type="submit" vlaue="다음 페이지로 전송하기"></p>
</form>
</body>
</html>
formtest_output.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form name="out_form" >
<%
request.setCharacterEncoding("utf-8");//한글 깨짐 방지
String output_name= request.getParameter("name");
String output_color= request.getParameter("color");
String msg;
%>
<p><%= output_name %>님이 좋아하는 색은 <%=output_color %> 입니다.</p>
<%if(output_color.equals("skyblue")){%>
<div style="width:200px; padding:50px; background-color:skyblue"></div>
<%}else if(output_color.equals("red")){%>
<div style="width:200px; padding:50px; background-color:red"></div>
<%}else if(output_color.equals("green")){%>
<div style="width:200px; padding:50px; background-color:green"></div>
<%}else{%>
<div style="width:200px; padding:50px; background-color:yellow"></div>
<%} %>
<%//다른 방식으로 출력해보기 %>
<%
if(output_color.equals("skyblue")){
msg="하늘색";
}
else if(output_color.equals("red")){
msg="붉은색";
}
else if(output_color.equals("green")){
msg="초록색";
}
else{
msg="노란색";
}
%>
<p><%= output_name %>님이 좋아하는 색은 <%=msg %> 입니다.</p>
<div style="width:200px; padding:50px; background-color:<%=output_color%>"></div>
</body>
</html>
html의 태그, JSP를 활용해서 세로로 구구단 출력하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>구구단 출력하기</title>
</head>
<style>
tr, td{
border: 1px solid #444444;
}
</style>
<body>
<table style= "border: 1px solid #eee;">
<tr>
<%for(int i=2; i<=9; i++){%>
<td><%=i %>단</td>
<%}%>
</tr>
<%for (int i=1; i<=9;i++){%>
<tr>
<%for (int j=2; j<=9;j++){%>
<td><%=j %>X<%=i %>=<%=i*j %></td>
<%}%>
</tr>
<%}%>
</table>
</body>
</html>
에러 발생 페이지
DirectivePage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
import="java.util.*"
errorPage="DirectivePage_error.jsp"
%>
<%//errorPage="DirectivePage_error.jsp"로 에러가 났을 경우 에러 발생 페이지로 연결한다 %>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Page 디렉티브: Directive</title>
</head>
<body>
에러 발생 페이지 테스트
<br>
<% Date date=new Date(); //현재 시간을 알 수 있는 date 가져오기%>
<%=date.toLocaleString() %>
<% out.flush();
int one=1;
int zero=0;
%>
<br>
<%=1/0%>
<%//일부러 사용한 에러 코드 %>
<%//에러가 발생하면 에러가 발생한 위치의 아래쪽에 에러 페이지를 붙인다 %>
</body>
</html>
DirectivePage_error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
에러 발생!!
</body>
</html>
html에서 JSP를 사용하여 배열 사용
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>배열 사용</title>
</head>
<body>
<table style="border: 1px solid #eee; width:300px; height: 150px" >
<%
String[] arry={"java","jsp","html"};
for(int i=0;i<arry.length;++i){
%>
<tr>
<td><%=i %></td>
<td><%=arry[i] %></td>
</tr>
<%} //for문의 end %>
</table>
</body>
</html>
JSP 변수 초기값
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>변수 초기값</title>
</head>
<body>
<%!//전역변수 선언
int one;//선언부에서는 초기값을 지정하지 않아도 0으로 자동 초기화
//단, 스크립트릿에서는 초기화값을 적어야한다
int two=1;
public int plusMethod(){
return one+two;
}
String msg;//String은 초기값이 null이다
int three;
%>
<p>plusMethod() 함수의 값은? :<%=plusMethod() %></p>
<p>String msg의 값은?:<%=msg%></p>
<p>int three의 값은?:<%=three%></p>
</body>
</html>
JAVA, HTML, JSP 연동
JAVA
package prtClass;
public class Cal {
public static String cmdPrt(int num1, int num2) {
int result=num1+num2;
return "홍길동은 "+result+"살 입니다.";
}
}
패키지 명
prtClass
클래스 명
Cal
매소드 명
cmdPrt
html
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="prtClass.*" %>
<%//(패키지명).* 으로 패키지에 있는 class import 하기%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String strMsg;
strMsg=Cal.cmdPrt(10,5);//클래스명.매소드명(넣어야하는 변수)로 호출
out.println(strMsg);
%>
</body>
</html>
include 활용하여 페이지 만들기
include 폴더 안에 위치한 header.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<style>
header{padding:50px; background-color: #000;color:#fff;}
</style>
<body>
<article>
<header>
<p>이곳은 로고 및 메뉴가 위치하는 곳입니다.</p>
</header>
</article>
</body>
</html>
include 폴더 안에 위치한 footer.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<style>
footer{padding:50px; background-color: #000;color:#fff;}
</style>
<body>
<article>
<footer>
Korea
</footer>
</article>
</body>
</html>
include.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
#container{padding:1px; background-color: #ccc;color:#fff;}
</style>
</head>
<body>
<%@ include file="/include/header.jsp" %>
<jsp:include page="include/header.jsp"></jsp:include>
<%// include를 같은 결과를 가지는 다른 방식으로 사용. %>
<%// 출력하고자 하는 jsp 파일인 include.jsp와 다른 파일에 있기 때문에 경로를 표시하여 연결한다%>
<div id="container">이곳은 내용이 포함되는 부분입니다</div>
<%@ include file="/include/footer.jsp" %>
</body>
</html>