<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
	<title>signupPro</title>
	</head>
<body>
<%
   request.setCharacterEncoding("UTF-8");
   
   String id = request.getParameter("id");
   String pw = request.getParameter("pw");
   String name = request.getParameter("name");
   String email = request.getParameter("email");
   String gender = request.getParameter("gender");
   
   String[] hobb = request.getParameterValues("hobbies");
   
   String job = request.getParameter("job");
   String bio = request.getParameter("bio");

   System.out.println(id);
   System.out.println(pw);
   System.out.println(name);
   System.out.println(email);
   System.out.println(gender);
   System.out.print(hobb);
   if(hobb != null){
      for(String s : hobb){
         System.out.println(s);
      }
   }
   System.out.println(job);
   System.out.println(bio);


%>


   <h3> sinupPro page</h3>

         <table>
         <tr>
            <td>ID *</td>
            <td><%= id %></td>
         </tr>
         <tr>
            <td>PW *</td>
            <td><%= pw %></td>
         </tr>
         <tr>
            <td>Name *</td>
            <td><%= name %></td>
         </tr>
         <tr>
            <td>Email</td>
            <td><%= email %></td>
         </tr>
         <tr>
            <td>Gender</td>
            <td><input type="radio" name="gender" value="male" checked/> 남</td>
            <td><input type="radio" name="gender" value="female" /> 여</td>
         </tr>
         <tr>
            <td>Hobbies</td>
            <td>
               <% if(hobb != null){
                     for(int i = 0; i < hobb.length; i++){ %>
                        <%= hobb[i] %>
               <%      }
               }
               %>
            </td>
            
         </tr>
         <tr>
            <td>Job</td>
            <td>
               <%= job %>
            </td>
         </tr>         
         <tr>
            <td>Bio</td>
            <td>
               <textarea row="5" cols="22" name="bio"> <%= bio %></textarea>
            </td>
         </tr>         
   
      </table>

</body>
</html>​
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <title>회원가입</title>
</head>
<body>
   
   <form action="signupPro.jsp" method="post">
      <table>
         <tr>
            <td>ID *</td>
            <td><input type="text" name="id" /></td>
         </tr>
         <tr>
            <td>Password *</td>
            <td><input type="password" name="pw" /></td>
         </tr>
         <tr>
            <td>Name *</td>
            <td><input type="text" name="name" /></td>
         </tr>
         <tr>
            <td>Email</td>
            <td><input type="text" name="email" /></td>
         </tr>
         <tr>
            <td>Gender</td>
            <td>
               <input type="radio" name="gender" value="male" checked /> 남
               <input type="radio" name="gender" value="female" /> 여
            </td>
         </tr>
         <tr>
            <td>Hobbies</td>
            <td>
               <input type="checkbox" name="hobbies"  value="music" /> Music
               <input type="checkbox" name="hobbies"  value="sports" /> Sports
               <input type="checkbox" name="hobbies"  value="travel" /> Travel
               <input type="checkbox" name="hobbies"  value="movies" /> Movies
            </td>
         </tr>
         <tr>
            <td>Job</td>
            <td>
               <select name="job">
                  <option value="employer">Employer</option>
                  <option value="employee">Employee</option>
                  <option value="teacher">Teacher</option>
                  <option value="student">Student</option>
                  <option value="freelancer">Freelancer</option>
                  <option value="etc">Etc</option>
               </select>
            </td>
         </tr>
         <tr>
            <td>Bio</td>
            <td>
               <textarea rows="5" cols="22" name="bio"></textarea>
            </td>
         </tr>
         <tr>
            <td colspan="2">
               <input type="submit" value="가입" /> 
               <input type="reset" value="재작성" /> 
            </td>
         </tr>
      </table>
   </form>

</body>
</html>

 

 

 

6. 에러 페이지 세팅
웹 어플리케이션 실행 도중에 발생할 수 있는 오류에 대비한
예외 처리 코드를 작성하여 비정상적인 종료를 막기 위한 세팅

1) 웹 에러
개발자의 실수로 일어날 수 있는 웹 에러 두 가지
404 : Not Found Error : 요청경로 오류, 잘못된 url로 요청/
500 : Internal Server Error : 요청 페이지의 로직 오류 (자바 문법 오류)

