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>
'개발자 > 국비지원 SW' 카테고리의 다른 글
국비지원 60일차 - JSP 회원가입, 요청정보, jQuery 내용필터, 보안필터, 선택필터 (0) | 2020.07.08 |
---|---|
국비지원 59일차 - jQuery 사용법, Selector (기본, 속성, 계층, 필터), event (0) | 2020.07.07 |
국비지원 57일차 - Bootstrap 이미지 슬라이드, form, list group, modal (0) | 2020.07.05 |
국비지원 56일차 - 팀프로젝트 (0) | 2020.07.02 |
국비지원 55일차 - Bootstrap Layout, Color, Card, Table, dropdown (0) | 2020.07.01 |