일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring#spring#스프링#스프링프레임워크#스프링의존성주입#스프링생성자#스프링기본#국비지원#국비교육#국비지원스프링
- html#HTML#프론트엔드#개발자#코딩#국비지원#국비교육#국비지원프론트엔드#국비지원HTML#국비지원html#국비프론트엔드
- 국비지원JAVA#국비교육JAVA#국비지원자바#국비교육자바#JSP#SERVLET#서블릿#
- Resource #
- db#데이터베이스#오라클#sql
- java
- 개발자도서#개발자책#도메인#DDD#도메인주도개발시작하기#개발스터디#
- 항해99 #항해플러스 #주니어개발자 #주니어개발자역량강화 #주니어개발자멘토링 #개발자사이드프로젝트 #코딩부트캠프 #코딩부트캠프후기
- #
- tibero#티베로#이중화#failvover
- #java#JAVA#프로그래밍#웹개발자
- 국비지원자바#국비교육자바#국비지원java#국비교육java#자바스크립트#프론트엔드
- 자바#Java#배열예시#연습#기초다지기
- 국비지원#국비교육#국비지원자바#국비교육자바#css#HTML#JAVA
- 국비지원#국비교육
- Java#정처기#비트연산자#정보처리기사
- 항해플러스#항해#항해플러스3기#회고
- Java#java#메모리영역#클래스로더#가비지컬렉터
- 쿼리스트링#쿼리문자열#바인딩
- spring#Spring#RequestBody#ResponseBody
- 프로그래밍
- 자바
- 국비지원JAVA
- Java#java#자바#다오#디티오#브이오#dao#dto#vo
- Spring#spring#스프링#스프링프레임워크#스프링자동주입#스프링생성자#스프링기본#국비지원#국비교육#국비지원스프링
- 개발자#it도서#도메인#DDD#ddd
- IntelliJ#인텔리제이#인텔리#단축키
- 국비지원JAVA#국비지원자바#프로그랭#JSP#국비지원JSP#국비교육JSP#웹개발자#코딩
- Java#컴파일러#자바컴파일러#
- Java#JAVA#매개변수
- Today
- Total
개린이 개발노트
국비지원 JAVA(자바) 프로그래밍 (뷰(View), 가상테이블,ERDM,ERDCloud, lucidchart ,JSP,servlet(서블릿)) 본문
국비지원 JAVA(자바) 프로그래밍 (뷰(View), 가상테이블,ERDM,ERDCloud, lucidchart ,JSP,servlet(서블릿))
개린이9999 2023. 1. 17. 06:32
뷰 View
- 논리적인 가상테이블: 실제데이터는 존재하지않고 테이블에 대한 sql 문만 존재
- 저장공간에서도 유리
- 뷰를 이용하면 sql-> 코드복잡단순화(접근 자체가 쉬움)
- 보안성이 뛰어남
권한부여하기(시스템계정에서)
GRANT CREATE VIEW TO SCOTT;
SCOTT계정 접속
뷰(view)생성하는 형식
CREATE [OR REPLACE] VIEW 뷰이름(컬럼명, 컬럼명) // [OR REPLACE]는 생략 가능
AS (뷰에 저장할 SELECT문)
CREATE OR REPLACE -> 만약 생성할 뷰가 없으면 뷰가 생성되고, 생성할 뷰가 있으면 교체
연습해보기
CREATE VIEW VIEW_EMP
AS (SELECT * FROM ENP
WHERE DEPTNO=20);
CREATE VIEW V_EMP
AS(SELECT EMPNO,ENAME,JOB,HIREDATE FROM EMP);
CREATE OR REPLACE VIEW V_EMP
AS
(SELECT ENAME,JOB,TO_CHAR(HIREDATE, 'YYYY-MM-DD') AS HIRE
FROM EMP,DEPT
WHERE EMP.DEPTNO= DEPT.DEPTNO);
SELECT*FROM V_EMP;
CREATE 있으면 생성 없으면 REPLACE로
뷰테이블에서는 컬럼명을 꼭 지정해주는 것이 좋음.
뷰 지우기
DROP VIEW V_EMP;
권한 (DCL)
DDL 데이터 정의어: CREATE, ALTER ,DROP
DML 데이터 조작어: SELECT, INSERT,UPDATE,DELETE
DCL 데이터 제어어: COMMIT, ROLLBACK, GRANT( 권한부여), REVOKE(권한회수)
GRANT CREATE VIEW TO SCOTT
GRANT 권한 TO 사용자
USER
CREATE USER: 사용자 생성
ALTER USER: 사용자 수정
DROP USER: 사용자 삭제
SESSION: 접속
TABLE:테이블
INDEX:인덱스
VIEW: 뷰
SEQUENCE: 시퀀스
ERD
요구조건 분석-> 개념적 설계->논리적 설계->물리적 설계
간단한 ERP 예시
Intelligent Diagramming | Lucidchart
관계도 그릴 수 있는 사이트 ↑
실제예시 ↑
고객, 대여내역, 도서 테이블에 대한 lucidchart 이용 ↓
쇼핑몰 만드려고할 때
회원가입
상품주문
회원가입-> 아이디, 비밀번호 , 이름
상품주문-> 주문코드,상품명, 수량 ,가격,주문일자
지금은 1:N (일 대 다 ) 테이블이지만 다대다면 정규화를 생각해보면 됨
이런식으로 EXPORT TO ERD DATA 도 가능 ↑
↑ 위 사이트에서도 ERD 가능
위처럼 작업 가능 ↑
게시판 설계
게시판 구축을 위한 ERD( 실제로는 보통 검색을 해서 잘 고쳐씀)
회원가입
게시판 글작성
JSP
웹 서버 WAS(Web Application Server)(와스) - 톰캣이 와스 종류 중 하나
정적 페이지 -html,
동적 페이지- jsp
WAS에서 동적인 페이지제공
-웹 컨테이너/ 서블릿 컨테이너
JAVA+ SERVLET + JSP
SERVLET (CLASS라고 생각하면 편함)
서블릿
자바(코드)를 이용해서 웹에 실행되는 프로그램을 만드는 것
웹브라우저는 자바코드를 모름
톰캣에 있는 httpServlet 클래스를 상속받아야 하고 상속받은 클래스가 서블릿(servlet)클래스가 됨
html에서 form 태그
<form method="get/post" action=>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form method="get" action="Sample01">
<input type="submit" value="get">
</form>
<form method="post" action="Sample01">
<input type="submit" value="post">
</form>
</body>
</html>
package unit01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Sampe01
*/
@WebServlet("/Sample01")
public class Sample01 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Sample01() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//바이너리(이진수), 바이트 형식으로 입출력 하는것이 아니라 문자를 입출력 하기때문에 PrintStream사용
// PrintStream은 문자(다국어) 사용하기 번거러움
// printWriter는 비교적 쉬워서 이것을 사용
PrintWriter out= response.getWriter();
for (int i = 0; i < 10; i++) {
out.print("<h1>hello doget</h1>");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("dopost호출");
}
}
<%@page import="sun.tools.jar.resources.jar"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int i=10;
int j=20;
%>
<h1><%=i+j %></h1>
</body>
</html>
정리
서블릿
->자바클래스 안에 html 작성 (스트림이용)
서블릿이란? 클라이언트의 요청(Request)을 받아주고 응답(Response)할 수 있게, 웹서버와 소켓으로 통신하며 대표적인 예로 톰캣(Tomcat)
[JSP] 서블릿(Servlet)이란? - MangKyu's Diary (tistory.com)
JSP
->html 안에 자바코드를 작성
front 단은 jsp에서
backend 단은 서블릿에서 주로 사용
서블릿
URL Mapping
뒤에 오는 URL 이름 바꾸기
한글깨짐 현상 해결하기
한글은 2BYTE 톰캣의 기본 인코딩방식은 한글자당 1BYTE로 처리
서블릿 동작원리
톰캣이 작동되면 -> JVM(자바버츄얼머신)이 작동 -> 자바문법에 맞는 서블릿을 처리하게됨
동작흐름
브라우저에서 요청 -> WAS에 웹서버가 서블릿 요청을 인식-> 서블릿컨테이너에게 수행하도록 넘김
-> 서블릿은 스레드를 작동 -> 서블릿 객체를 생성하고 처리 -> 서블릿 객체의 처리가 완료되면 스레드도 종료
-> 서블릿 수행결과가 웹서버로 전달 -> 브라우저에게 전달하며 끝남
서블릿 Life cycle ( 라이프 사이클)
쿼리스트링
클라이언트(사용자) -> 값을 전달 ( 서버한테)
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form method="get" action="qs">
횟수 입력 : <input type="text" name="cnt">
<input type="submit" value="전송">
</form>
</body>
</html>
package unit01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class QueryString
*/
@WebServlet("/qs")
public class QueryString extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public QueryString() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
//request 문자로 전달되므로 형변환 시켜야함
int c = Integer.parseInt(request.getParameter("cnt"));
PrintWriter out = response.getWriter();
for(int i=0; i<c; i++) {
out.print("안녕<br>");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
서버 실행 후 입력창에 원하는 숫자를 입력 후 전송 버튼을 누르
주소창에 클라이언트가 전달 한 값을 서버가 처리하면서 주소값도 알맞게 바뀌고
값도 정상적으로 출력
- get : 길이제한 255 (보안에 취약)
- post 길이제한 없음 (보안이 get보다 좋은편)
HTML에서 이름과 나이를 입력하고 전송을 누르면
-> 해당하는 사람의 이름과 나이가 출력되게끔
결과물은 이름: XXXX 나이:XXXX살로 되게끔 비고: 20살이상이면 성인, 아니면 청소년
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="qs">
이름 입력 : <input type="text" name="name">
나이 입력 : <input type="text" name="age">
<input type="submit" value="전송">
</form>
</body>
</html>
package unit01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class QueryString
*/
@WebServlet("/qs")
public class QueryString extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public QueryString() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
//리스폰 요청받은거 반환
PrintWriter out = response.getWriter();
//request 문자로 전달되므로 형변환 시켜야함
String name = request.getParameter("name");
int c = Integer.parseInt(request.getParameter("age"));
// out.printf("이름 : %s\n <br> 나이 : %d\n <br>", name, c);
out.print("이름 : " + name + "<br>");
out.print("나이 : " + c + "<br>");
if(c >= 20) {
out.print("비고 : 성인");
} else {
out.print("비고 : 청소년");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
doGet(request, response);
}
}
'국비지원(국비교육) 웹 개발자 과정' 카테고리의 다른 글
국비지원 JAVA(자바) 프로그래밍 (JSP,표현식,MVC,MVC패턴,오브젝트비교) (0) | 2023.01.19 |
---|---|
국비지원 JAVA(자바) 프로그래밍 (JSP,SERVLET,서블릿,스크립트릿,선언문) (0) | 2023.01.18 |
국비지원 JAVA(자바) 프로그래밍 (데이터베이스, SQL문,제약조건,공공데이터포털,트랜잭션) (0) | 2023.01.16 |
국비지원 JAVA(자바) 프로그래밍 (데이터베이스, 오라클,SQL,SQLD,) (0) | 2023.01.13 |
국비지원 JAVA(자바) 프로그래밍 (데이터베이스, 오라클,SQL,SQLD,) (0) | 2023.01.12 |