그 외 HTTP 상태코드
[2xx] Success 성공 관련 코드
200 : 성공 : 서바가 요청한 페이지를 잘 처리 제공했다.
201 : created : 서버에 요청한대로 데이터가 생성되어 제공되었다.

 

[3xx] Redirection 이동관련 코드

 

[4xx] Client Error 관련 코드
400 : Bad Request : 요청이 이상함. 
405 : Method Not Allowed : 요청해 실행되어야할 메서드가 안된다. 허용되지않는다.

 

[5xx] Server Error 관련 코드
503 : Service Unavailable : 서비스 지원불가(웹은 살아있는데 서버가 죽었을때)

2) 예외 처리 방법
- try/catch/finally 를 이용 : 자바 언어에서 예외처리 구문 이용
- page 디렉티브태그 이용한 예외처리 : errorPage="erorr.jsp" isErrorPage="true"
- web.xml에 예외처리 : <error-page>태그와 하위태그 이용

* 동시 적용시 예외처리 우선순위
1. try/catch/finally
2. page 디렉티브 태그
3. web.xml
4. 위 항목에 해당안되면 웹서버에서 제공하는 기본 오류페이지 출력

3) web.xml에 예외처리

<error-page>
<error-code>...</error-code> 또는 <exception-type>...</exception-type>
<location>...</location>
</error-page>

error-code : 오류 코드 설정
exception - type : 자바예외 유형의 클래스 이름 설정
location : 에러페이지에 URL 설정

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">

	
	<!-- 에러페이지 세팅 -->
	<!-- <error-page>
		<error-code>500</error-code>
		<location>/jsp02/errorXml.jsp</location>
	
	</error-page> -->
<!-- 	<error-page>
		<exception-type>java.lang.Exception</exception-type>
		<location>/jsp02/errorXml.jsp</location>
	
	</error-page> -->
</web-app>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>errorXml</title>
</head>
<body>
	<h1>공사중입니다</h1>
</body>
</html>

3. response 내장 객체
: request와 반대기능. 사용자의 요청을 처리한 결과를 웹브라우저로 전달하는 정보 저장.

1) 기능
리다이렉트 하기 (페이지 강제 이동)
헤더 정보 입력

2) 리다이렉트 
다른 페이지로 강제 이동하도록 reponse 객체의 리다이렉션 메서드 제공

**void sendRedirect(String url);

<%@ 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>   <!-- 3번설명 -->
	<h1> B page</h1>
	
	
	<%
	System.out.println("bbbbbb");
	response.sendRedirect("c.jsp"); // 코드로 c.jsp로 이동
	%>
</body>
</html>




4. out 내장 객체
: 웹 브라우저에 데이터를 전송하는 출력 스트림 객체
<%=  > 스크립트 출력문으로 브라우저에 출력하는것과 같은 기능
void print(String str)
void println(String str)  브라우저라 줄내림안됨 print와 같게나옴
void newLine()  줄내림
쓸일없다... 태그로하는게 더 나으니깐

5. application 내장 객체
: 어플리케이션과 관련된 기본 객체
특정 웹 어플리케이션에 포함된 모든 JSP페이지는 
하나의 application 내부객체를 공유한다.
초기 설정 정보 읽기, 서버 정보 읽기, 웹 어플리케이션이 제공하는 자원 읽기...

1) 웹 어플리케이션 초기화 파라미터 읽기

웹 어플리케이션 전체에 사용할 수 있는 초기화 파라미터는 WEB-INF/web.xml 파일에
<context-param> 태그를 사용하여 추가한다.

* web.xml
웹 어플리케이션을 위한 설정 정보를 담고 있는 파일.
WEB-INF 폴더 안에 위치해야함.

web.xml에 초기화 파라미터를 추가하면,
JSP에서는 application 내부 객체의 메서드를 통해
초기화 파라미터를 꺼내서 사용할 수 있다.

* 초기화 파라미터 읽는 메서드
String getInitParameter(String name) 
: 이름이 name인 초기화 파라미터의 값을 문자열로 리턴
해당 값이 없으면 null 리턴
Enumeration<String> getInitParameterNames()
: 초기화 파라미터 이름 목록 리턴 


