응용문제 - html + jsp
상품검색html검색어 : jsp 아이디 찾기이름과 이메일을 받아 둘다 맞을경우 아이디를 출력html 이름 : 이메일 : jsp 공지사항 게시판공지사항을 등록하는 프로세서를 제작합니다.기존에 공지사항 데
9na0.tistory.com
응용문제 - html + jsp 의 공지사항 게시판 ver.2
html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>공지사항 등록</title>
</head>
<body>
<form id="frm" method="POST" action="./noticewriteok.jsp">
제목 : <input type="text" name="title"><br>
글쓴이 : <input type="text" name="writer"><br> <!-- value="admin readonly -->
내용 : <textarea cols="100" rows="10" name="contents"></textarea><br>
첨부파일 : <input type="file" name="mfile"><br>
<input type = "button" value="공지사항 등록" onclick="cont_post()">
</form>
<script>
function cont_post() {
if (frm.title.value == "") {
alert("제목을 입력해주세요.");
frm.title.focus();
} else if (frm.writer.value == "") {
alert("글쓴이를 입력해주세요.");
frm.writer.focus();
} else if (frm.writer.value != "admin") {
alert("잘못된 글쓴이입니다.");
frm.writer.focus();
} else if (frm.contents.value == "") {
alert("내용을 입력해주세요.");
frm.contents.focus();
} else {
frm.submit();
}
}
</script>
</body>
</html>
jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.Arrays"%>
<%@page import="java.util.Date"%>
<%
request.setCharacterEncoding("utf-8"); //넘어오는 한글 깨짐 방지
String notice[][] = { { "신한카드 설연휴 서비스 점검안내", "admin", "설연휴 3일간 신한카드 시스템 점검안내", "2025-01-20" },
{ "신규 가입자 쿠폰 지급 연장안내", "admin", "10%신규 쿠폰 기간을 연장하게 되었습니다.", "2025-01-17" },
{ "설 연휴기간 배송지연 안내", "admin", "설연휴 기간 월요일까지만 배송을 하게 됩니다.", "2025-01-14" } };
ArrayList<ArrayList<String>> alldata = new ArrayList<>();
ArrayList<String> al = null;
//foreach로 1차 원시배열을 구분하여 클래스배열로 전달
for(String[] arr : notice){
al = new ArrayList<>(Arrays.asList(arr)); //원시 배열을 1차배열로 이관
alldata.add(al);
}
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
String today = sf.format(date);
//Front에서 데이터를 이관 받는 코드(name값 받기)
//request : Front에서 무조건 데이터를 이관받는 클래스
//jsp 파일로 직접 실행할 경우 null값이 들어가있어서 오류남 -> try~catch 사용
String subject = request.getParameter("title").intern();
String writer = request.getParameter("writer").intern();
String texts = request.getParameter("contents").intern();
//예외처리를 사용한 이유는 Front-end에서 값이 전송이 안되었을 경우 조건문에서 error
try {
if (!subject.equals("") && !writer.equals("") && !texts.equals("")) {
al = new ArrayList<>(); //1차 배열을 생성하여 사용자가 입력한 값을 추가
al.add(subject);
al.add(writer);
al.add(texts);
al.add(today);
alldata.add(0, al); //2차 배열에 등록을 함 단, 배열 기준 맨 앞에 데이터가 저장되도록 함
}
} catch (Exception e) {
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>공지사항 리스트</title>
</head>
<body>
<!--
<table border="1" cellspacing="0" cellpadding="0">
<thead>
<th>제목</th> <th>작성자</th> <th>내용</th> <th>작성일</th>
</thead>
-->
<p>전체 등록된 게시물 : <%=alldata.size() %> 개</p>
<table border="1" cellspacing="0" cellpadding="0">
<thead>
<th width="50">번호</th>
<th width="500">제목</th>
<th width="100">글쓴이</th>
<th width="150">등록일</th>
</thead>
<%
int w = 0;
while(w<alldata.size()){
%>
<tbody>
<tr height="30">
<td align="center"><%=alldata.size()-w%></td>
<td><%=alldata.get(w).get(0)%></td>
<td align="center"><%=alldata.get(w).get(1)%></td>
<td align="center"><%=alldata.get(w).get(3)%></td>
</tr>
<%
w++;
}
%>
</tbody>
</table>
<br><br>
<!-- 스앵님이 js쓰기싫어서 쓴 막코드 이렇게 쓰지마쎄요옹~ -->
<input type="button" value="글쓰기" onclick="locatio.href='./notice_writer.html';">
</body>
</html>