JSP

Java의 웹서버 프로그램 스팩(서블릿)으로 변환되어 서비스된다.

장점
1) 서블릿보다 쉽고, 빠르다
2) 디자인부분과 로직 부분을 분리시킬 수 있다.
3) 프로그래머가 직접 코딩한 Servlet보다 최적화된 Servlet을 생성시켜 효율적인 코드가 만들엊니다.
4) JavaBeans의 사용이 쉽다.
5) 웹애플리케이션 상에서 변수의 유효범위 설정이 쉽다.

기본 사용 방법
 1) 지시어 요소(Directive Element) 
   ex]  <%@ page %> 
  2)스크립팅 요소(Scripting Element) 3
     [1]선언(declaration) <%!자바코드%>
     [2]스크립트렛(scriptlet) <%자바코드%>
     [3]식(expression)<%=자바코드%> 
  3) JSP액션 요소(JSP표준 태그)
         <jsp:태그명></jsp:태그명> 

<%@page contentType=" text/html; charset=UTF-8" %> <!-- directive -->
<%@ page import="java.util.*" %>
<!-- page directive -->
<h1>ex01.jsp</h1>
<!-- 1.HTML주석 : html영역에는 html주석을 달 수 있다. -->

<%
//scriptlet태그 : 이 안에는 자바 코드를 기술할 수 있다.
/*2.자바 주석 스크립트렛 태그 안에서는 자바 주석을 달 수 있다.*/
	for(int i =0;i<5;i++){		
%>
<h2 style='color:blue'>Hello JSP~~</h2>
<% 
	}
%>	
<hr color='red'>
<%
	for(int i=0;i<3;i++){
		out.println("<h1>안녕 JSP</h1>");//out : 내장객체 JspWriter타입의 스트림
	}
%>

<h1>구구단</h1>
<%
	Date today= new Date();
	out.println("<h1>"+today.toString()+"</h1>");
%>
<h1 style='color:tomato'><%=today.toString()%></h1>
<%-- <%=%>출력식(expression) 변수나 메소드가 반환하는 값을 출력하고자 할 때 사용 --%>

<%! //선언문 (declaration) : 멤버변수를 선언하거나 사용자 정의 메소드를 만들때 사용
	String global="멤버변수";
	
	public String sum(int a, int b){
		return a+"+"+b+"="+(a+b);
	}
%>

<%
	String local ="지역변수"; //criptlet태그 안에서 변수를 선언하면 지역변수
%>
<h1>global: <%=global %></h1>
<h1>local: <%=local %></h1>

<h1>sum: <%=sum(3,4) %></h1>
<!--구구단 8단 출력하기-->
<table style="border:1px solid"><tr>
<% 
	for(int i=1;i<=9;i++){
		out.println("<td>"+8+"x"+i+"="+8*i+"</td>");
	}
%>
</tr></table>


Error처리
myerror.jsp가 Internet Explorer에서 작동하기 위해서는
512바이트 이상이 되어야한다.
ArithmeticError

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ page info="Copyright by chan" buffer="4kb" isThreadSafe="false" %>
<%@ page import = "java.util.*, java.text.*" %>
<%@ page errorPage="myerror.jsp" %>

<%
	//IE의 경우 브라우저 자체적으로 에러 처리를 하려고 함. 따라서 아래와 같이 기술
	response.setStatus(200);
%>
<h1>JSP에서 error처리 방법을 살펴봅시다.</h1>
<%
	Date d= new Date();
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
	String str = sdf.format(d);
%>

<h1><%=str%></h1>
<h2><%=this.getServletInfo() %></h2>
<%= 10/0%>

myerror.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ page isErrorPage="true"%>
<%-- 에러를 처리할 페이지에서는 반드시 <%@ page isErrorPage="true"%> 를 주어야한다.--%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>myerror.jsp</title>
<style>
	.wrap{
		width:90%;
		margin:auto;
	}
	.err{
		width:70%;
		background-color: #efefef;
		color:red;
		height:250px;
		text-aligh:center;
		margin:auto;
		padding:10px;
	}
