nav.jsp 전체코드

더보기
<%@page import="com.cos.blog.model.Users"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%
	// 	Users principal = (Users) session.getAttribute("principal");
%>

<!DOCTYPE html>
<html lang="en">
<head>
<title>blog</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="/blog/css/styles.css" rel="stylesheet">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>

<link href="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote-bs4.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote-bs4.min.js"></script>

</head>
<body>
	<nav class="navbar navbar-expand-md bg-dark navbar-dark">
		<a class="navbar-brand" href="/blog/index.jsp">Blog</a>
		<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsibleNavbar">
			<span class="navbar-toggler-icon"></span>
		</button>

		<div class="justify-content-between collapse navbar-collapse" id="collapsibleNavbar">
			<ul class="navbar-nav">

				<c:choose>
					<c:when test="${empty sessionScope.principal}">

						<li class="nav-item"><a class="nav-link" href="/blog/user?cmd=login">로그인</a></li>
						<li class="nav-item"><a class="nav-link" href="/blog/user?cmd=join">회원가입</a></li>

					</c:when>

					<c:otherwise>

						<li class="nav-item"><a class="nav-link" href="/blog/board?cmd=write">글쓰기</a></li>
						<li class="nav-item"><a class="nav-link" href="/blog/user?cmd=update">회원정보</a></li>
						<li class="nav-item"><a class="nav-link" href="/blog/user?cmd=logout">로그아웃</a></li>

					</c:otherwise>
				</c:choose>

			</ul>

			<ul class="navbar-nav">

				<c:if test="${not empty sessionScope.principal}">
					<li class="nav-item">
					
						<a href="/blog/user?cmd=profileUpload"> 
						
							<img style="border-radius: 20px" onerror="this.src='/blog/image/userProfile.png'"
								src="${sessionScope.principal.userProfile}" width="40px" height="40px" />
	
						</a>
					</li>
				</c:if>

			</ul>

		</div>
	</nav>
	<br>

 

class="navbar-nav"

부트스트랩 디자인을 사용하기 위한 class

<a href="/blog/user?cmd=profileUpload">

이미지를 클릭하면 프로필 업로드 페이지로 이동

style="border-radius: 20px"

이미지 모서리에 둥글기를 준다 (50%도 가능하다, 절반이상줘도 동그란 모양 이상으로 깎이지 않는다)

onerror="this.src='/blog/image/userProfile.png'"

이미지가 없는 등 에러시 나타낼 이미지 주소 (세션에 principal이 없는 경우 등을 대비)

 

가지고 있는 요소들(navbar-nav 들)을 가장 멀리 배치한다.

 

결과

네비게이션 요소들이 잘 멀어져 있다

------------------------

'Web > Jsp' 카테고리의 다른 글

multipart/form-data // HTML 파일업로드 MIME타입  (0) 2020.06.11
자바 UUID 생성  (0) 2020.06.11
cos라이브러리를 이용하여 파일 업로드 및 다운로드  (0) 2020.06.11
200610 // 검색 페이징  (0) 2020.06.10
검색창 만들기  (0) 2020.06.10

 

cos라이브러리

 

다운로드

 

라이브러리에 추가

 

MultipartRequest

 

메소드를 확인해보자

https://zewtion.tistory.com/287

 

Javascript MultipartRequest 생성자와 메소드

원문 출처 : http://e2xist.tistory.com/233 ○ 파일 업로드 1) 기본 설정 - 파일 업로드 컴포넌트 중 현재 가장 인정 받는 cos패키지의 MultipartRequest를 사용하여 파일 업로드 기능을 구현한다. 1. cos파일..

zewtion.tistory.com

 

 

fileUploadForm

더보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>fileupload</title>
</head>
<body>
	<section id="uploadFormArea">
	
	<form action="fileUpload.jsp" method="post" enctype="multipart/form-data">
	
	<table>
	
		<tr>
			<td colspan="2" class="td_title"> 파일 업로드 폼 </td>
		</tr>

        <tr>
            <td><label for="name">올린사람 : </label></td>
            <td><input type="text" name="name" id="name"></td>
        </tr>
        
        <tr>
            <td><label for="name">제목 : </label></td>
            <td><input type="text" name="subject" id="subject"></td>
        </tr>

        <tr>
            <td><label for="fileName1">파일명1 : </label></td>
            <td><input type="file" name="fileName1" id="fileName1"></td>
        </tr>

        <tr>
            <td><label for="fileName2">파일명2 : </label></td>
            <td><input type="file" name="fileName2" id="fileName2"></td>
        </tr>
        
        <tr>
			<td colspan="2" align=center><input type="submit" value="전송"> </td>
		</tr>
	
	</table>
	
	</form>
	
	</section>
</body>
</html>

 

 

 

fileUpload

더보기
<%@page import="java.util.Enumeration"%>
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	String uploadPath = request.getRealPath("/upload");

	int size = 10*1024*1024;
	String name = "";
	String subject = "";
	String filename1 = "";
	String filename2 = "";
	String origfilename1 = "";
	String origfilename2 = "";
	
	try{
		
		MultipartRequest multi = new MultipartRequest(request, uploadPath, size, "utf-8", new DefaultFileRenamePolicy());
		
		name = multi.getParameter("name");
		subject = multi.getParameter("subject");
		
		Enumeration files = multi.getFileNames();
		
		String file1 = (String)files.nextElement();
		filename1 = multi.getFilesystemName(file1);
		origfilename1 = multi.getOriginalFileName(file1);
		
		String file2 = (String)files.nextElement();
		filename2 = multi.getFilesystemName(file2);
		origfilename2 = multi.getOriginalFileName(file2);
		
	} catch (Exception e){
		
		e.printStackTrace();
		
	}
	
