classList는 자바스크립트에서 사용가능함
그래서 속성들에 직접접근은 힘들고 배열에서 꺼내와야함 ex) console.log($(this).[0]);
받아올 요청의 경로안에 변수가 있는경우
파라메터 자리에 @pathvariable 사용해줌
@PutMapping(value="/update/{col}/{val}/{no}")
public HashMap<String, Object> update(@PathVariable HashMap<String, String>params){
logger.info("update params : {}",params);
return null;
}
<update id="update" parameterType="hashmap">
UPDATE team_project SET ${col} = #{val} where No=${no};
</update>
위처럼 UPDATE하면 안되는 이유 : 저렇게 하면 코드 한 줄만 나오고 아주 깔끔하고 좋지만 보안상 매우 취약함, col 자리에 No을 넣어두면 No이라는 이름의 칼럼이 바뀌어지게 되는데 여기엔 pk가 걸려있어서 pk값이 바뀔 수 있음(->코드 인젝션 )
-> 이렇게 바꿔줘
<update id="update" parameterType="hashmap">
UPDATE team_project set
<if test="col.equals('team')">team=#{val}</if>
<if test="col.equals('leader')">leader=#{val}</if>
<if test="col.equals('staff1')">staff1=#{val}</if>
<if test="col.equals('staff2')">staff2=#{val}</if>
<if test="col.equals('staff3')">staff3=#{val}</if>
<if test="col.equals('staff4')">staff4=#{val}</if>
<if test="col.equals('staff5')">staff5=#{val}</if>
<if test="col.equals('staff6')">staff6=#{val}</if>
<if test="col.equals('project')">project=#{val}</if>
where no = #{no}
</update>
WebClient
외부 서버와 통신할 때 사용함
webclient는 spring 5.0부터 지원한다
전에는 외부서버와 통신할 때 HttpConnection을 사용했었음 -> RestTemplate로 바뀜 -> 지금은 WebClient(=webflux : 비동기라 속도면에서 우월, 순서없이 날라가는게 문제)
webClient는 non-blocking(비동기) 방식을 지원하며, 속도가 빠르다
함수지향형 프로그램(메서드 체인 사용한 것 처럼 그냥 다 함수로 이루어져있음)
인터페이스라 객체화 못함 -> 인터페이스는 본인 메서드 갖지 못함 -> but 디폴트메서드와 스태틱 메서드는 가질 수 있음
retrieve() : 응답해주는 것 중에서 responsebody값만 가져온다
exchange() : body + header + status 등도 가져온다 ( 너무 많이 가져오는게 문제)
bodyToMono : 데이터가 0~1개 처리될 경우 (동기식)
bodyToFlux : 데이터가 한번에 여러개 처리될 경우 (비동기식)
'Spring Boot' 카테고리의 다른 글
dd (0) | 2023.06.05 |
---|---|
11_WebClient와 12_ApiServer를 한 이유 (0) | 2023.06.01 |
필드 주입과 생성자 주입, rest, @RestController (0) | 2023.05.30 |
spring boot 스프링부트 (0) | 2023.05.25 |
GetMapping, PostMapping, hashmap단점, 쿼리로그 찍기 (0) | 2023.05.25 |