</style>
<meta name="dummy1" content="에러페이지 에러페이지 에러페이지 에러페이지 에러페이지 에러페이지 에러페이지"/>
<meta name="dummy2" content="에러페이지 에러페이지 에러페이지 에러페이지 에러페이지 에러페이지 에러페이지"/>
<meta name="dummy3" content="에러페이지 에러페이지 에러페이지 에러페이지 에러페이지 에러페이지 에러페이지"/>
<meta name="dummy4" content="에러페이지 에러페이지 에러페이지 에러페이지 에러페이지 에러페이지 에러페이지"/>

</head>
<body>
	<div class="wrap">
		<div class="err">
			<h1>Server error: <%=exception.getMessage()%></h1>
			<% exception.printStackTrace(); %>
		</div>
	</div>
</body>
</html>

include

include지시어는 특정 페이지를 포함시키고자 할 때 사용
include지시어를 이용하면 포함시킬 페이지의 소스코드를 삽입하는 형태로 포함

include지시어는 ex03.jsp페이지 파일의 소스를 현재 위치(ex05.jsp) 파일에 삽입시킨 뒤, 해당 jsp파일을 서블릿 파일로 변환하고 컴파일
하는 방식이다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- ex05_includeDirective.jsp -->
<h1>include 지시어</h1>
<h2>현재 페이지는 ex05.jsp페이지</h2>

<hr color="red">
<%@ include file="ex03.jsp"%>

include action
include 액션은 소스를 포함시키는 방식이 아니라, 실행 결과를 포함시키는 방식
jsp프름을 ex03.jsp로 이동시켜 그 실행 결과물을 현재 위치에 포함

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- ex06include.jsp -->
<body style="padding:3em">
	<h1>inlcude 액션을 이용해 구구단 페이지를 포함</h1>
	<hr color="red">
	<jsp:include page="ex03.jsp"/>
</body>

홈페이지 연습
top과 foot영역은 공통 영역이므로 나눠서 관리할 수 있다.
index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- index.jsp -->
<jsp:include page="top.jsp"/>
	<h1>Index page</h1>
<jsp:include page="foot.jsp"/>

top.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MyHome</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
	<div class="jumbotron text-center" style="margin-bottom:0">
		<h1>MyHome Page</h1>
		<p>Welcome to MyHome Page</p>
	</div>
	<!-- navbar -->
	<nav class="navbar navbar-expand-sm bg-primary navbar-dark">
	  <ul class="navbar-nav">
	    <li class="nav-item active">
	      <a class="nav-link" href="index.jsp">Home</a>
	    </li>
	    <li class="nav-item">
	      <a class="nav-link" href="/MyWeb/member/signup.jsp">SignUp</a>
	    </li>
	    <li class="nav-item">
	      <a class="nav-link" href="/MyWeb/login/signin.jsp">SignIn</a>
	    </li>
	    <li class="nav-item">
	      <a class="nav-link" href="/MyWeb/member/members.jsp">Members</a>
	    </li>
	  </ul>
	</nav>
	<!-- navbar  -->
	<div class="container" style="margin-top:30px;margin-bottom:30px">
		<div class="row" style="height:450px">
			<div class="col-md-3">
				<ul class="list-group">
					<li class="list-group-item"><a href="#">Menu1</a></li>
					<li class="list-group-item"><a href="#">Menu2</a></li>
					<li class="list-group-item"><a href="#">Menu3</a></li>
					<li class="list-group-item"><a href="#">Menu4</a></li>
				</ul>
			</div>
			<div class="col-md-9">


foot.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
</div>	<!-- col-md-9 end -->
		</div>
	</div> <!-- container end -->
	<footer class="jumbotron text-center">
		<p>Footer Copyright by chan</p>
	</footer>
</div><!-- .container end -->
</body>
</html>


+ Recent posts