dot notation post.html {% load static %} {{ post.title }} {{ post.excerpt }} 1. post.hmtl 은 어디선가 include 된다2. include 될때 post 라는 dictionary 를 넘겨받는다 .3. {% url %} 과 {% static %} 태그 안에서도 post 객체에 필드에 접근이 가능하다 . Django 2024.05.15
MySQL 과 연동/ MAVEN pom.xml 에 의존성 추가 mysql mysql-connector-java 8.0.12 application.properties 수정spring.jpa.show-sql=truespring.datasource.url=jdbc:mysql://localhost:3305/todos# mysql에 생성한 사용자 계정 정보를 써야 합니다.spring.datasource.username=todos-user# 자신의 패스워드spring.datasource.password=dummytodosspring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialectspring.jpa.hibernate.ddl-auto=update JAVA 2024.05.10
data.sql 파일로 데이터 초기화 하기/ MAVEN resource/data.sql 작성 insert into todo(ID, USERNAME, DESCRIPTION, TARGET_DATE,DONE)values (1, 'hyukjin', 'Example Description', CURRENT_DATE(),false); 스프링부트가 시작될때 자동으로 data.sql 실행 하지만 todo 테이블이 생성되기 전에 위의 쿼리를 실행하기 때문에 오류가 날 수 있음 application.properties 에 다음의 속성 추가spring.jpa.defer-datasource-initialization=true 이제 스프링 부트가 시작될때 더미 데이터 값을 data.sql 에서 입력 할 수 있다! JAVA 2024.05.10
다이나믹 라우팅 이전 게시글에서 특정 GET 요청에 대한 라우터를 만들어 봤다 .하지만 모든 라우터를 하나하나 만들기엔 내 시간이 부족하다 이번에는 다이나믹 라우팅을 써보자! challenges/urls.py 를 다음과 같이 수정하자from django.urls import pathfrom . import viewsurlpatterns = [ path("", views.monthly_challenge)] 는 pathVariable 이라고 생각하면 된다. challenges/views.py 를 다음과 같이 수정하자from django.shortcuts import renderfrom django.http import HttpResponse, HttpResponseNotFound# Create your views he.. Django 2024.05.10
CSS 파일 가져오기 현재 폴더 구조 index.html{% extends "base.html" %}{% load static %}{% block css_files %} {% endblock %}{% block page_title %}All challenges{% endblock %}{% block content%}{% include "challenges/include/header.html" with active_page="index"%} {% for month in months %} {{ month|title}} {% endfor %} {% endblock %}1. {% load static %} 키워드 추가 href 속성으로 static 파일을 임포트 할 수.. Django 2024.05.09
Spring Security + H2 데이터 베이스 접속 / MAVEN 다음의 의존성 추가 org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 runtimeh2database 의존성은 jar 파일 압축에 포함되면 안됨. scope 를 runtime 으로 설정. application.properties 다음 추가spring.datasource.url=jdbc:h2:mem:testdbIn memory db 를 사용하고, 접속 url 을 fix 하겠다. 하지만 이것만으론 h2-console 에 접속할 수 없다. filterChain 메서드를 SpringSecurityConfiguration 에 추가해주자@Beanpublic SecurityFilterChain filterCha.. JAVA 2024.05.09
Spring Security 시작하기 / MAVEN 다음의 의존성 추가 org.springframework.boot spring-boot-starter-security SpringSecurityConfiguration.java 작성package com.hyukjin.springboot.myfirstwebapp.security;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.security.core.userdetails.User;import org.springframework.security.core.userdetails.UserDetails;impo.. JAVA 2024.05.09
JSP Fragment 사용 jsp폴더 밑에 common 폴더 생성jsp Fragment 의 파일 확장자는 jspf 이다. 우리는 이미 application.properties 에서 아래의 설정을 해주었다spring.mvc.view.prefix=/WEB-INF/jsp/spring.mvc.view.suffix=.jsp그러므로 Fragment 서빙이 가능하다 listTodos.jsp 에서 프레그먼트를 삽입 해보겠다. Your Todos Description Target Date Is Done? .. JAVA 2024.05.08
Predicate 다음의 코드를 보자TodoService.javapublic void deleteById(int id) { Predicate predicate = todo -> todo.getId() == id; todos.removeIf(predicate);}id 를 넘겨받아 특정 todos 목록을 삭제하는 서비스 이다.removeIf 는 모든 todos 를 순회하며 탐색한다. public Todo findById(int id) { Predicate predicate = todo -> todo.getId() == id; Todo todo = todos.stream().filter(predicate).findFirst().get(); return todo;}같은 predicate 문법을사용하여.. JAVA 2024.05.08
커맨드 객체사용/Validation/tag/ MAVEN todo.jsp Enter Todo Details Description: input type 이 hidden 이면 value 를 직접 지정해 줘야함 @PostMapping("add-todo")public String addNewTodo(ModelMap model, Todo todo) { String username = (String) model.get("name"); todoService.addTodo(username, todo.getDescription(), LocalDate.now().plusYears(1), false); return "redirect:list-todos";}addNewTodo 컨트롤러 에서.. JAVA 2024.05.08