가장 기본은 div contenteditable 을 사용하는 것 두번쨰는 submit 으로 넘어온것을 filter 하는 메서드를 만드는 것 그랑 비슷한 다른 방식이 servlet-filter 방식

div contenteditable 이 기본적으로 XSS나 CSRF 같은 공격을 막게끔 설계되어있습니다~

 

 

Q.

그럼 form 태그안에 input type="text"처럼 div에 contenteditable=true 라고 주고 name 값 줘서 값 넘겨야 된다는 말씀인가요..?? 아까 div에 name값 줘서 넘겼는데 안넘어가서요 ㅠ ㅠ

 

A.

div태그에 content editable을 주고 그 옆에 display:none 상태의 textarea 에 name값을 준다음 submit 했을때 div 의 내용을 꺼내 textarea로 옮겨서 보내면 됩니다

'디지털 컨버전스 > Java Script' 카테고리의 다른 글

[JS] DOMContentLoaded  (0) 2020.07.10
[JS] 파일 업로드 추가하기  (0) 2020.06.22
[인터페이스 구현]  (0) 2020.05.28
[Javascript] Cookie  (0) 2020.05.19
[JQuery] Drag & Drop  (0) 2020.04.21

WEB-INF 안의 jsp는 외부접속 차단

 

location.href는 클라이언트 url을 변경하는 명령어

 

컨트롤러를 통해서 forward만 허용 (클라이언트의 url은 그대로고 서버측의 내부 접속을 보여주는 것이므로)

 

redirect는 외부 접근

 

GSON 라이브러리 설치하여 AJAX 활용
		<!-- Gson -->
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.8.5</version>
		</dependency>

1. 라이브러리 추가

Spring JDBC

 

https://mvnrepository.com/artifact/org.springframework/spring-jdbc/5.1.9.RELEASE

 

Maven Repository: org.springframework » spring-jdbc » 5.1.9.RELEASE

org.springframework spring-jdbc 5.1.9.RELEASE // https://mvnrepository.com/artifact/org.springframework/spring-jdbc compile group: 'org.springframework', name: 'spring-jdbc', version: '5.1.9.RELEASE' // https://mvnrepository.com/artifact/org.springframewor

mvnrepository.com

<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.1.9.RELEASE</version>
</dependency>

 

의존 관계

Spring JDBC

-> DBCP -> OJDBC

 

 

프레임워크 버전명

 

properties 태그는 변수 선언과 같이 사용가능

(버전명 변경시 properties의 값만 수정해주면 나머지 ${org.springframework-version}도 따라서 변경 )

 


root-context.xml

 

 

2. 의존성 주입

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<!-- Root Context: defines shared resources visible to all other web components -->
				<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
			<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
			<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
			<property name="username" value="kh"/>
			<property name="password" value="kh"/>
			<property name="initialSize" value="30"/>
		</bean>
		
		<!-- JDBC Template : Spring JDBC로 업그레이드 된 JDBC를 사용할 수 있는 클래스 -->
		<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
			<property name="dataSource" ref="dataSource"></property>
		</bean>
		
</beans>

DAO

Insert

SQL만 남기고 삭제

첫번째 인자값 : sql

두번째 인자 : 가변인자 (?에 들어갈 값)

커밋 클로즈 트라이리소스 별도로 사용할 필요 없음

 

select

물음표를 채워서 sql을 날리는 경우 아래것

 

call-back 패턴

함수를 값으로 넘길 수 없기 때문에

인스턴스 안에 함수를 만들게하고 함수를 담은 인스턴스를 인자로 전달

 

 

인터페이스는 인스턴스화 불가능 (추상 클래스는 new 불가능?)

 

추상클래스 안의 추상 메서드가 정의되어 있지 않기 때문에

mapRow 라는 추상메서드 오버라이드 해주먼 new 가능

함수가 아닌 인스턴스로 콜백패턴 구현

 

mapRow 함수는 데이터베이스값이 어디로 들어가야 할지 알려줌

