게시판에서 클라이언트 ip를 가져오고 싶은데 어떻게 해야 좋을까요? 채택완료
toto1234
2년 전
조회 2,179
</p>
<p><form method="post" action="fboardInsert" autocomplete="off"</p>
<p>enctype="multipart/form-data"></p>
<p><input type="hidden" name="fb_reip" value="${fb_reip}"></p>
<p><div class="mb-3"></p>
<p><label for="boardTitle">제목</label></p>
<p><input type="text" class="form-control" id="subject" name="fb_subject"</p>
<p>placeholder="제목을 입력해 주세요"></p>
<p></div></p>
<p>
</p>
<p><div class="mb-3"></p>
<p><label for="reg_id">작성자</label></p>
<p><input type="text" name="fb_writer" class="form-control" id="fb_writer"</p>
<p>th:value="${session.sessionNick}" readonly="readonly"></p>
<p></div></p>
<p>
</p>
<p><div class="mb-3"></p>
<p><label for="boardContent">내용</label></p>
<p><textarea class="form-control" rows="5" id="content"</p>
<p>name="fb_content" placeholder="내용을 입력해 주세요"></textarea></p>
<p></div></p>
<p><div class="mb-3"></p>
<p><label for="mfile">사진업로드</label></p>
<p><input type="file" name="mfile" class="form-control" id="mfile"></p>
<p></div></p>
<p><div class="col-sm-10"></p>
<p><img th:src="@{/static/resources/images/noimage.jpg}" id="imgx"</p>
<p>style="width: 210px; border: 1px dotted; margin: 5px 5px;"></p>
<p></div></p>
<p>
</p>
<p><div class="container text-center" role="group"></p>
<p><input type="submit" value="글작성" class="btn btn-primary"></p>
<p><input type="button" value="리스트" class="btn btn-danger" onclick="location='boardlist'"></p>
<p></div></p>
<p></form></p>
<p>
이 부분에서 fb_reip를 클라이언트 IPv4 주소를 가져오고 싶은데 어떻게 해야 하나요?
</p>
<p>package kr.co.trip.mvc.controller.freeboard;</p>
<p> </p>
<p>import java.io.File;</p>
<p>import java.io.IOException;</p>
<p>import java.util.List;</p>
<p>import java.util.Map;</p>
<p> </p>
<p>import org.springframework.beans.factory.annotation.Autowired;</p>
<p>import org.springframework.beans.factory.annotation.Value;</p>
<p>import org.springframework.stereotype.Controller;</p>
<p>import org.springframework.ui.Model;</p>
<p>import org.springframework.web.bind.annotation.GetMapping;</p>
<p>import org.springframework.web.bind.annotation.ModelAttribute;</p>
<p>import org.springframework.web.bind.annotation.PathVariable;</p>
<p>import org.springframework.web.bind.annotation.PostMapping;</p>
<p>import org.springframework.web.bind.annotation.RequestMapping;</p>
<p>import org.springframework.web.bind.annotation.RequestParam;</p>
<p>import org.springframework.web.multipart.MultipartFile;</p>
<p> </p>
<p>import jakarta.servlet.http.HttpServletRequest;</p>
<p>import jakarta.servlet.http.HttpSession;</p>
<p>import kr.co.trip.mvc.dao.FreeBoardDao;</p>
<p>import kr.co.trip.mvc.service.FreeBoardService;</p>
<p>import kr.co.trip.mvc.vo.FreeBoardVO;</p>
<p>import kr.co.trip.mvc.vo.FreeBoard_CommVO;</p>
<p> </p>
<p>@Controller</p>
<p>@RequestMapping("/board")</p>
<p>public class FreeboardController {</p>
<p>//application.properties의 key값으로 설정값을 가져와서 변수에 저장한다.</p>
<p>@Value("${spring.servlet.multipart.location}")</p>
<p>private String filePath;</p>
<p> </p>
<p>@Autowired</p>
<p>private FreeBoardService freeBoardService;</p>
<p> </p>
<p>@RequestMapping("/boardlist")</p>
<p>public String fBoardList(Model model) {</p>
<p>List<FreeBoardVO> flist = freeBoardService.flistback();</p>
<p>model.addAttribute("flist", flist);</p>
<p> </p>
<p>return "/board/bbslist";</p>
<p>}</p>
<p> </p>
<p>@GetMapping("/boardwrite")</p>
<p>public String fboardForm() {</p>
<p>return "/board/bbswrite";</p>
<p>}</p>
<p> </p>
<p>@PostMapping("/fboardInsert")</p>
<p>public String fboardInsert(Model model, @ModelAttribute("flist") FreeBoardVO vo) {</p>
<p>MultipartFile mf = vo.getMfile();</p>
<p>String oriFn = mf.getOriginalFilename();</p>
<p>System.out.println("oriFn : "+oriFn);</p>
<p> </p>
<p> </p>
<p>StringBuffer path = new StringBuffer(); // [서버경로]</p>
<p>path.append(filePath).append("\\");</p>
<p>path.append(oriFn);</p>
<p>System.out.println("FullPath : "+ path);</p>
<p> </p>
<p>File f = new File(path.toString());</p>
<p>try {</p>
<p>mf.transferTo(f);</p>
<p>vo.setFb_file(oriFn);</p>
<p>} catch (IllegalStateException | IOException e) {</p>
<p>e.printStackTrace();</p>
<p>}</p>
<p> </p>
<p>freeBoardService.fwrite(vo);</p>
<p>return "redirect:boardlist";</p>
<p>}</p>
<p> </p>
<p>@GetMapping("/boardDetail")</p>
<p>public String fboardCommList(Model model, @RequestParam(required = true) int num, HttpServletRequest request) {</p>
<p>FreeBoardVO detail = freeBoardService.finfo(num);</p>
<p>List<FreeBoard_CommVO> listComm = freeBoardService.commList(num);</p>
<p> </p>
<p>}</p>
<p> </p>
<p>model.addAttribute("detail", detail);</p>
<p>model.addAttribute("listComm", listComm);</p>
<p>return "/board/bbdetail";</p>
<p>}</p>
<p> </p>
<p> </p>
<p>@GetMapping("/upHit")</p>
<p>public String fBoardHit(Model model, int num) {</p>
<p>freeBoardService.hit(num);</p>
<p>return "redirect:boardDetail?num=" + num;</p>
<p>}</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>@GetMapping("/chkPwdForm")</p>
<p>public String boardChkPwdForm(Model model, @RequestParam Map<String, String> param) {</p>
<p>System.out.println("num:" + param.get("num"));</p>
<p>System.out.println("job:"+param.get("job"));</p>
<p>model.addAttribute("map", param);</p>
<p>return "/board/chkpwdForm";</p>
<p>}</p>
<p> </p>
<p>@GetMapping("/fbdel")</p>
<p>public String fboardDelete(Model model, int num, HttpSession session) {</p>
<p>if(session.getAttribute("sessionID") == null) {</p>
<p>model.addAttribute("errMsg","삭제 권한이 없습니다.");</p>
<p>return "/board/error";</p>
<p>}else {</p>
<p>freeBoardService.del(num);</p>
<p>return "redirect:boardlist";</p>
<p>}</p>
<p> </p>
<p>}</p>
<p> </p>
<p>@GetMapping("/fbmod")</p>
<p>public String fboardModify(Model model, int num) {</p>
<p>FreeBoardVO vo = freeBoardService.finfo(num);</p>
<p>model.addAttribute("vo", vo);</p>
<p>return "board/bbsmodify";</p>
<p>}</p>
<p> </p>
<p> </p>
<p>@PostMapping("/fbUpdate")</p>
<p>public String fboardUpdate(FreeBoardVO vo) {</p>
<p>freeBoardService.up(vo);</p>
<p>return "redirect:boardDetail?num="+vo.getFb_num();</p>
<p>}</p>
<p>
이 소스코드에서 어떻게 하는 게 좋을까요?
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
답변을 작성하려면 로그인이 필요합니다.
로그인
public String fboardInsert(Model model, @ModelAttribute("flist") FreeBoardVO vo) {
String clientIP = null;
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
WebAuthenticationDetails details = (WebAuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails();
clientIP = details.getRemoteAddress();
}
vo.setFb_reip(clientIP);
MultipartFile mf = vo.getMfile();
이렇게 해보세요 아래 업로드 부분은 동일 한듯 합니다.