일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- tibero#티베로#이중화#failvover
- 항해99 #항해플러스 #주니어개발자 #주니어개발자역량강화 #주니어개발자멘토링 #개발자사이드프로젝트 #코딩부트캠프 #코딩부트캠프후기
- 쿼리스트링#쿼리문자열#바인딩
- Java#java#메모리영역#클래스로더#가비지컬렉터
- html#HTML#프론트엔드#개발자#코딩#국비지원#국비교육#국비지원프론트엔드#국비지원HTML#국비지원html#국비프론트엔드
- Java#JAVA#매개변수
- db#데이터베이스#오라클#sql
- Spring#spring#스프링#스프링프레임워크#스프링의존성주입#스프링생성자#스프링기본#국비지원#국비교육#국비지원스프링
- #
- 국비지원자바#국비교육자바#국비지원java#국비교육java#자바스크립트#프론트엔드
- Spring#spring#스프링#스프링프레임워크#스프링자동주입#스프링생성자#스프링기본#국비지원#국비교육#국비지원스프링
- 프로그래밍
- 개발자도서#개발자책#도메인#DDD#도메인주도개발시작하기#개발스터디#
- 국비지원JAVA#국비지원자바#프로그랭#JSP#국비지원JSP#국비교육JSP#웹개발자#코딩
- 국비지원#국비교육#국비지원자바#국비교육자바#css#HTML#JAVA
- 국비지원JAVA
- IntelliJ#인텔리제이#인텔리#단축키
- Resource #
- 자바
- 국비지원#국비교육
- Java#정처기#비트연산자#정보처리기사
- spring#Spring#RequestBody#ResponseBody
- 항해플러스#항해#항해플러스3기#회고
- 개발자#it도서#도메인#DDD#ddd
- 국비지원JAVA#국비교육JAVA#국비지원자바#국비교육자바#JSP#SERVLET#서블릿#
- #java#JAVA#프로그래밍#웹개발자
- 자바#Java#배열예시#연습#기초다지기
- Java#java#자바#다오#디티오#브이오#dao#dto#vo
- Java#컴파일러#자바컴파일러#
- java
- Today
- Total
개린이 개발노트
국비지원 JAVA(자바) 프로그래밍 (JSP,표현식,MVC,MVC패턴,오브젝트비교) 본문
스크립트릿 - <% %> - 자바코드 작성하는 곳 - 작성한 위치에서 만들어짐
선언문 - <%! %> 자바코드를 작성하지만 일반적으로 변수,메서드선언할 때 - 서블릿 클래스 바로 아래 생성이 됨
표현식 <%= %>
변수 출력 (out.print(num)) 표현식을(양쪽이 같음) 이용하면 <% num %>
계산식 출력-> out.print(num1+num2) 표현식을(양쪽이 같음) 이용하면 <%= num1+num2%>
메서드 호출 - out.print( sum (a,b) ) 표현식을(양쪽이 같음) 이용하면<%= sum(a,b) %>
스크립트릿 주석처리 방법
<% --
%>
스크립트릿 안에있는 코드(자바코드) 주석처리 방법 // 이용 -> 자바코드니까 자바코드처럼
주석->컨트롤 + 쉬프트+ c
특정범위 주석-> 컨트롤+쉬프트+c
JSP 예제
2개의 input에 숫자를 입력하고 전송버튼을 누르면 두수의 합을 출력해주는 jsp를 만들기
입력.jsp
<%@ 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>
<form method="get" action="출력.jsp">
<input type="text" name="num1"> <br>
<input type="text" name="num2"> <br>
<input type="submit" value="전송"> <br>
</form>
</body>
</html>
출력.jsp
<%@ 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>
<%
int num1= Integer.parseInt(request.getParameter("num1"));
int num2= Integer.parseInt(request.getParameter("num2"));
%>
<h1>두수의 합: <%=num1+num2%></h1>
</body>
</html>
JSP->서블릿-> 컴파일-> CLASS파일 만들어지고-> 로드 -> 응답
input에 숫자하나를 입력하고 누적버튼을 누르면
계속 누적버튼을 누를때마다 입력한 숫자가 누적돼서 나타나게 됨
처음 5 입력 누적버튼 -> 누적된 숫자:5
두번째 10입력 누적버튼-> 누적된 숫자: 15
세번째 20입력 누적 버튼-> 누적된 숫자 35
숫자입력.jsp
<%@ 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>
<form method="get" action="누적된숫자출력.jsp">
<input type="text" name="num"> <br>
<input type="submit" value="전송"> <br>
</form>
</body>
</html>
누적된숫자출력.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%! int total=0; // 누적된 숫자를 저장하는 변수
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
int num= Integer.parseInt(request.getParameter("num"));
total+=num; // total=total+num;
%>
<h1>누적된 숫자: <%= total %></h1>
<a href="숫자입력.jsp">뒤로가기</a>
</body>
</html>
-> 전역변수 이용이 핵심!!
숫자 두개 input에 입력받아서 전송버튼을 누르면
두 숫자 사이의 총 합을 출력
ex) 2와 10을 전송 -> 2부터 10까지 합계 출력
숫자 두개 입력
<%@ 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>
<form method="get" action="두숫자사이의총합출력.jsp">
<input type="text" name="num1"> <br>
<input type="text" name="num2"> <br>
<input type="submit" value="전송"> <br>
</form>
</body>
</html>
주석 방법은 if문 이용해서 num1,num2를 가려냈고
밑에 방법은 max,min 메서드를 이용해서 num1,num2 가려냄
<%@ 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>
<%--
int sum=0;
int num1= Integer.parseInt(request.getParameter("num1"));
int num2= Integer.parseInt(request.getParameter("num2"));
if(num1 < num2) {
for(int i = num1; i <= num2; i++) {
sum += i;
}
} else if(num1 >= num2) {
for(int i = num2; i <= num1; i++) {
sum += i;
}
}
--%>
<%
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
int sum = 0;
int max = Math.max(num1, num2);
int min = Math.min(num1, num2);
for(int i = min; i <=max; i++) {
sum += i;
}
%>
<h1>두수의 합: <%=sum%></h1>
<a href="숫자두개입력.jsp">뒤로가기</a>
</body>
</html>
여기서 업그레이드
숫자 두개 input에 입력받아서 전송버튼을 누르면
두 숫자 사이의 총 합을 출력
ex) 2와 10을 전송 -> 2부터 10까지 합계 출력 하는데
ex)
5랑 10-> 5+6+7+8+9+10 = 값 나오게
<%@ 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>
<%
int sum = 0;
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
if (num1 < num2) {
for (int i = num1; i <= num2; i++) {
sum += i;
}
} else if (num1 >= num2) {
for (int i = num2; i <= num1; i++) {
sum += i;
}
}
%>
<h1>계산과정 출력</h1>
<%
int sum2 = 0;
for (int i = num1; i < num2; i++) {
sum2 += i;
%>
<b><%=i%> + </b>
<%
}
%>
<b><%=num2%> = <%=num2 + sum2%></b>
</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>
<body>
<h1>상품 검색 페이지</h1>
<form method="get" action="상품검색페이지결과값.jsp">
연령대: <input type="text" name="age"> <br>
카테고리 : <select name="category">
<option value="상의">상의</option>
<option value="하의">하의</option>
<option value="악세서리">악세서리</option>
</select> <br>
선호하는 색상: <input type="checkbox" name="color" value="빨강"> 빨강
<input type="checkbox" name="color" value="주황"> 주황
<input type="checkbox" name="color" value="노랑"> 노랑
<input type="checkbox" name="color" value="파랑"> 파랑
<input type="checkbox" name="color" value="검정"> 검정
<input type="submit" value="검색">
</form>
</body>
</html>
<%@page import="com.sun.corba.se.spi.orb.StringPair"%>
<%@ 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>
<%
String age =request.getParameter("age");
String category =request.getParameter("category");
String[] colors =request.getParameterValues("color");
%>
<h1><%=age %>
세가 가장 많이 구매한<%=category %>들을 조회합니다.</h1>
<h2>선호하는 색상
<%
if(colors==null) {
%>
이 없습니다.</h2>
<%
}else {
for(String color : colors) {
%>
<%=color%>
<%
}
%>
입니다.
<%
}
%>
</h2>
</body>
</html>
위의 스파게티 코드를 없애기 위해 -> MVC 모델/패턴1 ->2
Model
View
Controller
위의 스파게티 코드 mvc모델1로 표현해서 간단하게 만들기
<%@page import="com.sun.corba.se.spi.orb.StringPair"%>
<%@ 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>
<% // Controller
String age =request.getParameter("age");
String category =request.getParameter("category");
String[] colors =request.getParameterValues("color");
String str= ""; // 색상의 결과값을 저장하는 변수(model)
if(colors==null) {
str="없음";
} else {
for(String color : colors) {
str = str+color+" ";
}
str+= "입니다.";
}
%>
<!-- View -->
<h1><%=age %>세가 가장 많이 구매한<%=category %>들을 조회합니다.</h1>
<h2>선호하는 색상: <%=str %></h2>
</body>
</html>
지시자 <%@ >-> JSP 페이지 속성 지정할 때 사용
종류
-> page, include , taglib(JSTL에서 따로 더 공부할 예정)
page: JSP페이지에 대한 환결설정
import 속성 => 자바에서 import와 같은것
컨트롤+시프트+o
session 속성 -> 기본값=true
<%@page session="true/false" %>
buffer 속성 -> 기본값= 8kb
<%@page buffer="none/8kb" %>
autoflush속성 -> 기본값=true
<%@page autoFlush="true/false" %>
true: 버퍼가 차면 자동으로 비움(전송)
false: 버퍼가 차면 에러 발생
isThreadSafe속성
<%@page isThreadSage="true/false" %> -> 기본값=true
스레드 설정할건 지 말건지
info 속성
<%@page info ="jsp페이지 정보" %>
include
<%@include file="Header.jsp" %>
지시자 <%@ %> -> JSP 페이지 속성 지정
- page : JSP 페이지 환경 설정
- include
- taglib -> JSTL
page 지시자
import 속성 => 자바에서 import와 같은 것
컨트롤 + 시프트 + O
<%@page import="java.util.Calendar"%>
<body>
<%
Calendar data = Calendar.getInstance();
%>
</body>
session 속성 - 기본값은 true
<%@page session="true/false"%>
buffer 속성 - 기본값은 8kb
<%@page buffer="none/8kb"%>
예시로 유튜브 영상에서 영상 로딩 바 흰색 부분
autoflush 속성
<%@page autoFlush="true/false"%>
true : 버퍼가 차면 자동으로 비움
false : 버퍼가 차면 에러 발생
isThreadSafe 속성
<%@page isThreadSafe="true/false"%>
스레드 설정
info 속성
<%@page info="jsp페이지 정보" %>
에러가 발생했을때 보여주는 페이지 설정 관련
<%@ 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>
<h1>에러가 발생하는 페이지</h1>
<%=2/0%> <-- 실행안되는 코드 아무거나 삽입 후 테스트
</body>
</html>
아무런 설정도 안했을 때 기본적으로 보여주는 에러페이지
- errorPage
해당 패이지 에러 발생 시 -> 에러페이지로 넘어감
<%@ page errorPage="에러페이지" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page errorPage="errorPage.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>에러가 발생하는 페이지</h1>
<%=2/0%>
</body>
</html>
- isErrorPage (기본값은 false)
true : 해당 페이지가 에러 페이지가 됨 exception 객체를 사용할 수 있
<%@ page isErrorPage="true" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>여기는 에러 발생 시 실행되는 페이지</h1>
<%=exception.getMessage() %>
</body>
</html>
실행시켰을 때 아래 처럼 설정한 에러페이지로 넘어간다.
IE -> errorPage가 512바이트 보다 작으면
IE 자체 에러페이지를 표시
include 지시자
현재 페이지에 다른 페이지를 삽입할때 사용
<%@ include file="파일명"%>
<%@ 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>
<%@include file="header.jsp" %>
<h1>여기는 메인페이지</h1>
<%@include file="footer.jsp" %>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h1>여기는 header 페이지</h1>
<hr>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<hr>
<h1>여기는 footer 페이지</h1>
내장객체
request: 요청에 대한 것 저장
response: 응답에 대한 것 저장
out: 출력(스트림)
page, config,
session, application, pageContext,
exception
request: 요청에 관련된 내장객체
request.getParameter
값: <%=request.getParameter("abc") %>
이름:<%= request.getParameterNames() %>
컨텍스트 패스: <%= request.getContextPath() %>
요청방식: <%= request.getMethod() %>
요청URL: <%= request.getRequestURL() %>
요청URI: <%= request.getRequestURI() %>
서버이름: <%= request.getServerName() %>
프로토콜: <%= request.getProtocol() %>
<%@ 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>
<form method="get" action="request.jsp">
<input type="text" name="abc">
<input type="text" name="bbb">
<input type="text" name="ccc">
<input type="submit" value="전송">
</form>
</body>
</html>
<%@page import="java.util.Enumeration"%>
<%@ 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>
<%
Enumeration<String> e = request.getParameterNames();
while(e.hasMoreElements()) {
out.print(e.nextElement()+ "<br>");
}
%>
값: <%=request.getParameter("abc") %><br>
이름:<%= request.getParameterNames() %><br>
컨텍스트 패스: <%= request.getContextPath() %><br>
요청방식: <%= request.getMethod() %><br>
요청URL: <%= request.getRequestURL() %><br>
요청URI: <%= request.getRequestURI() %><br>
서버이름: <%= request.getServerName() %><br>
프로토콜: <%= request.getProtocol() %><br>
</body>
</html>
respone.sendRedirect("이동할 페이지");
간단한 로그인 페이지
로그인 창 -> 요청 -> 아이디와 비밀번호 체크
-> 아이디와 비밀번호가 일치하면 메인페이로 이동
-> 일치하지 않으면 다시 로그인 페이지로 이동
<%@ 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 method="post" action="checkLogin.jsp">
아이디 : <input type="text" name="id"> <br>
비밀번호 : <input type="password" name="pw"> <br>
<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>
<body>
<%
String id = "teemo";
String pw = "1234";
String user_id = request.getParameter("id");
String user_pw = request.getParameter("pw");
/* out.print(id.equals(user_id));
out.print(user_pw == pw); */
if(id.equals(user_id) && pw.equals(user_pw)) {
out.print("로그인성공");
} else {
response.sendRedirect("loginForm.jsp");
}
%>
</body>
</html>
변수에 단순 문자열을 대입한것과 새로운 문자열을 변수에 선언을 하면서 서로 비교연산자로 == 물어볼 경우 false로 표시가 된다. 두 변수는 데이터 입력 값을 비교하는게 아닌 할당된 주소값을 비교하기 때문에 주소 값이 달라 같지않다고 표시된다.
그래서 주소값끼지 비교하기 위해서는 equals 메서드를 사용해 해결을 하면 된다.
String a = "aaa"
String b = "aaa"
String c = new String("aaa")
라고 했을 때 a == b로 하면 true가 나오지만 a == c 또는 b == c 라고 하면 false로 나온다.
변수를 대입하면 같은 주소값으로 설정되어 true가 나오지만 새로운 문자열을 선언한 경우 대입한 것과 다른 주소값이 설정 되다보니 위에서 언급한것 처럼 equals로 처리하면 해당 변수 안에 있는 데이터 값을 비교하게 해준다.
'국비지원(국비교육) 웹 개발자 과정' 카테고리의 다른 글
국비지원 JAVA(자바) 프로그래밍 (JSP,SESSION,로그인, 로그아웃) (0) | 2023.01.25 |
---|---|
국비지원 JAVA(자바) 프로그래밍 (application 내장 객체 ) (0) | 2023.01.20 |
국비지원 JAVA(자바) 프로그래밍 (JSP,SERVLET,서블릿,스크립트릿,선언문) (0) | 2023.01.18 |
국비지원 JAVA(자바) 프로그래밍 (뷰(View), 가상테이블,ERDM,ERDCloud, lucidchart ,JSP,servlet(서블릿)) (0) | 2023.01.17 |
국비지원 JAVA(자바) 프로그래밍 (데이터베이스, SQL문,제약조건,공공데이터포털,트랜잭션) (0) | 2023.01.16 |