언제사용?
이름 그대로 웹어플리케이션 초기화에 필요한 설정정보를 저장하려고 사용

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">

 	 초기화 파라미터 설정 
	<context-param>
		<description>로딩 여부</description>
		<param-name>logEnabled</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<description>디버깅 레벨</description>
		<param-name>debugLevel</param-name>
		<param-value>5</param-value>
	</context-param>

</web-app>

'WEB Creator > [JSP]' 카테고리의 다른 글

[JSP] 4. 회원가입 폼  (0) 2022.06.13
[JSP] 3. 에러 페이지 세팅  (0) 2022.06.13
[JSP] 2 - 내장 객체(Implicit Object) (1) Request  (0) 2022.06.13
[JSP] 1 - JSP 페이지 구성 요소(Directive, Script)  (0) 2022.06.10
[JSP] 설정  (0) 2022.06.10


내장 객체 (Implicit Object)
: JSP페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체.
import문 없이, 객체 생성없이 바로 사용가능하다.
내부객체는 _jspService()메서드 내부에 있다.


1) 종류
*request : HTTP 요청 정보 저장 : javax.sevlet.http.HttpServletRequest
*response : HTTP 응답 정보 저장 : javax.sevlet.http.HttpServletReponse
*session : 웹브라우저 정보 유지를 위한 세션 정보 저장
: javax.sevlet.http.HttpSession
out : 출력할 내용을 담고 있는 출력 스트림 : javax.sevlet.jsp.jsp.jspWriter
application : 웹 어플리케이션 컨텍스트 정보 저장
pageContext : JSP 페이지 정보 저장 : javax.sevlet.jsp.PageContext
page : JSP 페이지로 구현한 자바 클래스로 JSP페이지 자체를 나타냄
: java.lang.Object
config : JSP 페이지 설정 정보 저장 :  javax.sevlet.jsp.ServletConfig
conception : JSP 페이지 예외 발생 처리 : java.lang.Throwable


2. request 객체
: 웹브라우저에서 서버의 JSP페이지로 전달하는 정보를 저장. (요청관련)

1) 기본기능
       클라이언트(사용자브라우저)와 관련된 정보 읽기 기능
       서버와 관련된 정보 읽기 기능
       클라이언트가 전송한 요청 파라미터 읽기 기능
       클라이언트가 전송한 요청 헤더 읽기 기능
       클라이언트가 전송한 쿠키 읽기 기능
       속성 처리 기능

2) 요청 파라미터 처리
: 요청 파라미터의 형태는
파라미터명 = 값
*form 태그라면 name 속성값 = 입력데이터
위와 같은 형태로 전송되며,
전송된 값을 꺼낼때는 파라미터명을 키값으로 request 객체를 이용해 
데이터를 꺼낼 수 있다.

# 메서드

입력폼에 입력한 사용자의 답을 얻어내는 요청 메서드

***String getParameter(String name)***
파라미터명이 name인 값을 리턴해줌. 없으면 null 리턴
String[] getParmeterValues(String name)* 파라미터명이 name인 값들을 배열로 리턴해줌.
(파라미터 이름이 같은 여러개의 데이터가 넘어왔을경우 : 
해당 파라미터 이름을 주고, 값을 배열로 한번에 가져오기)
ava.util.Enumeration getParameterNames() 파라미터명들 목록을 java.util.Enumeration 타입으로 리턴

 

웹 서버 브라우저 정보를 가저오는 메서드
request.getRemoteAddr() 클라이언트 IP
request.getContextPath() 컨텍스트 경로
request.getRequestURI() 요청 URI
request.getContentType() 요청정보 컨텐츠 타입
request.getCharacterEncoding() 요청정보 인코딩
request.getProtocol() 요청정보 프로토콜
request.getMethod() 요청정보 전송방식 (get, post)
request.getContentLength()  요청정보 길이
request.getServerName()  서버이름
request.getServerPort() 서버포트


*

