Web Programming/Java Spring 11

자바 스프링 게시판 - 게시글 저장하기

Home에서 글쓰는 페이지를 갈 수 있는 버튼을 만든 후, 페이지를 만듭니다. 제목 내용 일단 PostController를 만듭니다. 물론 그 전에 post 모델을 만들어야겠죠. # import 생략 @Entity @Table(name = "post") public class Post { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String userName; private String title; private String content; private int count; public String getTitle() { return title; } public void setTitle(String ti..

Java Spring Security를 이용해서 회원가입 구현하기

저번 포스팅까지 해서 로그인 기능을 구현하는데 성공했습니다. Spring Security와 JPA, H2 Database를 사용해서 로그인 기능을 구현했는데요, 이번 포스팅에서는 회원가입 기능을 구현해 보도록 하겠습니다. 다행인 건, 회원가입 기능은 로그인 기능보다 구현하기 간단하다는 것입니다. 서비스나 DAO, DTO 등도 사용하지 않고 구현을 해보도록 하겠습니다. 일단 register.html 페이지를 만듭니다. 회원 가입 회원 가입하기 비밀번호를 잃어버리셨나요? 이미 가입하셨나요? 로그인하세요 html을 만들 때 주의할 점은, 현재 Thymeleaf를 쓰고 있기 때문에 head 전에 태그를 붙여줘야 된다는 점입니다. 또, name을 camelcase 형태로 model entity에서 지정해준 대로 ..

자바 스프링 부트로 hello world 프린트하기

오늘은 스프링 부트로 hello world 를 print하는 방법을 포스팅 하도록 하겠습니다. 일단 STS(Spring Tool Suite)를 받은 후, 새로운 project를 만듭니다. 이렇게 프로젝트 관련된 이름과 package 이름도 설정해 준 후, 필요한 dependency들을 세팅해 줍니다. 현재로서 필요한 dependency는 spring-boot-starter-web 뿐입니다. 막상 세팅을 하지 않았다고 해도 나중에 pom.xml에 추가할 수 있으니 너무 걱정하지 않아도 됩니다. 다 세팅한 이후에 directoryStructure를 보면, Application.java file이 src/main/java directory안에 생성되어 있는 것을 볼 수 있습니다. 가장 빠르게 hello wor..

JPA 를 이용한 Spring Security 로그인 구현(H2 DB)

오늘은 드디어 JPA를 사용하여 H2 데이터베이스에 있는 유저 정보를 이용해서 로그인을 구현해 보도록 하겠습니다. 일단 UserRepository를 만듭니다. package com.myBoard.demo.model; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository { Optional findByUserName(String userName); } UserRepository는 Interface로써, 실제 함수가 아니라, 함수를 정의해 놓은 것에 불과합니다. Repository 패턴을 왜 사용하는지, 또 ..

Spring Security 를 이용해서 UserDetailService 사용하기

이 포스팅은 지난 포스팅에서 이어서 나온 내용입니다. 지난 포스팅에서는 WebSecurityConfig를 만들어서 커스텀 로그인을 만들었습니다. home과 / 는 로그인을 하지 않아도 접속하게 만드는 것이 저번 포스팅까지 하였습니다. package com.myBoard.demo; // import 생략... @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override public void configure(WebSecurity web) throws Exception { web.ignoring().antMatchers("/css/**", "/vendor/**", "/js/**", "/imag..

Spring Security 사용하기 - WebSecurityConfig 파일 구성하기

Spring Security를 활용해서 custom login page를 만드는 법을 배웠는데, webSecurityConfig file에 대해서 알아보겠습니다. package com.myBoard.demo; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Enable..

JSP vs Thymeleaf

보통 Java spring의 프론트엔드로 JSP를 많이 씁니다. 하지만 Jsp의 장점이자 단점은, html파일이 아니고, java 파일이라는 겁니다. 그래서, java 논리를 쓸 수 있어서 편한 점도 있지만, seperation of concern, 즉, 프로그래밍 디자인적으로 프론트엔드와 백엔드를 나누려는 요즘의 트렌드에 조금 맞지 않다고도 볼 수 있습니다. 참고 url (영어) : www.quora.com/Which-is-better-Thymeleaf-or-JSP 하지만 확실한 건, thymeleaf건 jsp건, 그 문법에 대해서 알아야 한다는 점입니다. 아무리 thymeleaf가 html이라고 해도, 태그가 있기 때문입니다. Name 위와 같이 th를 사용하여 thymeleaf 네임스페이스를 추가해..

Spring Security를 이용해서 custom login page 만들기

spring security를 이용해서 로그인을 만들면, 디폴트 로그인 페이지가 나옵니다. 다음과 같은.. 뭐 최악이라고 할 순 없지만, 이대로 쓰기는 좀 그렇기 때문에, 따로 페이지를 만들려고 합니다. 참고로 이 로그인을 하기 위해서는, username은 user, password는 임시 비밀번호가 콘솔 창에 나옵니다. 그럼 이 화면을 우리가 원하는 화면으로 어떻게 바꿀수 있을까요? WebSecurityConfig.java 파일을 만들고 override를 하면 됩니다. package com.myBoard.demo; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframewor..

h2 데이터베이스 설정과 초기 데이터 구축 (User table)

Spring Boot에서 인메모리 데이터베이스인 h2를 테스트로 사용해 보았습니다. 1. Spring Boot에서 pom.xml에서 dependency를 추가합니다. 그 후, Maven을 사용해 Build 합니다. com.h2database h2 2. application.properties에서 h2 설정을 세팅합니다. spring.h2.console.enabled=true spring.datasource.platform=h2 spring.datasource.url=jdbc:h2:mem:jinmo 3. model package 에서 User class를 세팅해줍니다. package com.myBoard.demo.model; import javax.persistence.*; @Entity @Table(na..

Gradle이란?

Spring을 개발하다보면 계속 나오는 용어 중 하나가 Gradle, Maven, Groovy, Ant, 등이 있다. 여느때 처럼 잘 정리되어 있는 링크 하나 깔고 가도록 하자. blog.naver.com/rnd5691/222108089028 [Gradle] #1.Gradle 개요 및 Maven과의 차이점 1.GradleGradle는 Maven 처럼 빌드 도구이며, Ant와 Maven을 개선해서 나온 비교적 최신 빌드 도구이... blog.naver.com Gradle이란? Gradle은, Apache Ant 및 Apache Maven의 개념을 기반으로 하는 오픈 소스 빌드 자동화 도구이다. Groovy 기반의 DSL(Domain Specific Language)로 작성되어 있어, 동적인 빌드가 가능하다..