url에서 값을 가져올 때
정규식 img src 추출
php폴더의 php.ini에서 post_max_size로 전체 보내는 용량 설정
subject LIKE='%{$sf}%'로 하면 sql injection공격을 받을 수 있기 때문에사용하면 안됨
url에서 값을 가져올 때
정규식 img src 추출
php폴더의 php.ini에서 post_max_size로 전체 보내는 용량 설정
subject LIKE='%{$sf}%'로 하면 sql injection공격을 받을 수 있기 때문에사용하면 안됨
공통부분 따로 분리 위치 값이 다를 때 처음부터 정의해줌.
참고자료 php회원사이트만들기 #35
CREATE TABLE board_manage(
idx INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) DEFAULT '' COMMENT '게시판 이름',
`btype` ENUM('board', 'gallery') DEFAULT 'board' COMMENT '게시판 타입',
`cnt` INTEGER DEFAULT 0 COMMENT '게시물 수',
`create_at` DATETIME,
PRIMARY KEY(idx)
);
enum은 둘중 하나로 한정지어서
index를 사용할 때의
장점 검색속도가 빨라짐
단점 insert, delete, update속도가 느림
용량이 좀 증가
속도가 늦어질 때 중복해서 게시판이 여러개 생성될 수 있다.
F12 네트워크 NO throttling에서 slow 3g로 변환하면 느린 속도로 바뀐다.
fileimage를 넣을 때 태그 안에 multiple을 넣으면 여러장을 넣을 수 있다.
단방향 암호화
ALTER TABLE `member` ADD COLUMN LEVEL TINYINT UNSIGNED DEFAULT 1;
레벨을 부여하여 관리자와 사용자를 나눔.
HTML, CSS, JAVASCRIPT는 웹브라우저에서 동작하는 스크립트 언어.
PHP는 웹서버에서 동작하는 언어로 데이터베이스 등과 연동되어 회원관리, 게시판 등의 기능을 만드는데 사용가능.
Xampp프로그램
Apache + PHP +MariaDB 프로그램을 한번에 설치
Apache config(httpd.conf)에 Listen에 포트 번호 변경 가능
localhost:포트번호 => localhost:포트번호/dashboard
연결가능
C:\xampp\htdocs vscode에서 폴더 선택
control+, = 설정
설정 > php > settings.json
확장에서 PHP Intelephense 설치
php기초 문법, 변수 표기법, 주석처리, 자바스크립트와 차이
!+tab해서 html로 바꿈
문장이 끝난 후 반드시 ;
마지막에서는 빼도 되지만 그래도 쓴다라고 생각
변수에 $사인
let, const는 없음.
주석은 자바스크립트와 동일
변수의 범위, 지역변수, 글로벌 변수
php같은 경우 소스 보기를 해도 주석으로 처리된 내용이 보이지 않지만 (서버사이드 언어, 보안상 좋음) html의 경우 주석으로 처리된 내용이 보인다.
난수발생, 반올림, 절대값, 루트값, 상수, 파이
연산자
테이블 간의 관계 추가
Car테이블과 일대다 관계에 있는 Owner라는 새 테이블을 추가해보자. 여기서 일대다 관계라는 것은 소유자 한명이 자동차 여러대를 가질 수 있지만 한 자동차의 소유자는 한명이라는 뜻이다.
먼저Owner엔티티와 리포지터리를 만듦.
일대다 관계를 추가하려면 @ManyToOne 및 @OneToMany 어노테이션을 이용한다. Car 엔티티 클래스에서는 @ManyToOne 어노테이션으로 관계를 정의.
RESTful 웹 서비스 만들기
스프링 부트에서 모든 HTTP 요청은 컨트롤러 클래스로 처리. RESTful 웹 서비스를 만들려면 먼저 컨트롤 클래스를 만들어야 한다.
스프링 데이터 REST(Spring Data REST)는 스프링 데이터 프로젝트의 일부 이며 스프링으로 쉽고 빠르게 RESTful 웹 서비스를 구현할 수 있게 해준다. 스프링 데이터 REST를 이용하려면 다음 의존성 추가.
<!--rest 의존성-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
application.properties 파일에서 서비스의 엔드포인트(API가 서버셍서 리소스에 접근할 수 있도록 가능하게 하는 URL)를 정의할 수 있다.
#스프링 데이터 RESTful setting
spring.data.rest.basePath=/api
게시판이 여러 이미지를 가지고 있을 때,JPA (0) | 2023.09.13 |
---|---|
BoardDao와 BoardService 인터페이스의 차이 (0) | 2023.09.06 |
springBoot file (0) | 2023.09.05 |
스프링 부트 api (0) | 2023.09.04 |
Model (0) | 2023.08.24 |
이미지는 게시판에서만 쓸때 이미지 service를 따로 만들 필요 없이 imageVO와 ImageDao, Image.xml만 만듦.
게시판은 이미지를 가지고 있다.
public class multipleBoardVO extends CommonVO{
private List<ImageVO> images;
로 외부에서 프로젝트를 만들 수 있다.
@EnableAutoconfiguration: 스프링 부트 자동 구성을 활성화.
@ComponectScan: 스프링 부트 컴포넌트 검색으로 애플리케이션의 모든 컴포넌트를 찾음.
@Configuration: 빈 정의의 원본으로 쓸 수 있는 클래스를 정의.
ORM, JPA,하이버네이트
ORM: 데이터를 객체지향 패러다임으로 조작하고 데이터를 검색하는 기술.
데이터 베이스 구조보다는 객체지향 개념에 기반을 두고 있어 개발 속도를 높이고 소스코드의 양이 줄어든다.
ORM을 사요하면 데이터베이스로부터 거의 독립적인 코드 작성이 가능하며 사용하는 DBMS에 따라 조금씩 달라지는 SQL문에 관해 개발자가 걱정할 필요가 없다.
JPA: 자바 개발자를 위한 객체-관계형 매핑을 제공. JPA엔티티는 데이터베이스 테이블 구조를 나타내는 자바 클래스. 엔티티 클래스의 필드는 데이터 베이스 테이블의 열을 나타낸다.
하이버네이트: 가장인기 있는 JPA구현체이고 스프링부트에서 기본 구현체로 활용된다.
엔티티 클래스 만들기
엔티티 클래스: JPA의 @Entity 어노테이션을 사용하는 자바클래스. 엔티티 클래스는 표준 자바 빈의 명명 규칙을 따르며 적절한 getter와 setter를 가진다. 클래스 필드의 가시성은 private로 설정된다.
JPA: 애플리케이션이 초기화 될 때 클래스 이름으로 데이터베이스 테이블을 만든다. 데이터베이스 테이블에 다른 이름을 지정하려면 엔티티 클래스에서 @Table어노테이션을 이용하면 된다. (클래스 이름이 테이블명이 된다.)
메서드가 한 항목만 반환할 때는 T 대신 Optional<T>를 반환.
Optional: 값을 포함하거나 포함하지 않은 단일 값 컨테이너. 값이 있으면 isPresent()메서드가 true를 반환하고 없으면 false를 반환.값이 있으면 get()메서드로 값을 구할 수 있다.
스프링 데이터 리포지터리에 쿼리를 정의할 수 있다. 쿼리는 접두사(findBy)로 시작해야하고 그 다음에 쿼리에 이용할 엔티티 클래스 필드가 나와야한다. like가 아니라 일치하는 값.
findByBrand, findByColor, findByYear
jpa (0) | 2023.09.14 |
---|---|
BoardDao와 BoardService 인터페이스의 차이 (0) | 2023.09.06 |
springBoot file (0) | 2023.09.05 |
스프링 부트 api (0) | 2023.09.04 |
Model (0) | 2023.08.24 |
요약하면, BoardDao는 데이터베이스와 직접적으로 상호작용하며 데이터 액세스 레이어를 나타내고, BoardService는 비즈니스 로직을 처리하고 이를 컨트롤러에 제공하는 서비스 레이어. 이를 통해 코드의 모듈화와 유지보수성을 향상시킬 수 있으며, 역할과 책임을 분리하여 프로젝트를 더 잘 구성할 수 있습니다.
jpa (0) | 2023.09.14 |
---|---|
게시판이 여러 이미지를 가지고 있을 때,JPA (0) | 2023.09.13 |
springBoot file (0) | 2023.09.05 |
스프링 부트 api (0) | 2023.09.04 |
Model (0) | 2023.08.24 |