3) 전송방식 : GET/POST
웹 브라우저에서 많이 사용하는 파라미터 전송방식 두가지
GET : URL 경로뒤에 물음표와 함께 파라미터를 붙혀 전송한다.
이를 쿼리스트링이라고한다.
각 파라미터는 파라미터명 = 값의 형태로 전송되고
파라미터가 여러개일 경우는 &(엠퍼샌드)를 구분자로 연결하여 전송한다.
브라우저에 따라 한글 get방식으로 전송시
주소창에 %...% 이런 형태의 문자로 표현될 경우가 있다.
*URL 퀘리 스트링으로 파라미터를 전송하기 때문에
폼을 사용하지 않아도 파라미터 전송
브라우저나 웹서버 또는 웹 컨테이너에 따라 
전송할 수 있는 파라미터의 길이 제한이 있을 수 있다.


POST : URL 경로뒤에 파라미터가 보이지 않는다.
데이터 영역을 이용하여 파라미터를 전송하여,
전송할 파라미터의 길이 제한이 없다.
(파일데이터는 post)

4) 요청 파라미터 인코딩

웹 브라우저는 웹서버에 파라미터를 전송할때
알맞은 캐리터 셋을 이용해서 파라미터값을 인코딩한다.
웹 서버는 알맞은 캐릭터 셋을 이용하여 그것을 디코딩한다.
-> 인코딩 / 디코딩 캐릭터셋이 일치하지 않으면 웹서버는 잘못된 파라미터값을 사용함.

[캐릭터 셋 세팅]

# Client <------ server : <%@ page 인코딩 UTF-8 (브라우저에 utf-8로 뿌린다...)
# Client ------> server : 다른곳에서 처리



 

<%@ 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>  <!-- 메모장 2번설명 pro.jsp로 받은 id/pw값 전달 -->
	<form action="pro.jsp"method="post">  <!-- post 방식으로 해야 주소창에 안뜸 get방식은 뜸 -->
		id : <input type="text" name = "id"/><br/>
		pw : <input type="password" name = "pw"/><br/>
 		좋아하는 동물 :
 			<input type="checkbox" name="pet" value="dog" /> 강아지
 			<input type="checkbox" name="pet" value="cat" /> 고양이
 			<input type="checkbox" name="pet" value="tiger" /> 호랑이
 		
 		<input type="submit" value="로그인" />	
	</form>

</body>
</html>


 

<%@ 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>
	<!-- 	request 객체에서 넘어온 데이터 꺼내기 -->
	
<%
//post 방식 인코딩 처리 : post 방식으로 요청되어 넘어오는 파라미터값이 한글일경우
//						인코딩 처리가 필요함. 파라미터를 꺼내기전에 
request.setCharacterEncoding("UTF-8");
//localhost:8080/web/jsp02/pro.jsp?id=sdd&pw=1234 -->
	//request.getPramater(name)

	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	
	// 같은 이름의 파라미터명인 값 여러게 넘어왔을경우
	String[] pets = request.getParameterValues("pet");
	
	//화면에 출력
	//out.println("id : " +id + "<br />");
	//out.println("pw : " +pw + "<br />");  
	for(int i = 0; i <pets.length; i++){
		out.println("pet : " + pets[i] + "\n");
	}

%>
<body>
		<h1> pro page</h1>
		<h2> id : <%= id %></h2>
		<h3> pw : <%= pw %></h3>
		 
		 	<% for(int i = 0; i <pets.length; i++){%>
			<h3> pet : <%= pets[i] %> </h3>
			<%}%>
		
		
</body>
</html>

[jsp01 day25]

 

1. 세팅

1) 준비물 : JDK11, 톰캣 9, 이클립스, DBMS, 구글 크롬

-jdk 환경변수 꼭 설정

 

2) 톰캣 다운 / 설치

https://tomcat.apache.org/download-90.cgi

tomcat 9 > core > zip 다운받기

작업폴더로 옮기고 그곳에서 압출해제

 

3) 이클립스 ( 자바수업내용과 겹치지 않게 새로 압축해제해서 사용)

jsp 작업 폴더 안에 새로 압축해제

#1. 실행 : workspace 폴더 경로 잡아서 런치

#2. 모드 Java EE (실행하면 default 세팅이라 건들필요 x

#3 인코딩 세팅 : UTF- 8

window > preference > 검색 : encoding 

> 검색된 모든메뉴 UTF-8로 변경

 

