>이클립스 마켓에서 설치가 되지 않아서 브라우저에서 설치
끝
로그인 설정
IndexService > write
public int write(Map<String, Object> map) {
//여러분 db에 있는mid를 넣어주세요
map.put("mid", util.getSession().getAttribute("mid"));
//ip도
map.put("ip", util.getIP());
return indexDAO.write(map);
}
로그인안했으면 로그인 페이지로, 로그인했다면 아래 문장으로
freeboard.html
<button type="button" th:with="cate=${board[0].mtcate}"
class="btn btn-primary" th:onclick="|location.href='@{/write(cate=${cate})}'|">글쓰기</button>
<button type="button" class="btn btn-primary"
th:onclick="|location.href='@{/write(cate=${param.cate})}'|">글쓰기</button>
IndexCtroller >write
@PostMapping
글쓰고 freeboard창으로 이동하기
>return 값을 "write" 에서 "redirect:/freeboard"으로 수정 / 아래와 같이 return "redirect:/" + url; 이런 방식으로도 가능
@PostMapping("/write")
public String write(@RequestParam Map<String, Object> map, HttpServletRequest request) {
//20240311 로그인검사
//로그인안했으면 로그인 페이지로, 로그인했다면 아래 문장으로
String ip = util.getIP();
int result = indexService.write(map);
System.out.println(result);
return "redirect:/freeboard";
}
@PostMapping("/write")
public String write(@RequestParam Map<String, Object> map, HttpServletRequest request) {
// 20240311 로그인검사
// 로그인안했으면 로그인 페이지로, 로그인했다면 아래 문장으로
String ip = util.getIP();
if (util.getSession().getAttribute("mid") != null) {
int result = indexService.write(map);
return "write";
}
String url = "freeboard";
return "redirect:/"+url;
}
AdminController 생성
package com.mask.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/admin")
public class AdminController {
@GetMapping("/menu")
public String menu() {
return "admin/menu";
}
}
src/main/resources> templates.admin 생성
templates.admin> menu.html 생성
package com.mask.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/admin")
public class AdminController {
@GetMapping("/menu")
public String menu() {
return "admin/menu";
}
}
http://localhost/admin/menu 이동
DB - 새로생성 - 테이블 추가
이름 : menu
열추가 : cate, catename, comment
cate번호 중복 안되게 UNIQUE 설정해준다.
데이터 > 추가하기>행추가
메뉴 만드는 쿼리문
CREATE TABLE `menu` (
`cate` INT(11) NULL DEFAULT NULL,
`catename` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
`comment` VARCHAR(100) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
UNIQUE INDEX `cate` (`cate`) USING BTREE
)
COMMENT='화면 상단에 보여줄 메뉴\r\n멀티보드를 활용해서 mtcate 값만 바꿔줄겁니다.\r\n'
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;
AdminController> menu 서비스와 연결
@GetMapping("/menu")
public String menu(Model model) {
List<Map<String, Object>> menu = adminService.menu();
model.addAttribute("menu", menu);
return "admin/menu";
}
AdminService 생성
package com.mask.web.service;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mask.web.dao.AdminDAO;
@Service
public class AdminService {
}
AdminController >@Autowired 추가
@Autowired
private AdminService adminService;
AdminService > menu 만들기 dao와 연결
public List<Map<String, Object>> menu() {
return adminDAO.menu();
}
AdminDAO interface 생성
package com.mask.web.dao;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Repository
@Mapper
public interface AdminDAO {
}
AdminService> @Autowired로 dao와 연결
@Autowired
private AdminDAO adminDAO;
adminMapper생성
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mask.web.dao.AdminDAO">
<select id="menu">
SELECT cate, catename, comment
FROM menu
</select>
</mapper>
menu.html(출력해보기)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>메뉴 페이지 입니다. </h1>
여기서 메뉴에 보여줄 순서를 지정할 수 있습니다.
현 등록되어있는 메뉴를 여기에 노출합니다 .
[[${menu }]]
</body>
</html>
아 중괄호 진짜 기억해라 계속 오류나잖아./
menu 불러오기 > 온갖곳에 메뉴추가해주기
메뉴불러오기 추가
// 메뉴 불러오기
List<Map<String, String>> menu = indexService.menu();
model.addAttribute("menu", menu);
return "index";
IndexController > index
@GetMapping({ "/index", "/" }) // /index 하고 /하고 같이 처리합니다
public String index(Model model) {
// 메뉴 불러오기
List<Map<String, String>> menu = indexService.menu();
model.addAttribute("menu", menu);
return "index";
}
IndexController > freeboard
// 멀티보드 20240308
@GetMapping("/freeboard")
public String freeboard(@RequestParam(value = "cate", defaultValue = "1") int cate, Model model) {
// 메뉴 불러오기
List<Map<String, String>> menu = indexService.menu();
model.addAttribute("menu", menu);
List<Map<String,Object>> board = indexService.freeboard(cate);
model.addAttribute("board", board);
return "freeboard";
}
IndexController > detail
// 상세보기
@GetMapping("/detail")
public String detail(@RequestParam("no") int no, Model model) {
// 메뉴 불러오기
List<Map<String, String>> menu = indexService.menu();
model.addAttribute("menu", menu);
Map<String, Object> detail = indexService.detail(no);
model.addAttribute("detail", detail);
return "detail";
}
IndexController > notice
@GetMapping("/notice")
public String notice(@RequestParam(value = "cate", defaultValue = "2") int cate, Model model) {
// 메뉴 불러오기
List<Map<String, String>> menu = indexService.menu();
model.addAttribute("menu", menu);
List<Map<String, Object>> board = indexService.freeboard(cate);
model.addAttribute("board", board);
return "notice";
}
IndexController > write
public String write(Model model) {
// 메뉴 불러오기
List<Map<String, String>> menu = indexService.menu();
model.addAttribute("menu", menu);
// 로그인 검사
return "write";
}
IndexController > postUpdate
@GetMapping("/postUpdate")
public String postUpdate(@RequestParam("no") int no, Model model) {
if (util.getSession().getAttribute("mid") != null) {
// 메뉴 불러오기
List<Map<String, String>> menu = indexService.menu();
model.addAttribute("menu", menu);
Map<String, Object> update2 = indexService.detail(no);
model.addAttribute("update", update2);
return "update";
} else {
return "redirect:/login";
}
}
추가부분
//메뉴 불러오기
List<Map<String, String>> menu = indexService.menu();
model.addAttribute("menu", menu);
IndexService > menu
public List<Map<String, String>> menu() {
return indexDAO.menu;
}
IndexDAO
List<Map<String, String>> menu();
인덱스 매퍼
<select id="menu" resultType="Map">
SELECT cate, catename
FROM menu
</select>
메뉴
<nav class="navbar navbar-expand-lg navbar-light fixed-top shadow-sm" id="mainNav">
<div class="container px-5">
<a class="navbar-brand fw-bold" href="/">Start Bootstrap</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
Menu
<i class="bi-list"></i>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ms-auto me-4 my-3 my-lg-0">
<th:block th:each="m : ${menu}">
<li class="nav-item"><a class="nav-link me-lg-3" href="|/freeboard?cate=${m.cate}|">[[${m.catename }]]</a></li>
</th:block>
<th:block th:if="${session.mid ne null}">
<li class="nav-item"><a class="nav-link me-lg-3" href="/myInfo">[[${session.mname}]]님</a></li>
<li class="nav-item"><a class="nav-link me-lg-3" href="/logout">logout</a></li>
</th:block>
<th:block th:unless="${session.mid ne null}">
<li class="nav-item"><a class="nav-link me-lg-3" href="/login">login</a></li>
</th:block>
</ul>
</div>
</div>
</nav>
<th:block th:each="m : ${menu}">
<li class="nav-item"><a class="nav-link me-lg-3" href="|/freeboard?cate=${m.cate}|">[[${m.catename }]]</a></li>
AdminController
admin> 메뉴html >table ,form 추가
<table border="1">
<tr>
<th>카테고리번호</th>
<th>카테고리이름</th>
<th>비고</th>
</tr>
<tr th:each="m : ${menu}">
<td th:text="${m.cate}"></td>
<td th:text="${m.cate}"></td>
<td th:text="${m.catename}"></td>
<td th:text="${m.comment}"></td>
</tr>
</table>
<form action="./menu" method="post">
<input type="number" name="cate" placeholder="카테고리 번호">
<input type="text" name="catename" placeholder="카테고리 이름">
<input type="text" name="comment" placeholder="실명을 적어주세요">
<button type="submit">추가하기</button>
</form>
>cate가 두개여서 출력될때 표가 이상하게 나온다
AdminController
@GetMapping("/menu")
public String menu(Model model) {
List<Map<String, Object>> menu = adminService.menu();
model.addAttribute("menu", menu);
return "admin/menu";
}
@PostMapping("/menu")
public String menu(Map<String, Object> map) {
System.out.println(map);
return "redirect:/admin/menu";
}
@PostMapping("/menu")
public String menu(@RequestParam Map<String, Object> map) {
System.out.println(map);
return "redirect:/admin/menu";
}
> 콘솔창에 오지 않음, 와야한다^^
AdminController > @PostMapping("/menu")
@PostMapping("/menu")
public String menu(@RequestParam Map<String, Object> map) {
//System.out.println(map);
adminService.menuInsert(map);
return "redirect:/admin/menu";
}
AdminService > menuInsert
public void menuInsert(Map<String, Object> map) {
adminDAO.menuInsert(map);
}
AdminDAO
void menu(Map<String, Object> map);
adminMapper
<insert id="menutInsert" parameterType="Map">
INSERT INTO menu VALUES(#{cate},#{catename}, #{comment})
</insert>
application.properties 에러 페이지 추가
#에러페이지
server.error.whitelabel.enabled=true
server.error.include-stacktrace=always
server.error.include-exception=true
ErrorController 생성
package com.mask.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class ErrorController {
@GetMapping("/error")
public String error() {
return "error";
}
}
error.html 생성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Error</h1>
<h3>문제가 발생했습니다. </h3>
</body>
</html>
삭제하기
수정하기
html에서 수정
컨트롤러~매퍼까지 생성하지 않음 > detail과 똑같이 동작하기 때문에 재활용
@PostMapping("/postUpdate")
public String postUpdate(@RequestParam("no") int no, Model model) {
//model에 싣기, detail과 똑같이 동작하기 때문에 재활용
model.addAttribute("update", indexService.detail(no));
return "update";
}
'2023.11.21-2024.05.31' 카테고리의 다른 글
20240312 전자정부(파일업로드) (0) | 2024.03.12 |
---|---|
20240311 전자정부(DTO>Map 변경, 로그인 설정, 글삭제, 글수정) (0) | 2024.03.11 |
20240308 전자정부(로그인2,로그아웃, 상세보기) (2) | 2024.03.08 |
20240307 전자정부(DB-multiboard 만들기, 부트스트랩 사용하기) (0) | 2024.03.07 |
20240307 전자정부(프로젝트 만들기, board, detail) (0) | 2024.03.07 |