20240308 Spring 18 - egov, thymeleaf 이어서

Leafy·2024년 3월 8일
0

중앙_자바

목록 보기
55/76

CS지식 (읽어보자)

나는 위대하다 <-??

div로 table 만들기

!!!
전자정부 페이징은 gradle 지원 안한다
(편법사용)

thymeleaf - message, function

#

<span th:text="${#lists.size(board)}"></span>

th:unless=""에는 th:if=""와 같은 조건이 들어간다...
그냥 아니면 이렇게 해라~(if(!조건)) 이런 뜻이어서 따로 써도 되는지 if랑 꼭 같이 써야하는지는 모르겠다


<button type="button" class="btn btn-outline-dark" onclick="location.href='/write?cate=${board[0].mtcate}'">글쓰기</button>

이건 안됨.
-> 결과가 http://localhost/write?cate=${board[0].mtcate} 이렇게 나옴.

변수를 써야한다.

<button type="button" th:with="cate=${board[0].mtcate}" 
                class="btn btn-outline-dark" th:onclick="|location.href='@{/write(cate=${cate})}'|">글쓰기</button>

th:with="cate=${board[0].mtcate}"
이렇게 변수를 선언해주고

th:onclick="|location.href='@{/write(cate=${cate})}'|"
파이프로 감싸서 링크까지 해줘야 한다.

param.cate? <- 파라미터가 안들어오면 문제, 안 들어올 때 막아주고 그런게 필요하다,,,

<button type="button" class="btn btn-outline-dark" th:onclick="|location.href='@{/write(cate=${param.cate})}'|">글쓰기</button>

글쓰기 기능

// 글 쓰고 자기가 쓴 글로 이동시키려면 mybatis selectKey
@PostMapping("/write")
public String write(@RequestParam Map<String, Object> map) {
	System.out.println(map);
	return "write";
}

글써보면 이렇게 온다.

일단 form으로 했는데 가상 form 복습할것


확인,,

util getIP

Util에는 @Component 어노테이션을 붙여준다.

public HttpServletRequest req() {
	ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
	HttpServletRequest request = sra.getRequest();
	return request;
}

public HttpSession getSession() {
	HttpSession session = req().getSession();
	return session;
}

// ip
public String getIP() {
	HttpServletRequest request = req();
	String ip = request.getHeader("X-FORWARDED-FOR");
	if (ip == null) {
		ip = request.getHeader("Proxy-Client-IP");
	}
	if (ip == null) {
		ip = request.getHeader("WL-Proxy-Client-IP");
	}
	if (ip == null) {
		ip = request.getHeader("HTTP_CLIENT_IP");
	}
	if (ip == null) {
		ip = request.getHeader("HTTP_X_FORWARDED_FOR");
	}
	if (ip == null) {
		ip = request.getRemoteAddr();
	}
	return ip;
}

summernote lite

(안썼나,,)
https://late90.tistory.com/347
https://programmer93.tistory.com/27

자바17) 텍스트 블럭

JSON 쓸 때 좋다.

switch


key 되는거 int까지만 된다. (String 말고 Object 안됨)

jdk 17 말고는 case에 1, 2 이렇게 못 씀

  • 화살표 문법도 됨.

switch 결과를 String에 받기도 가능.


로그인과 로그아웃

application.properties에 세션 지속시간을 적는다

#session time out = 3600 -> 1시간, 1800 -> 30분
server.servlet.session.timeout=3600
@GetMapping("/logout")
public String logout(HttpSession session) {
	//HttpSession session = util.getSession();
	if(session.getAttribute("mid") != null) {
		session.removeAttribute("mid");
	}
	if(session.getAttribute("mname") != null) {
		session.removeAttribute("mname");
	}
	session.invalidate();
	return "redirect:/login";
}

타임리프 경로변수

https://memo-the-day.tistory.com/132

<li class="nav-item"><a class="nav-link me-lg-3" th:href="@{/myInfo@{id}(id = ${session.mid})}">안녕, [[${session.mname}]]!</a></li>

테스트 코드

JUnit Test


바로 여기

있는 아이디와 패스워드로 테스트해보면 결과창이 초록!

이런 것을 앞으로 많이 할것이다~

로그인이라는 말의 유래

4개의 댓글

comment-user-thumbnail
2024년 3월 8일

빨리 더 써주세여~

2개의 답글