* 인코딩 : encoding,charset 문자 체계

UTF-8 : 유니코드

IOS-8859-1

KSC5607

MS949(default) / CP949 : MS사

EUC-KR : ANSI를 한국에서 확장한 버전

ANSI : ASCII. 아스키코드 (1바이트)

 

4) 이크립스에 톰캣 세팅

하단에 Servers 탭 > 파란색 링크 혹은 비곤에 마우스 우클릭 > new> server >

>Apache 폴더 > 톱캣 9.0 선택 > browse눌러서 톱캣 압축해제한곳 경로선택 >

> bin 폴더 보일때까지만 들어가기 

 

* servers 탭안에 Tomcat... 생기고, 왼쪽 Project Explorer에 Servers 폴더 생기면 됨.

 

5) 이클립스에 웹 프로젝트 생성

File > New > Dynamic Web Project

>Project Name : 프로젝트명 작성 Next! > Next!

> 체크박스 체크하고 Finish!

 

6) 웹프로젝트의 구조

웹 서버가 준비된 상태에서 아래와 같은 폴더 구조를 갖춰야한다.

 

[폴더명] : 프로젝트명(Context path, 루트 컨텍스트)

-[ WEB - INF ]

- [ lib] : 외부 라이브러리 배치

- [ classes] : 자바 컴파일된 클래스 파일 (이클립스에선 안보임)

- web.xml : 웹 전반적인 설정 파일

-[ META - INF] : 자바 패키징 기술인 jar의 일부, 설정관련

- jsp/html/css/이미지...

 

2. 웹과 jsp

1) 인터넷과 웹

인터넷 : 컴퓨터가 서로 연결되어 TCP/IP라는 통신 프로토콜을 이용하여

정보를 주고받는 전세계의 컴퓨터 네트워크

 

웹 : 인터넷의 서비스 중 하나로, 인터넷에 연결된 컴퓨터들을 통해 정보 공유하는 공간.

world wide web 줄인말

 

2) 웹 동작원리

클라이언트/ 서버 방식으로 동작

클라이언트 : 사용자 (요청자), 웹 브라우저

웹 서버 : 서비스 제공자 

 

동작 방식 : 

클라이언트 ---- 웹 페이지 요청(request)----> 웹 서버

(브라우저)<------결과물로 응답(reponse)-----(ex. tomcat)

 

3) 정적웹페이지 / 동적 웹페이지

정적 웹페이지 : static : 저장된 텍스트 파일 그대로 보는것

html 같은 웹 언어로 작성

사용자가 web 브라우저에 url 입력요청

-> 이미 준비된 문서 그대로 보내줌

초기 웹페이지, 변화 적응 x, 추가/수정/삭제 수동으로

 

 

동적 웹페이지 : dynamic : 저장된 내용을 가공처리해서 보는것

PHP, ASP, JSP 같은 웹 언어로 작성

사용자가 web브라우저에 URL입력 요청

-> 분석,처리 -> 가공된 HTML 파일 생성 보내줌

현재 우리가 보는 페이지 대부분, 데이터 저장 DB

 

 

4) 웹 주소

URL : http://서버ip:port/File경로~~(uri)

 

내가 제공하는 웹사이트를 내가 요청하겠다.

http://  192.168.1.85:8080/ 파일경로

http:// 127.0.0.1:8080/ 파일경로  

http://localhost:8080 ( 우리가 사용할 버전)

 

IP : IP Address 네트워크상 PC 고유 주소

 

port : IP 주소로는 컴퓨터 구분을 할 수 있지만, 어떤 서비스 프로그램을 실행할지 알 수 없어서,

클라이언트가 연결할때 다른 서버 프로그램과 구분할 수 있도록 port 번호를 사용함.

내 pc에서 현재 사용중인 port 번호 확인

: cmd > netstat -a

톰캣 기본세팅 포트 번호 : 8080

 

도메인 cmd > nslookup naver.com

https://naver.com/main/read.nhn?a=10

DNS : Domain Name Service

-> DNS에 IP주소 요청 -> 응답받은 ip주소로 웹서버에 서비스 요청

-> 서버가 요청 주소 분석/처리해 요청한 내용을 응답 -> 브라우저

 

