View 작업자의 특징은 (자바를 갈수록 더 모름)
→ JAVA 보다는
Vue, Node, React,... 다른 종류를 더 많이 공부함
근본이 자바스크립트
사용자의 동작
JS, jQuery, ...
경량의 데이터를 요청 및 응답
jQuery의 ajax()를 사용; JSON 데이터와 같이
[ View를 View답게 ! ]
1) View는 JAVA를 절대 작성 XXXXX (정말 피치못할경우 아주 쪼끔 쓰지만 쓰면 안됨)
아.. JAVA와 같은 "기능"을 가진 태그가 있었으면 좋겠다
누가 "기능을가진" 태그좀 만들어주세요..
JSTL 자바서버 페이지 표준 태그 라이브러리 (조건문, 반복문등 처리하기 위한)
JSP 태그 라이브러리를 추가하여 JSP사양을 확장
자바 기능을 구현한 모음집 (JSP 성능이 좋아짐)
forEach는 두가지 속성을 적어야 한다
EL식
간단한 연산이 간능함
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="model.BoardVO,java.util.ArrayList" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>메인</title>
</head>
<body>
<script type="text/javascript">
function check(){
var ans=prompt('비밀번호를 입력하세요.');
location.href='controller.jsp?action=mypage&mpw='+ans;
}
</script>
<c:if test= "${empty mid}">
<a href="controller.jsp?action=signupPage">회원가입</a>
<form action="controller.jsp" method="post">
<input type="hidden" name="action" value="login">
<input type="text" name="mid">
<input type="password" name="mpw">
<input type="submit" value="로그인">
</form>
</c:if>
<c:if test= "${not empty mid}">
<a href='controller.jsp?action=mypagePage'>${ mid }님의 마이페이지</a> <a href='controller.jsp?action=logout'>로그아웃</a>
}
</c:if>
<hr>
<table border="1">
<tr>
<th>글 번호</th><th>글 제목</th><th>작성자</th>
</tr>
<c:forEach var="v" items="${datas}">
<tr>
<td><a href="controller.jsp?action=board&num=${v.num}">${v.num}</a></td>
<td>${v.title}</td>
<td>${v.writer}</td>
</tr>
</c:forEach>
</table>
<br>
<c:if test= "${not empty mid}">
<a href='controller.jsp?action=insertBoardPage'>게시글 작성</a>
</c:if>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.ArrayList,model.BoardVO" %>
<%
request.setCharacterEncoding("UTF-8");
// "필터"
// "인코딩 필터"
%>
<jsp:useBean id="bDAO" class="model.BoardDAO" />
<jsp:useBean id="mDAO" class="model.MemberDAO" />
<jsp:useBean id="mVO" class="model.MemberVO" />
<jsp:setProperty property="*" name="mVO" />
<jsp:useBean id="bVO" class="model.BoardVO" />
<jsp:setProperty property="*" name="bVO" />
<%
String action=request.getParameter("action");
System.out.println("로그: controller.jsp");
System.out.println("action: "+action);
System.out.println("bVO: "+bVO);
System.out.println("mVO: "+mVO);
if(action.equals("main")){
ArrayList<BoardVO> datas=bDAO.selectAll(null);
request.setAttribute("datas", datas);
request.getRequestDispatcher("b_main.jsp").forward(request, response);
}
else if(action.equals("board")){
bVO=bDAO.selectOne(bVO);
if(bVO!=null){
request.setAttribute("data", bVO);
request.getRequestDispatcher("d_board.jsp").forward(request, response);
}
}
else if(action.equals("login")){
mVO = mDAO.selectOne(mVO); // mVO에 mid,mpw가 setter에 의해 저장됨
if(mVO==null){
out.println("<script>alert('로그인 실패...');history.go(-1);</script>");
}
else{
session.setAttribute("mid", mVO.getMid());
response.sendRedirect("controller.jsp?action=main");
}
}
else if(action.equals("logout")){
session.removeAttribute("mid");
response.sendRedirect("controller.jsp?action=main");
}
else if(action.equals("signupPage")){
response.sendRedirect("e_signup.jsp");
}
else if(action.equals("signup")){
boolean flag=mDAO.insert(mVO);
if(flag){
out.println("<script>alert('회원가입 성공! 로그인후에 이용하세요! :D');location.href='controller.jsp?action=main';</script>");
}
else{
out.println("<script>alert('회원가입 실패...');history.go(-1);</script>");
}
}
else if(action.equals("insertBoardPage")){
response.sendRedirect("c_insertBoard.jsp");
}
else if(action.equals("insertBoard")){
boolean flag=bDAO.insert(bVO);
if(flag){
out.println("<script>alert('게시글 작성 성공!');location.href='controller.jsp?action=main';</script>");
}
else{
out.println("<script>alert('게시글 작성 실패...');history.go(-1);</script>");
}
}
else if(action.equals("updateBoard")){
boolean flag=bDAO.update(bVO);
if(flag){
out.println("<script>alert('게시글 변경 성공!');location.href='controller.jsp?action=board&num="+bVO.getNum()+"';</script>");
}
else{
out.println("<script>alert('게시글 변경 실패...');history.go(-1);</script>");
}
}
else if(action.equals("deleteBoard")){
boolean flag=bDAO.delete(bVO);
if(flag){
response.sendRedirect("controller.jsp?action=main");
}
else{
out.println("<script>alert('게시글 삭제 실패...');history.go(-1);</script>");
}
}
else if(action.equals("mypagePage")){
response.sendRedirect("mypage.jsp");
}
else if(action.equals("mypage")){
///// mVO.setMid((String)session.getAttribute("mid"));
mVO=mDAO.selectOne(mVO);
if(mVO!=null){
request.setAttribute("data", mVO);
request.getRequestDispatcher("f_mypage.jsp").forward(request, response);
}
else{
out.println("<script>alert('비밀번호 불일치...');history.go(-1);</script>");
}
}
else if(action.equals("updateMember")){
boolean flag=mDAO.update(mVO);
if(flag){
out.println("<script>alert('회원정보 변경 성공! 로그인후에 이용하세요! :D');location.href='controller.jsp?action=logout';</script>");
}
else{
out.println("<script>alert('회원정보 변경 실패...');history.go(-1);</script>");
}
}
else if(action.equals("deleteMember")){
boolean flag=mDAO.delete(mVO);
if(flag){
out.println("<script>alert('회원탈퇴 성공!');location.href='controller.jsp?action=logout';</script>");
}
else{
out.println("<script>alert('회원탈퇴 실패...');history.go(-1);</script>");
}
}
else{
out.println("<script>alert('action 파라미터의 값을 확인해주세요!');history.go(-1);</script>");
}
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="model.BoardVO" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>상세 페이지</title>
</head>
<body>
<script type="text/javascript">
function delBoard(){
var ans=confirm('정말 삭제할까요?');
if(ans==true){
document.form.action.value='deleteBoard';
document.form.submit();
}
}
</script>
<%
// BoardVO data=(BoardVO)request.getAttribute("data");
// boolean flag=data.getWriter().equals(session.getAttribute("mid"));
%>
<form name="form" action="controller.jsp" method="post">
<input type="hidden" name="action" value="updateBoard">
글 번호: <input type="text" name="num" value="${data.num}" readonly> <br>
글 제목: <input type="text" name="title" value="${data.num}"
<c:if test="${mid!=data.writer}"> readonly</c:if>> <br>
글 내용: <input type="text" name="content" value="${data.content }"
<c:if test="${mid!=data.writer}"> readonly</c:if>> <br>
작성자: <input type="text" name="writer" value="${data.writer}" readonly> <br>
<c:if test="${mid==data.writer}">
<input type="submit" value="게시글 변경">
<input type="button" value="게시글 삭제" onClick="delBoard()">
</c:if>
</form>
<br>
<a href="controller.jsp?action=main">메인으로 돌아가기</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="model.MemberVO" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<script type="text/javascript">
function remove(){
var ans=confirm("정말로 탈퇴하시겠습니까???");
if(ans==true){
document.form.action.value='deleteMember';
document.form.submit();
}
}
</script>
<form name='form' action="controller.jsp" method="post">
<input type="hidden" name="action" value="updateMember">
아이디 <input type="text" name="mid" readonly value='${data.mid}'> <br>
비밀번호 <input type="password" name="mpw" value='${data.mpw}'> <br>
이름 <input type="text" name="name" value='${data.name}'> <br>
<input type="submit" value="회원정보변경"> <input type="button" value="회원탈퇴" onClick='remove()'>
</form>
<br>
<a href="controller.jsp?action=main">메인으로 돌아가기</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>보통의 마이페이지</title>
</head>
<body>
<form action="controller.jsp" method="post">
<input type="hidden" name="action" value="mypage">
<input type="hidden" name="mid" value="${mid}">
비밀번호를 확인하겠습니다. <br>
비밀번호를 입력해주세요. <br>
<input type="password" name="mpw">
<input type="submit" value="비밀번호 확인">
</form>
</body>
</html>