본문 바로가기
웹 프로그래밍 기초/자바기반의 웹&앱 응용SW 개발자

자바기반의 웹&앱 응용 SW개발자 양성과정 49일차 -77

by oncerun 2020. 5. 4.
반응형

 

공지사항 자세한 페이지 추가

 

 

detail.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE html>
<html>

<head>
<title>코딩 전문가를 만들기 위한 온라인 강의 시스템</title>
<meta charset="UTF-8">
<title>공지사항목록</title>

<link href="/css/customer/layout.css" type="text/css" rel="stylesheet" />
<style>
#visual .content-container {
height: inherit;
display: flex;
align-items: center;

background: url("/images/mypage/visual.png") no-repeat center;
}
</style>
</head>

<body>
<!-- header 부분 -->

<header id="header">

<div class="content-container">
<!-- ---------------------------<header>--------------------------------------- -->

<h1 id="logo">
<a href="/index.html">
<img src="/images/logo.png" alt="뉴렉처 온라인" />

</a>
</h1>

<section>
<h1 class="hidden">헤더</h1>

<nav id="main-menu">
<h1>메인메뉴</h1>
<ul>
<li><a href="/guide">학습가이드</a></li>

<li><a href="/course">강좌선택</a></li>
<li><a href="/answeris/index">AnswerIs</a></li>
</ul>
</nav>

<div class="sub-menu">

<section id="search-form">
<h1>강좌검색 폼</h1>
<form action="/course">
<fieldset>
<legend>과정검색필드</legend>
<label>과정검색</label>
<input type="text" name="q" value="" />
<input type="submit" value="검색" />
</fieldset>
</form>
</section>

<nav id="acount-menu">
<h1 class="hidden">회원메뉴</h1>
<ul>
<li><a href="/index.html">HOME</a></li>



<li>
<form action="/logout" method="post">
<input type="hidden" name="" value="" />
<input type="submit" value="로그아웃"
style="border:none;background: none;vertical-align: middle;font-size: 10px;color:#979797;font-weight: bold;" />

</form>
</li>

<li><a href="/member/agree">회원가입</a></li>
</ul>
</nav>

<nav id="member-menu" class="linear-layout">
<h1 class="hidden">고객메뉴</h1>
<ul class="linear-layout">
<li><a href="/member/home"><img src="/images/txt-mypage.png" alt="마이페이지" /></a></li>
<li><a href="/notice/list.html"><img src="/images/txt-customer.png" alt="고객센터" /></a></li>
</ul>
</nav>

</div>
</section>

</div>

</header>

<!-- --------------------------- <visual> --------------------------------------- -->
<!-- visual 부분 -->

<div id="visual">
<div class="content-container"></div>
</div>
<!-- --------------------------- <body> --------------------------------------- -->
<div id="body">
<div class="content-container clearfix">

<!-- --------------------------- aside --------------------------------------- -->
<!-- aside 부분 -->


<aside class="aside">
<h1>ADMIN PAGE</h1>

<nav class="menu text-menu first margin-top">
<h1>마이페이지</h1>
<ul>
<li><a href="/admin/index.html">관리자홈</a></li>
<li><a href="/teacher/index.html">선생님페이지</a></li>
<li><a href="/student/index.html">수강생페이지</a></li>
</ul>
</nav>

<nav class="menu text-menu">
<h1>알림관리</h1>
<ul>
<li><a href="/admin/board/notice/list.html">공지사항</a></li>
</ul>
</nav>

</aside>
<!-- --------------------------- main --------------------------------------- -->




<main>
<h2 class="main title">공지사항</h2>

<div class="breadcrumb">
<h3 class="hidden">breadlet</h3>
<ul>
<li>home</li>
<li>고객센터</li>
<li>공지사항</li>
</ul>
</div>

<div class="margin-top first">
<h3 class="hidden">공지사항 내용</h3>
<table class="table">
<tbody>
<tr>
<th>제목</th>
<td class="text-align-left text-indent text-strong text-orange" colspan="3">{n.title}</td>
</tr>
<tr>
<th>작성일</th>
<td class="text-align-left text-indent" colspan="3">
<td><fmt:formatDate pattern="yyyy-MM-dd hh:mm:ss"
value="${n.regdate}" />${n.regdate}</td>
</td>
</tr>
<tr>
<th>작성자</th>
<td>{n.writerId}</td>
<th>조회수</th>
<td>{n.hit}</td>
</tr>
<tr>
<th>첨부파일</th>
<td colspan="3">
<c:forTokens var="fileName" items="${n.files}" delims=","
varStatus="st">

<c:if test="${fn:endsWith(fileName, '.zip')}">
<c:set var="style"  value="font-weight:bold; color:red;"/>
</c:if>
<a href="${fileName}" style="${style}">${fn:toUpperCase(fileName)}</a>
<c:if test="${! st.last}">
/
</c:if>
</c:forTokens>
</td>
</tr>
<tr class="content">
<td colspan="4">{n.content}</td>
</tr>
</tbody>
</table>
</div>

