-
210511_1~4(JSP개념)HTML_JS(Sol)/JSP(sol) 2021. 5. 11. 11:32
(5/6일 수업내용) 사전개념
1.웹사이트를 만들때 사용되는 언어 또는 구성물 : 하나의 웹문서에는 아래와 같은 구성물이 들어갈수 있다.
1) HTML : 링크,크기,색상 등을 지정 할수있는 기본틀, 웹사이트의 주축
2) CSS : 스타일 시트, 디자인을 편하게 할수있는, 한번 코딩하여 페이지에 디자인 적용(통일성) ...
3) JavaScript : 기본적 : 웹페이지에서 이벤트발생시 그것을 처리하는 언어
우리는 데이타유효성 검사에 주로 사용. 범위가 넓다 = 시각, 청각 모두 포함
4) JSP(PHP, ASP, ASP.net) : 클라이언트 요청을 받아서 데이타베이스와 연동하여
동적인 페이지를 구현할때 주로 사용.
5) SQL : 데이타베이스에서 select, insert, update, delete 할때 주로 사용
create, alter ... <---관리자
6) 데이타정보 ==가공==>정보 - 텍스트, 이미지, 사운드, 영상 ...
클라이언트
에이전트웹서버 데이타베이스 --요청 request--> ----연동---- -------sql-------> 웹브라우저
chrome
엣지
익스플로러
파이어폭스
tomcat
apache
iis
resinmysql
oracle
mssql<--응답response- ----정보가공----- <---데이터결과-- 컴파일실행 정보
+html
+css
+ js+디자인
+jsp
+javasql 결론 : html, css, js는 웹 브라우저가 해석하는 클라이언트 스크립트 언어이고,
<==주로하는사람 웹퍼블리셔
jsp, java 등을 웹서버가 해석하는 서버 스크립트 언어이다.
<== 주로하는사람 웹프로그래머 또는 데이타베이스 응용프로그래머 라고한다.
sql은 데이타베이스가 해석한다. <== 관리: 백업,복구,권한부여,취소,객체생성...sql 개발자
일반적으로 우리가 웹사이트를 볼때 위처럼 3가지 해석을 거치게된다. 이러한 것을 3 tier 라고한다.
이것 이상의 구조를 n tier라고 말한다.
클라이언트+웹서버 =>static 서버
+DB = dynamic 서버
JSP개념
jsp는 java server pages : 톰캣이 해석하는 언어다.
<%! 선언부 %> : 전역 변수(페이지내에서 어디서든 호출가능)를 선언,
함수를 정의 하는 영역이다. <==사실은 거의 사용하지 않는다./ java에서 선언
<% 스크립릿 %> : 실제로 Jsp코딩을 하는 곳. 처리식 코딩...
<%= 출력부%>: 문자열, 변수값, 함수리턴값 등등을 출력하는 용도. ; 를 사용하지못함
처리식 코딩은 불가능하다.
<%-- jsp주석 --%> : 주석처리를 서버가 처리한다. 서버와관련된 중요한 주석
비교) <!-- html주석 --> : 웹브라우저가 주석으로 처리함
비교2) //js한줄주석 /*js여러줄주석*/ : 웹브라우저가 주석으로 처리함
html , js, css 는 웹브라우저가 해석기다.
jsp동작 원리
jsp---------->servlet(java) ------------->class
코딩 자동변환/톰캣 jvm위에서실행
* 컴파일 되어서 실행되므로 실행이빠름/보안이 강해진다. ==>금융권에서 많이사용한다.
php등등은 그냥 문서 파싱 실행하는것.
* 처음에 자바에서 웹언어는 servlet이었다. servlet은 동적+디자인 표현에 약하다.
그래서 그것을 보완하려고 jsp가 만들어진것이다. jsp는 동적+디자인적용을 가미해서 탄생된것이다.
진짜 프로젝트형 개발은 : jsp + servlet +java 를 모두 사용한다.
1. jsp는 대소문자 구별이 있다.
2. jsp는 웹주소 대소문자 구별이 있다.
<%= %> 출력부
<%out.print( )%> 스크립릿 내부에서 출력문
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSP 스크립트 Example</title> </head> <body> <h1> Script Example1</h1> <%! String declaration = "Declaration"; %> <%! public String decMethod(){ return declaration; } %> <% String scriptlet = "Scriptlet"; String comment = "Comment"; out.print("내장객체를 이용한 출력 :" + declaration +"<p>"); %> 선언문의 출력1 : <%= declaration%><p> 선언문의 출력2 : <%= decMethod()%><p> 스크립트릿의 출력 : <%= scriptlet%><p> <!-- JSP주석부분 --> <!-- JSP 주석1 : <%=comment%> --><p> <%-- JSP 주석2 : <%=comment%> --%> <% /*주석 (여러줄주석) */ %> </body> </html>
3 .스크립릿보다 선언부가 먼저실행되어서 전역변수는 문서내 호출 순서와 관계없이 호출가능하다.
4. 지역변수는 선언이후에만 호출가능하다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>DeclarationExmaple1</title> </head> <body> <h1>Declaration Exmaple1</h1> <% String name = team +"Fighting!!!"; %> <%! String team = "Korea"; %> 출력되는 결과는 ? <%=name %> </body> </html>
5.전역변수가 초기화되어있지않으면 자동으로 0으로 초기화된다.
전역변수는 데이타형이 정수면 0으로 초기화되고, 문자열은 null로 자동초기화된다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Declaration Example2</title> </head> <body> <h1>Declaration Exmaple2</h1> <%! int one; int two= 1; public int plusMethod(){ return one+two; } String msg; int three; %> one 와 two 의 합은 ? <%=plusMethod() %><p> String msg의 값은? <%=msg %><p> <!-- 문자열은 null로 --> int three의 값은? <%=three %><!-- 정수형은 0으로 출력된다 --> </body> </html>
java.util.Date () ; 직접호출해서 사용할수있다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Scriptlet Example2</title> </head> <body> <h1> Scriptlet Example2</h1> <% float f =2.3f; int i = Math.round(f); java.util.Date date = new java.util.Date(); %> 실수 f의 반올림값은? <%=i %><p> 현재의 날짜와 시간은?<%=date.toString()%> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Expression Example1</title> </head> <body> <h1>Expression Example1</h1> <%! String name[]={"Sun","Java","JSPStudy"}; %> <table border=1 width=200> <% for(int i=0; i<name.length; i++) {%> <tr><td><%=i%></td><!-- 1줄2칸의테이블이지만 인덱스갯수에따라 반복하여 3줄2칸이된다 --> <td><%=name[i] %></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>Expression Example2</title> </head> <body> <h1>Expression Example2</h1> <% java.util.Date date = new java.util.Date(); int hour = date.getHours(); //음영 : Date 클래스에서 getHours()메소드를 사용하여 시간(hour)값만 반환을 합니다. int one=10; int two=12; %> <%! public int operation(int i, int j){ return i>j ? i:j ; } //삼항 연산자를 사용하여 두개의 매개변수 값 중에 더 큰 값을 반환 시키는 메소드 입니다. %> 지금은 오전일까요 오후일까요?<%=(hour<12)?"오전":"오후"%><p> one과 two 둘중에 큰 숫자는?<%= operation(one,two)%> </body> </html>
주석에 관한 설명
<!-- -->
<%-- --%>
/* */
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Comment Example1</title> </head> <body> <h1>Comment Example1</h1> <% String name = "Korea"; %> <!-- 주석 부분입니다.'소스보기'에서 보이지요. --> <%-- 이부분은 JSP페이지에서만 보이고 '소스보기'를 해도 보이지 않습니다. 브라우저에 보내지 않는 문장입니다. --%> <!-- <%=name%> 주석에서도 동적인 변수 사용 --> <%=name/*표현식에 주석 부분입니다*/ %> Fighting!!! </body> </html>
폼전송원리
<Form method="post" action="receive.jsp" name="mymember">
---------------------------------보내는쪽 : html,jsp 둘다됨
1) method="전송방식" post, get 중 하나를 기입한다.
보안 전송량 사용예 post 강함 큼 실제로 폼전송에 거의 사용 get 약함 작음 페이지링크 할때<a>
요청페이지.jsp?키=value&key2=value22) action='목적지' 요청페이지 이름이 들어감. 요청페이지jsp
3) type="submit" 지정된 전송버튼을 누르면 action이 지정한곳으로 form을 전송하게 된다.
만약에 submit이 아니고 단순 button이면 js에서 submit()함수로 전송한다.
-------------------------------------------------------------------------send.jsp
<Form method="post" action="receive.jsp" name="mymember">
<table border="1">
<tr>
<td colspan="2" align="center"><font color="blue" size="5">회원가입
폼 만들기</font></td>
</tr>
<tr>
<td width="100">이름</td>
<td width="400"><input type="text" name="m_name" size="15"></td>
</tr>
<tr>
<td>아이디</td>
<td><input type="text" name="m_id" size="15"></td>
</tr>
<tr>
<td>암호</td>
<td><input type="password" name="m_password" size="15"></td>
</tr><tr>
<td colspan="2" align="center">
<input type="submit" value="가입하기">
<input type="reset" value="다시쓰기">
</td>
</tr></form>
-------------------------------받는쪽 : 반드시 jsp 나 servlet로 만든다
-----------------------------------------------------receive.jsp
request 객체 : client 요청 정보를 담고 있는 jsp 내장 객체
<%
// 만약에 전송데이타에 한글이 있다면 반드시 가장먼저 인코딩해야한다
request.setCharacterEncoding("EUC-KR"); <==가장 먼저 기술해야 한다.
//name받기
String m_name = request.getParameter("m_name"); // 폼구성 요소의 이름으로 받는다.
//id받기
String m_id = request.getParameter("m_id");
//password 받기
String m_password = request.getParameter("m_password");
// 만약에 가입한다. 라면
// 연동
// sql + 변수의 insert 작성
//실행
//결과출력
%>
디자인
<%=m_name%> 디자인<%=m_id%> 디자인 <%=m_password%>...
예제) IfExample.html,jsp
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>IfExample</title> </head> <body> <h1>If-else Example</h1> <form Method=Post Action="IfExample.jsp"> 이름:<Input type="text" name="name"><p> 좋아하는 색깔 : <select name="color"> <option value="blue" selected>파란색</option> <option value="red" >붉은색</option> <option value="orange" >오렌지색</option> <option value="etc" >기타</option> </select><p> <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>If Example</title> </head> <h1>If-else Example</h1> <%! String msg; %> <% String name=request.getParameter("name"); String color=request.getParameter("color"); if(color.equals("blue")) { msg ="파란색"; }else if(color.equals("red")){ msg ="붉은색"; }else if(color.equals("orange")){ msg ="오랜지색"; }else{ color="white"; msg="기타색"; } %> <body bgcolor=<%=color%>> <%=name%>님이 좋아하는 색깔은<%=msg%>입니다. </body> </html>
'HTML_JS(Sol) > JSP(sol)' 카테고리의 다른 글
210513_5(sql, 데이터베이스연동 준비) (0) 2021.05.13 210513_1(jsp내부객체 application, exception, Bean프로그래밍) (0) 2021.05.13 210512_5~8(JSP내부객체 request, response, session, out) (0) 2021.05.12 210512_1~4(jsp액션태그) (0) 2021.05.12 210511_5~8(JSP기초 ?, 지시어 page, include) (0) 2021.05.11