%>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form name="filecheck" action="fileCheck.jsp" method="post">
	
		<input type="hidden" name="name" value="<%=name%>">
		<input type="hidden" name="subject" value="<%=subject%>">
		<input type="hidden" name="filename1" value="<%=filename1%>">
		<input type="hidden" name="filename2" value="<%=filename2%>">
		<input type="hidden" name="origfilename1" value="<%=origfilename1%>">
		<input type="hidden" name="origfilename2" value="<%=origfilename2%>">
	
	</form>
	
	<a href="#" onclick="javascript:filecheck.submit()">업로드 확인 및 다운로드 페이지 이동</a>
	
</body>
</html>

 

 

fileCheck

더보기
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");
	String name=request.getParameter("name");
	String subject=request.getParameter("subject");
	String filename1=request.getParameter("filename1");
	String filename2=request.getParameter("filename2");
	String origfilename1=request.getParameter("origfilename1");
	String origfilename2=request.getParameter("origfilename2");
%>
<html>
<head>
<title>파일 업로드 확인 및 다운로드</title>
</head>
<body>
올린 사람 : <%=name %><br>
제목 : <%=subject %><br>
파일명1 : <a href="file_down.jsp?file_name=<%=filename1 %>"><%=origfilename1 %></a><br>
파일명2 : <a href="file_down.jsp?file_name=<%=filename2 %>"><%=origfilename2 %></a><p>
</body>
</html>

 

 

file_down

더보기
<%@page import="java.net.URLEncoder"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.io.File"%>
<%@ page import="java.io.*"%>

<%
	String fileName = request.getParameter("file_name");

	String savePath = "upload";
	ServletContext context = getServletContext();
	String sDownloadPath = context.getRealPath(savePath);
	String sFilePath = sDownloadPath + "\\" + fileName;
	byte b[] = new byte[4096];
	FileInputStream in = new FileInputStream(sFilePath);
	String sMimeType = getServletContext().getMimeType(sFilePath);
	System.out.println("sMimeType>>>" + sMimeType);

	if (sMimeType == null)
		sMimeType = "application/octet-stream";

	response.setContentType(sMimeType);
	String agent = request.getHeader("User-Agent");
	boolean ieBrowser = (agent.indexOf("MSIE") > -1) || (agent.indexOf("Trident") > -1);

	if (ieBrowser) {
		fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
	} else {
		fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
	}

	response.setHeader("Content-Disposition", "attachment; filename= " + fileName);

	ServletOutputStream out2 = response.getOutputStream();
	int numRead;

	while ((numRead = in.read(b, 0, b.length)) != -1) {
		out2.write(b, 0, numRead);
	}
	out2.flush();
	out2.close();
	in.close();
%>

 

결과

 

-------------------------------

'Web > Jsp' 카테고리의 다른 글

자바 UUID 생성  (0) 2020.06.11
네비게이션 바에 사진 넣기  (0) 2020.06.11
200610 // 검색 페이징  (0) 2020.06.10
검색창 만들기  (0) 2020.06.10
쿠키를 이용해서 같은 페이지 접속시 조회수 증가 막기  (1) 2020.06.10

 

 

 

 

 

테스트 결과

 

 

실적용

home.jsp

 

 

 

 

 

 

 

 

w3스쿨

example 내용에서 form 부분만 가져온다

 

home.jsp

 

 

결과

 

 

BoardDetailAction

 

 

결과

 

'Web > Jsp' 카테고리의 다른 글

200610 // 검색 페이징  (0) 2020.06.10
검색창 만들기  (0) 2020.06.10
jsessionid 가 주소창에 노출될 때 해결법  (0) 2020.06.10
첫페이지 끝페이지 이동버튼 비활성화  (0) 2020.06.10
상세보기시 조회수 증가  (0) 2020.06.09

server의 web.xml

<tracking-mode>COOKIE</tracking-mode>

추가하기

 

 

 

 

 

 

 

이전 다음 버튼

첫페이지와 끝페이지에서 비활성화 하고싶다

 

 

비활성화는 disabled로 가능하다

 

 

첫페이지에서 이전버튼 비활성화

home.jsp

파라미터의 page 값이 0일 경우 이전버튼을 disabled 해준다

 

 

끝페이지에서 다음버튼 비활성화

BoardRepository

먼저 count()를 이용하여 게시글 숫자를 검색한다

 

 

BoardHomeAction

count()의 리턴값을 가공하여 마지막페이지를 저장하고 request에 넣어준다

 

 

home.jsp

requestScope.lastPage와 param.page를 비교하여 같은 값이면 다음버튼을 비활성화 해준다

 

 

결과

 

 

BoardRepository

호출하면 readCount가 1이 올라가는 sql

 

 

BoardDetailAction

액션파일에서 readCountUp()을 호출해주기

 

 

detail.jsp

dto.board.readCount를 받아온다

 

+ Recent posts