5) 웹 프로그래밍과 JSP

웹 프로그래밍 : 웹 서버가 웹 브라우저에 응답으로 전송할 데이터를 

생성해주는 프로그램을 작성하는 것

웹 프로그래밍 언어 : 클라이언트 측 실행 언어와 서버측 실행언어로 구분 

JSP(JavaServer Pages) : 자바를 기반으로 하는 서버측 웹 프로그래밍 언어.

HTML코드에 자바를 삽입 할 수 있도록 개발된 기술

(이전에는 Servlet이라는 기술로 사용하였으나 어렵고 불편)

실제로 웹 어플리케이션 서버에서 서비스 될때는 서블릿으로 변환됨

 

-JSP는 서블릿 기술의 확장

-JSP는 유지 관리 용이

-빠른 개발 가능

 

6) 웹 서버, 웹 컨테이너, 웹 어플리케이션 서버

#1. 웹 서버

HTTP 프로토콜을 이용하여 클라이언트 요청을 받아

HTML이나 오브젝트를 전송.

웹 서버만 구축된 서버는 웹페이지, 이미지등 "정적페이지"생성

아파치, IIS등 서버

 

#2. 웹 컨테이너 

JSP와 서블릿을 실행할 수 있는 프로그램으로

서블릿 컨테이너라고도 함.

웹 서버에서 JSP를 요청하면 컨테이너가 JSP파일을

서블릿으로 변환하여 컴파일을 수행, 서블릿 수행 결과를 웹 서버에 다시 전달.

 

 

#3. 웹 어플리케이션 서버 (Web Application Server : WAS)

웹 서버와 웹 컨테이너를 결합한 서버

JSP 컨테이너가 탑재된 WAS는 JSP페이지를 컴파일하여 "동적페이지" 생성함.

톰캣, BEA의 웹 로직 등..

 

3. JSP 페이지 구성 요소

디렉티브 (Directive)

스크립트 

표현언어 (EL Expression Language

내장객체 (Implicit Object)

정적인 데이터 (일반 텍스트)

표준 액션 태그 (Action tag)

커스텀 태그 (Custom tag)와 표준 태그 라이브러리(JSTL)

 

 

4.  디렉티브 태그

page : JSP 페이지에 대한 정보 설정

include : JSP 페이지의 특정 영역에 다른 문서를 포함

taglib : JSP 페이지에서 사용할 태그 라이브러리 설정

 

<%@ 디렉티브태그명 속성명 = "값" 속성명 = "값" ...%>

 

1) page

JSP 페이지 설정 정보 지정

문서 타입, 출력버퍼 크기, 에러페이지등 지정

페이지 최 상단에 선언 권장

 

[ 속성들 ]

language

contentType

pageEncoding : UTF-8 

import : 자바 임포트랑 같은 %>안에 넣어주면됨

session : true (default이므로 생략가능)/fault 로그인처리할때 

buffer : 버퍼사이즈 (8kb가 default)

autoFlush : true 디폴트  / 버퍼가 꽉차면 화면으로 알아서 뿌려줌, 

false로 하면 화면꽉찰때 에러남

isThreadSafe : true 여러사람이 와도 되는가?

info : 페이지 설명글 메모할것 (쓸일 거의없음)

errorPage : 에러페이지 errorpage = "error.jsp" (error라는 페이지를 띄움)

isErrorPage : false 디폴트 / 이 페이지가 에러전용 페이지냐 ?

isELignored : false 디폴트 / 

defrerredSyntaxAllowedAsLiteral  : false 디폴트 

 

2) include 태그

외부 파일의 내용을 포함 : 복붙 개념. 붙혀와서 서블릿으로 한번에 번역. 

헤더,푸터등 공통된 부분을 별도의 jsp파일로 만들어 모듈화 할때 유용한 태그

-> 코드 유지보스, 재사용 가능성 향상

<%@ include 속성 = "값"...%>

file="파일경로"

같은 폴더안에 있으면 파일명만, 그렇지 않으면 전체 URL 설정

주의!!! 현재파일과 include 하는 파일의 인코딩 설정이 동일해야함!!

 

3) taglib 태그

표현언어, JSTL, 사용자정의 태그등 외부 태그 라이브러리를 설정하는 태그

 