<div class="margin-top text-align-center">
<a class="btn-text btn-cancel" href="list">목록</a>
<a class="btn-text btn-default" href="edit">수정</a>
<a class="btn-text btn-default" href="del">삭제</a>
</div>

<div class="margin-top">
<table class="table border-top-default">
<tbody>
<tr>
<th>다음글</th>
<td colspan="3" class="text-align-left text-indent">다음글이 없습니다.</td>
</tr>
<tr>
<th>이전글</th>
<td colspan="3" class="text-align-left text-indent"><a class="text-blue text-strong"
href="">스프링 DI 예제 코드</a></td>
</tr>
</tbody>
</table>
</div>
</main>

</div>
</div>

<!-- ------------------- <footer> --------------------------------------- -->



<footer id="footer">
<div class="content-container">
<h2 id="footer-logo"><img src="/images/logo-footer.png" alt="회사정보"></h2>

<div id="company-info">
<dl>
<dt>주소:</dt>
<dd>서울특별시 </dd>
<dt>관리자메일:</dt>
<dd>admin@newlecture.com</dd>
</dl>
<dl>
<dt>사업자 등록번호:</dt>
<dd>111-11-11111</dd>
<dt>통신 판매업:</dt>
<dd>신고제 1111 호</dd>
</dl>
<dl>
<dt>상호:</dt>
<dd>뉴렉처</dd>
<dt>대표:</dt>
<dd>홍길동</dd>
<dt>전화번호:</dt>
<dd>111-1111-1111</dd>
</dl>
<div id="copyright" class="margin-top">Copyright ⓒ newlecture.com 2012-2014 All Right Reserved.
Contact admin@newlecture.com for more information</div>
</div>
</div>
</footer>
</body>

</html>

 

 

detailController

package com.newlec.web.controller.admin;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.newlec.web.entity.Notice;
import com.newlec.web.service.NoticeService;

@WebServlet("/admin/board/notice/detail")
public class DetailController extends HttpServlet {
	
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		int id = Integer.parseInt(request.getParameter("id"));
		
		NoticeService service= new NoticeService();
		Notice notice = service.getNotice(id);
		request.setAttribute("n", notice);
		
		request.getRequestDispatcher("/WEB-INF/VIEW/admin/board/notice/detail.jsp")
		.forward(request, response);
	}

}

 

 

파일 업로드를 위한 인코드 multipart/form-data

<form method="post" action="reg" enctype="multipart/form-data">

enctype을 설정해주어야 파일 업로드가 가능하다.

 

 

정의 및 특징

 

<form> 태그의 enctype 속성은 폼 데이터(form data)가 서버로 제출될 때 해당 데이터가 인코딩 되는 방법을 명시합니다.

 

이 속성은 <form> 요소의 method 속성값이 “post”인 경우에만 사용할 수 있습니다.

 

문법

<form enctype="속성값">

 

 

속성 값

속성 값 설명

application/x-www-form-urlencoded

기본값으로, 모든 문자들은 서버로 보내기 전에 인코딩 됨을 명시함.

multipart/form-data

모든 문자를 인코딩하지 않음을 명시함.

이 방식은 <form> 요소가 파일이나 이미지를 서버로 전송할 때 주로 사용함.

text/plain

공백 문자(space)는 "+" 기호로 변환하지만, 나머지 문자는 모두 인코딩 되지 않음을 명시함.

 

 

파일 업로드를 위한 서블릿 설정

 

web.xml 에 설정하기 

<multipart-config>

<location>/temp </location>

<max-file-size>20848820 </max-request-size>

<max-request-size>41421512 </max-request-size>

<file-size-thershold>12424 </file-size-threshold>

</multipart-config>

모든 클래스에서 사용 가능

 

annotation으로 설정하기

@MultipartConfig(

//loation="/temp",  //절대 경로를 사용해야 한다. 보통 자바 기본 파일로 설정

fileSizeThreshold=1024*1024,   전송 바이트가 1mb가 넘을 경우 temp의 디스크를 사용해 저장한다.

maxFileSize = 1024*1024*50,  하나의 파일 사이즈를 제한한다. 50MB로 제한.

maxRequestSize = 1024*1024*50*5  전체 요청에 대한 사이즈 제한

)

클래스마다 설정해주어야 함

 

package com.newlec.web.controller.admin.notice;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.newlec.web.entity.Notice;
import com.newlec.web.service.NoticeService;

@MultipartConfig(
fileSizeThreshold=1024*1024,
maxFileSize = 1024*1024*5,
maxRequestSize = 1024*1024*5*5)
@WebServlet("/admin/board/notice/reg")
public class RegController extends HttpServlet{




@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


request.getRequestDispatcher("/WEB-INF/VIEW/admin/board/notice/reg.jsp")
.forward(request, response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String title = request.getParameter("title");
String content= request.getParameter("content");
String isOpen= request.getParameter("open");
boolean pub =false;
if(isOpen!=null)
pub = true;

Notice notice= new Notice();
notice.setTitle(title);
notice.setContent(content);
notice.setPub(pub);
notice.setWriterId("newlec");

NoticeService service = new NoticeService();
service.insertNotice(notice);

response.sendRedirect("list");
}

}
반응형

댓글