쿠키는 로그인 용도로 적절하지는 않다.
세션으로 로그인 처리 할 때 db에서 가져와서 비교한다.
파일 전송하기
form태그와 input 태그를 사용
기존의 form 태그는 query스트링만을 사용하기 위함이었지만 file 전송을 위해서는
enctype이 필요.
input type = file
jsp - servlet
멤버 회원 가입 예제
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>회원가입</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript">
function idCheck(id) {
frm = document.regFrm;
if (id == "") {
alert("아이디를 입력해 주세요.");
frm.id.focus();
return;
}
url = "idCheck.jsp?id=" + id;
window.open(url, "IDCheck", "width=300,height=150");
}
function zipSearch() {
url = "zipSearch.jsp?search=n";
window.open(url, "ZipCodeSearch", "width=500,height=300,scrollbars=yes");
}
</script>
</head>
<body bgcolor="#FFFFCC" onLoad="regFrm.id.focus()">
<div align="center">
<br/><br/>
<form name="regFrm" method="post" action="memberProc.jsp">
<table cellpadding="5">
<tr>
<td bgcolor="#FFFFCC">
<table border="1" cellspacing="0" cellpadding="2" width="600">
<tr bgcolor="#996600">
<td colspan="3"><font color="#FFFFFF"><b>회원 가입</b></font></td>
</tr>
<tr>
<td width="20%">아이디</td>
<td width="50%">
<input name="id" size="15">
<input type="button" value="ID중복확인" onClick="idCheck(this.form.id.value)">
</td>
<td width="30%">아이디를 적어 주세요.</td>
</tr>
<tr>
<td>패스워드</td>
<td><input type="password" name="pwd" size="15"></td>
<td>패스워드를 적어주세요.</td>
</tr>
<tr>
<td>패스워드 확인</td>
<td><input type="password" name="repwd" size="15"></td>
<td>패스워드를 확인합니다.</td>
</tr>
<tr>
<td>이름</td>
<td><input name="name" size="15">
</td>
<td>이름을 적어주세요.</td>
</tr>
<tr>
<td>성별</td>
<td>
남<input type="radio" name="gender" value="1" checked>
여<input type="radio" name="gender" value="2">
</td>
<td>성별을 선택 하세요.</td>
</tr>
<tr>
<td>생년월일</td>
<td><input name="birthday" size="6">
ex)830815
</td>
<td>생년월일를 적어 주세요.</td>
</tr>
<tr>
<td>Email</td>
<td><input name="email" size="30">
</td>
<td>이메일를 적어 주세요.</td>
</tr>
<tr>
<td>우편번호</td>
<td><input name="zipcode" size="5" readonly>
<input type="button" value="우편번호찾기" onClick="zipSearch()">
</td>
<td>우편번호를 검색하세요.</td>
</tr>
<tr>
<td>주소</td>
<td><input name="address" size="45"></td>
<td>주소를 적어 주세요.</td>
</tr>
<tr>
<td>취미</td>
<td>인터넷<input type="checkbox" name="hobby" value="인터넷">
여행<input type="checkbox" name="hobby" value="여행"> 게임<input
type="checkbox" name="hobby" value="게임"> 영화<input
type="checkbox" name="hobby" value="영화"> 운동<input
type="checkbox" name="hobby" value="운동">
</td>
<td>취미를 선택 하세요.</td>
</tr>
<tr>
<td>직업</td>
<td><select name=job>
<option value="0" selected>선택하세요.
<option value="회사원">회사원
<option value="프로그래머">프로그래머
<option value="연구전문직">연구전문직
<option value="교수학생">교수학생
<option value="일반자영업">일반자영업
<option value="공무원">공무원
<option value="의료인">의료인
<option value="법조인">법조인
<option value="종교,언론,에술인">종교.언론/예술인
<option value="농,축,수산,광업인">농/축/수산/광업인
<option value="주부">주부
<option value="무직">무직
<option value="기타">기타
</select></td>
<td>직업을 선택 하세요.</td>
</tr>
<tr>
<td colspan="3" align="center">
<input type="button" value="회원가입" onclick="inputCheck()">
<input type="reset" value="다시쓰기">
<input type="button" value="로그인" onClick="javascript:location.href='login.jsp'">
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
jsp - servlet
게시판 만들기 예제
<%@ page contentType="text/html; charset=UTF-8" %>
<%@page import="ch15.BoardBean"%>
<%@page import="java.util.Vector"%>
<jsp:useBean id="bMgr" class="ch15.BoardMgr" />
<%
request.setCharacterEncoding("UTF-8");
int totalRecord=0; //전체레코드수
int numPerPage=10; // 페이지당 레코드 수
int pagePerBlock=15; //블럭당 페이지수
int totalPage=0; //전체 페이지 수
int totalBlock=0; //전체 블럭수
int nowPage=1; // 현재페이지
int nowBlock=1; //현재블럭
int start=0; //디비의 select 시작번호
int end=10; //시작번호로 부터 가져올 select 갯수
int listSize=0; //현재 읽어온 게시물의 수
String keyWord = "", keyField = "";
Vector<BoardBean> vlist = null;
if (request.getParameter("keyWord") != null) {
keyWord = request.getParameter("keyWord");
keyField = request.getParameter("keyField");
}
if (request.getParameter("reload") != null){
if(request.getParameter("reload").equals("true")) {
keyWord = "";
keyField = "";
}
}
if (request.getParameter("nowPage") != null) {
nowPage = Integer.parseInt(request.getParameter("nowPage"));
}
start = (nowPage * numPerPage)-numPerPage;
end = numPerPage;
totalRecord = bMgr.getTotalCount(keyField, keyWord);
totalPage = (int)Math.ceil((double)totalRecord / numPerPage); //전체페이지수
nowBlock = (int)Math.ceil((double)nowPage/pagePerBlock); //현재블럭 계산
totalBlock = (int)Math.ceil((double)totalPage / pagePerBlock); //전체블럭계산
%>
<html>
<head>
<title>JSP Board</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
function list() {
document.listFrm.action = "list.jsp";
document.listFrm.submit();
}
function pageing(page) {
document.readFrm.nowPage.value = page;
document.readFrm.submit();
}
function block(value){
document.readFrm.nowPage.value=<%=pagePerBlock%>*(value-1)+1;
document.readFrm.submit();
}
function read(num){
document.readFrm.num.value=num;
document.readFrm.action="read.jsp";
document.readFrm.submit();
}
function check() {
if (document.searchFrm.keyWord.value == "") {
alert("검색어를 입력하세요.");
document.searchFrm.keyWord.focus();
return;
}
document.searchFrm.submit();
}
</script>
</head>
<body bgcolor="#FFFFCC">
<div align="center">
<br/>
<h2>JSPBoard</h2>
<br/>
<table align="center" width="600">
<tr>
<td>Total : <%=totalRecord%>Articles(<font color="red">
<%=nowPage%>/<%=totalPage%>Pages</font>)</td>
</tr>
</table>
<table align="center" width="600" cellpadding="3">
<tr>
<td align="center" colspan="2">
<%
vlist = bMgr.getBoardList(keyField, keyWord, start, end);
listSize = vlist.size();//브라우저 화면에 보여질 게시물 번호
if (vlist.isEmpty()) {
out.println("등록된 게시물이 없습니다.");
} else {
%>
<table width="100%" cellpadding="2" cellspacing="0">
<tr align="center" bgcolor="#D0D0D0" height="120%">
<td>번 호</td>
<td>제 목</td>
<td>이 름</td>
<td>날 짜</td>
<td>조회수</td>
</tr>
<%
for (int i = 0;i<numPerPage; i++) {
if (i == listSize) break;
BoardBean bean = vlist.get(i);
int num = bean.getNum();
String name = bean.getName();
String subject = bean.getSubject();
String regdate = bean.getRegdate();
int depth = bean.getDepth();
int count = bean.getCount();
%>
<tr>
<td align="center">
<!-- <%=totalRecord-((nowPage-1)*numPerPage)-i%> --><%=num%>
</td>
<td>
<%
if(depth>0){
for(int j=0;j<depth;j++){
out.println(" ");
}
}
%>
<a href="javascript:read('<%=num%>')"><%=subject%></a>
</td>
<td align="center"><%=name%></td>
<td align="center"><%=regdate%></td>
<td align="center"><%=count%></td>
</tr>
<% }//for%>
</table> <%
}//if
%>
</td>
</tr>
<tr>
<td colspan="2"><br /><br /></td>
</tr>
<tr>
<td>
<!-- 페이징 및 블럭 처리 Start-->
<%
int pageStart = (nowBlock -1)*pagePerBlock + 1 ; //하단 페이지 시작번호
int pageEnd = ((pageStart + pagePerBlock ) <= totalPage) ? (pageStart + pagePerBlock): totalPage+1;
//하단 페이지 끝번호
if(totalPage !=0){
if (nowBlock > 1) {%>
<a href="javascript:block('<%=nowBlock-1%>')">prev...</a><%}%>
<%for ( ; pageStart < pageEnd; pageStart++){%>
<a href="javascript:pageing('<%=pageStart %>')">
<%if(pageStart==nowPage) {%><font color="blue"> <%}%>
[<%=pageStart %>]
<%if(pageStart==nowPage) {%></font> <%}%></a>
<%}//for%>
<%if (totalBlock > nowBlock ) {%>
<a href="javascript:block('<%=nowBlock+1%>')">.....next</a>
<%}%>
<%}%>
<!-- 페이징 및 블럭 처리 End-->
</td>
<td align="right">
<a href="post.jsp">[글쓰기]</a>
<a href="javascript:list()">[처음으로]</a>
</td>
</tr>
</table>
<hr width="600"/>
<form name="searchFrm" method="get" action="list.jsp">
<table width="600" cellpadding="4" cellspacing="0">
<tr>
<td align="center" valign="bottom">
<select name="keyField" size="1" >
<option value="name"> 이 름</option>
<option value="subject"> 제 목</option>
<option value="content"> 내 용</option>
</select>
<input size="16" name="keyWord">
<input type="button" value="찾기" onClick="javascript:check()">
<input type="hidden" name="nowPage" value="1">
</td>
</tr>
</table>
</form>
<form name="listFrm" method="post">
<input type="hidden" name="reload" value="true">
<input type="hidden" name="nowPage" value="1">
</form>
<form name="readFrm" method="get">
<input type="hidden" name="num">
<input type="hidden" name="nowPage" value="<%=nowPage%>">
<input type="hidden" name="keyField" value="<%=keyField%>">
<input type="hidden" name="keyWord" value="<%=keyWord%>">
</form>
</div>
</body>
</html>
반응형
'교육 > Java&Spring' 카테고리의 다른 글
kosta 클라우드 네이티브 애플리케이션 개발 과정 day 32 (0) | 2023.02.07 |
---|---|
kosta 클라우드 네이티브 애플리케이션 개발 과정 day 31 (0) | 2023.02.04 |
kosta 클라우드 네이티브 애플리케이션 개발 과정 day 29 (0) | 2023.02.01 |
kosta 클라우드 네이티브 애플리케이션 개발 과정 day 28 (0) | 2023.01.31 |
kosta 클라우드 네이티브 애플리케이션 개발 과정 day 27 (0) | 2023.01.30 |