<%@ taglib prefix="태그식별자" uri="태그라이브러리경로" %>

 

 

 

<%@ 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> <!-- 4. 디렉티브 설명 -->
	<h1> test01</h1>
	서버 : <%= application.getServerInfo() %> <br />
	서벌릿 : <%= application.getMajorVersion() %>.<%= application.getMinorVersion()	%> <br/>
	JSP : <%=JspFactory.getDefaultFactory() .getEngineInfo(). getSpecificationVersion() %>	

</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
    <%@ include file="test03.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test02</title>
</head>
<body> <!-- 4. 디렉티브 설명 -->

		<h2>==================================================	</h2>
		<h1>	Test02 page</h1>
		<h2>==================================================	</h2>
		 <%@ include file="test03.jsp" %>
		 <%@ include file="test03.jsp" %>
</body>

</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test03</title>
</head>
<body> <!-- 4. 디렉티브 설명 -->
<h2>**********************************	</h2>
<h1>Test03 page</h1>
<h2>**********************************	</h2>
</body>
</html>

 

 

5. 스크립트

: HTML 코드에 자바코드를 넣어 프로그램이 수행하는 기능 구현

서블릿 클래스로 변환할때, JSP 컨테이너가 자바 코드가 삽입되어 있는

스크립트 태그로 처리하고 나머지는 HTML코드나 일반 텍스트로 간주함.

 

선언부 : <%!   %> : 클래스 영역 : 사용 거의 안함

스크립트릿 : <% %> : 메서드 영역 : 가장 많이 사용. 변수선언 -> 지역변수 자바 실행 코드

출력문 : <%= %> : 값을 출력   : HTML코드와 섞어서 사용가능

 

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

 <!-- 6 스크립스설명 -->
<h1> test04 page </h1>
<%-- #1. 선언부 --%>
<%! 
	//선언부 : 클래스영역
	//클래스변수, 인스턴스 변수, 메서드
	static int num = 10;
	int num2 = 200;
	public int mul(int a, int b){
		return a * b;
	}
	
%>
<%-- #2. 출력문 : 세미콜론 안적음. 변수명, 리턴있는 메서드 호출하면 값화면에 출력 --%>
<%= num %> <br/>
<%= num2 %><br/>
10*20 = <%= mul(10,20) %>

<!-- 스크립트릿 -->
<% // 스크립트릿 : 메서드 영역
	for(int i = 0; i < num ; i++){
		out.print("java server pages" + i + "<br/>");
	}
	String col = "yellow";
	

%>
<body bgcolor="<%=col%>">
</body>

<ul>
<% for(int i = 0 ; i < 10; i++){ %>  


<li>hello jsp</li>
<%} %>
</ul>

 

 

 

======= 셋팅 순서 ========

1) 이클립스 UTF-8로 셋팅
window -> preferences -> encoding 검색 -> 좌측 UTF-8로 변경

-----------------------------------------

2) 톰캣 셋팅
 이클립스 하단 Servers 탭 빈곳 마우스 우클릭 > new -> server > Apache 폴더 
> Tomcat 9.0선택 후 Next!  
> Browsw 눌러서 톰캣 압축해제한 경로 선택 후 Next!
(※ 이때 눈으로 bin 폴더등이 보일때까지만 들어가기)
 ★ Servers탭 안에 Tomcat....생기고, 
왼쪽 Project Explorer에 Servers 폴더 생기면 됨.

-----------------------------------------

3) 웹프로젝트 세팅
 좌측 상단탭 File > New 
> Dynamic Web Project
> Project Name : 프로젝트명작성 후 Next!
> Next! > 체크박스 체크하고 Finish

-----------------------------------------

4) 웹 프로젝트 JDK 세팅
web폴더 만든 후 폴더 위 우클릭
> properties 
> 좌측탭 Project Facets
> Java 오른쪽 Version 11로 변경
> 좌측탭 Java Build Path
> JRE System Library 더블클릭
> JavaSE-11(jre)로 변경

 

 

필자는 NAS로 연동

2022.06.14 - [NAS] - [NAS] synology NAS로 Tomcat 구동 하는 방법 (docker, jsp)

+ Recent posts