컬럼 이름에 맞춰서 자동으로 넣어주기 (mybatis는 가능, spring JDBC에서는 불가)

 

오브젝트로 반환시 일일히 다운캐스팅 해서 사용해야함

제너릭 지원

while rs.next 등 나머지는 Spring JDBC가 알아서

 

 

select 로 리스트 받기

jdbc.query

 

 

홈컨트롤러 동작 확인

 

 

boolean값 반환?

 

 

DB로부터 받을 값을 어떤 형식으로 받을 것인가?

 

 

홈컨트롤러에서 다른 예시

 

 


DTO 하나를 리턴

queryForObject

 

마이페이지 만들기 쿼리를 날리면서 , 물음표를 채우고, RowMapper

 

 

 

 


query

 

update


예외처리

try - catch 구문 반복

 

Spring의 @ 방식으로 예외처리 하기

 

ExceptionHandler 에서는 throw Exception 하지 않음

 

try-catch 가 ExceptionHandler 보다 우선

 

일괄적으로 처리하고 싶은 것은 @ExceptionHandler로

독자적으로 처리하고 싶은 것만 try-catch


컨트롤러가 여러개 일 경우?

 

ExceptionHandler가 여럿일 수도 있지만

그런경우 예외의 종류가 여러개여야 함

 

예외를 발생시킬 때

숫자의 형태와 관련된 예외 : NumberFormatException

 

컨트롤러로 만들기

 

@ControllerAdvice

모든 컨트롤러에서 발생하는 예외를 일괄 처리

 

package kh.spring.controller;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

@ControllerAdvice
public class ExceptionController {
	
	@ExceptionHandler
	public String exceptionHandler(Exception e) {
		e.printStackTrace();
		System.out.println("Exception Handler : 에러가 발생했습니다");
		return "error";
	}
	
	@ExceptionHandler
	public String exceptionHandler(NumberFormatException e) {
		e.printStackTrace();
		System.out.println("NFException Handler : 에러가 발생했습니다");
		return "error";
	}
	
	@ExceptionHandler
	public String exceptionHandler(NullPointerException e) {
		e.printStackTrace();
		System.out.println("NULLException Handler : 에러가 발생했습니다");
		return "error";
	}
	
}

 

리퀘스트 인코딩 역할

 

 

리스폰스 인코딩 필요

 

 

 

AJAX가 아니라면 인코딩 구문 들어가 있음

 

 

AJAX인 경우 MVC2 당시

한글 깨짐을 방지하기 위한 setcharencoding, 등등 

 

스프링에서는 @RequestMapping  에 옵션 추가

 

myPage, Json 데이터인 경우

 

JSON이 아닌 텍스트인 경우

 

 

세션이 필요할 때마다 매개변수에 넣어놓기 불편

-> 스프링 컨테이너 관리 (세션도 오토와이어드가 가능하다.)

주의할점! request는 오토와이어드 불가능

request는 1회용으로 쓰이기 때문에 오토와이어드 부적합 (여러면이 접속시에 문제 발생 가능)

 

아이디 중복체크 (AJAX)

다른페이지도 이동(포워드 리다이렉트)이 아닌 결과값 보내기

boolean 값 보내기

스트링으로 변환해서 보내기

기본적으로 리턴값을 forward한 페이지 이름으로 판단

@ResponseBody : 페이지 이름이 아니라 결과 자체를 스트링으로 반환

 

방법 1.

매개변수. 셋캐릭터인코딩

 

 

방법 2.

servlet filter encoding utf-8

 

https://gmlwjd9405.github.io/2019/01/01/spring-utf8.html

 

[Spring] Spring UTF8 한글 설정하기 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

<filter> 
    <filter-name>encodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
       <param-name>encoding</param-name> 
       <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
       <param-name>forceEncoding</param-name> 
       <param-value>true</param-value> 
    </init-param> 
 </filter> 
 <filter-mapping> 
    <filter-name>encodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
 </filter-mapping>

web.xml에 붙여넣기

모든 url로 들어오는 값 인코딩

 

 

+ Recent posts