100일 챌린지/빅데이터기반 인공지능 융합 서비스 개발자

Day 17 - jsp로 웹페이지 만들기 vagrant로 배포하기

ksyke 2024. 8. 13. 13:09

메뉴 만들기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <table width="800" align="center">
        <tr>
            <td colspan="2">
                <img alt="logo" src="C:/workspace/Day17/imgs/logo.jpg">
            </td>
            <td colspan="2">&nbsp;</td>
            <td colspan="2" align="right">
                [<a href="#">login</a>]
                [<a href="#">join</a>]
            </td>
        </tr>
        <tr>
            <td width="200" bgcolor="gray">&nbsp;</td>
            <td width="100" bgcolor="gray" align="center">[<a href="/Day17/index.jsp">Home</a>]</td>
            <td width="100" bgcolor="gray" align="center">[<a href="/Day17/intro.jsp">Intro</a>]</td>
            <td width="100" bgcolor="gray" align="center">[<a href="/Day17/bbs.jsp">B B S</a>]</td>
            <td width="100" bgcolor="gray" align="center">[<a href="/Day17/guest.jsp">Guest</a>]</td>
            <td width="200" bgcolor="gray">&nbsp;</td>
        </tr>
        <tr>
            <td colspan="6" align="center" height="400">
            <!-- content begin -->

            <!-- 이곳에 각 페이지에 해당하는 content를 넣는다. -->

            <!-- content end -->
            </td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td colspan="4" bgcolor="gray" align="center">
                <p>김해캠퍼스 (50834) 경남 김해시 인제로 197 TEL. 055-334-7111FAX. 055-334-0712 E-mail. webmaster@inje.ac.kr</p>
                <p>부산캠퍼스 (47392) 부산광역시 부산진구 복지로 75(부산백병원 내) TEL. 051-890-6625 FAX. 051-895-1864</p>
                <font color="white"><p>Copyright(c) 1996-2022 INJE University. All rights reserved.</p></font>
            </td>
            <td>&nbsp;</td>
        </tr>
    </table>
</body>
</html>

Home

<img alt="" src="https://www.inje.ac.kr/PDS/M_banner/20240624%EB%8B%A8%EC%B6%95%EA%B7%BC%EB%AC%B4%EC%8B%A4%EC%8B%9C%EC%95%88%EB%82%B4(1).jpg">
<img alt="" src="https://www.inje.ac.kr/PDS/M_banner/20230912%EC%A2%8B%EC%9D%80%EC%82%AC%EC%9D%B43.jpg">

게시판

<%@ page import="java.util.List,java.util.Map" %>
<h1>게시판</h1>
<%
    Object obj = application.getAttribute("bbs");
    List<Map<String, String>> list = null;
    if(obj != null){
        list = (List<Map<String, String>>)obj;
    }
%>
<table width="500" align="center" border="1" cellspacing="0">
    <tr>
        <td>글번호</td>
        <td>제목</td>
    </tr>
<%
    if(list != null){
        for(int i = 0; i < list.size(); i++){
            Map<String, String> map = list.get(i);%>
            <tr>
                <td><%out.print(i+1);%></td>
                <td>
                <a href="detail.jsp?idx=<%out.print(i);%>">
                    <%out.print(map.get("sub"));%>
                </a>
                </td>
            </tr>
<%        }
    }
%>
</table>

<p>[<a href="/Day17/add.jsp">입력]</a></p>

add

<h1>새글 작성</h1>
<form action="insert.jsp">
<table width="500">
    <tr>
        <td width="100">제목</td>
        <td><input type="text" name="sub" size="60"></td>
    </tr>
    <tr>
        <td colspan="2">
            <textarea name="content" rows="10" cols="80"></textarea>
        </td>
    </tr>
    <tr>
        <td colspan="2" align="center">
            <input type="submit" value="입력">
            <input type="reset" value="취소">
        </td>
    </tr>
</table>
</form>

insert

<%@ page import="java.util.List,java.util.ArrayList" %>
<%@ page import="java.util.Map,java.util.HashMap" %>
<%
    List<Map<String, String>> list = null;

    Object obj = application.getAttribute("bbs");
    if(obj == null) list = new ArrayList<>();

    else list = (List<Map<String, String>>)obj;

    application.setAttribute("bbs", list);

    Map<String, String> map = new HashMap<>();
    String sub = request.getParameter("sub");
    String content = request.getParameter("content");
    map.put("sub", sub);
    map.put("content", content);

    list.add(map);
%>
<a href="bbs.jsp">목록으로 돌아가기</a>

detail

<h1>상세보기</h1>
<%@ page import="java.util.List,java.util.Map" %>
<%
    List<Map<String,String>> list;
    list=(List<Map<String,String>>)application.getAttribute("bbs");

    int idx=Integer.parseInt(request.getParameter("idx"));
    Map<String,String> map=list.get(idx);
%>
<table width="500" align="center">
    <tr>
        <td  bgcolor="#cccccc" width="100">제목</td>
        <td bgcolor="#cccccc"><%out.print(map.get("sub")); %></td>
    </tr>
    <tr>
        <td bgcolor="#cccccc" height="400" colspan="2"><%out.print(map.get("content")); %></td>
    </tr>
    <tr>
        <td colspan="2" align="center" bgcolor="gray">
            <a href="edit.jsp?idx=<%=idx%>">수정</a>
            <a href="del.jsp?idx=<%=idx%>">삭제</a>
        </td>
    </tr>
</table>

update

<%@ page import="java.util.*" %>
<%
    int idx = Integer.parseInt(request.getParameter("idx"));
    String sub = request.getParameter("sub");
    String content = request.getParameter("content");

    Map<String, String> map = new HashMap<>();
    map.put("sub", sub);
    map.put("content", content);

    List list = (List)application.getAttribute("bbs");
    list.set(idx, map);
%>
<a href="bbs.jsp">목록으로 이동</a>

edit

<%@ page import="java.util.*" %>
<h1>글 수정</h1>
<%
    int idx = Integer.parseInt(request.getParameter("idx"));
    List<Map<String, String>> list = (List)application.getAttribute("bbs");
    Map<String, String> map = list.get(idx);
%>
<form action="update.jsp">
<input type="hidden" name="idx" value="<%=idx %>">
<table width="500">
    <tr>
        <td width="100">제목</td>
        <td><input value="<%=map.get("sub") %>" type="text" name="sub" size="60"></td>
    </tr>
    <tr>
        <td colspan="2">
            <textarea name="content" rows="10" cols="80">
            <%=map.get("content")%>
            </textarea>
        </td>
    </tr>
    <tr>
        <td colspan="2" align="center">
            <input type="submit" value="수정">
            <input type="reset" value="취소">
        </td>
    </tr>
</table>
</form>

del

<%@ page import="java.util.*" %>
<%
    int idx = Integer.parseInt(request.getParameter("idx"));
    List<Map<String, String>> list = (List)application.getAttribute("bbs");
    list.remove(idx);
%>
<a href="bbs.jsp">목록으로 이동</a>

방명록

<h1>방명록</h1>
<form action="addGuest.jsp">
    <table width="500">
        <tr>
            <td width="120">글쓴이</td>
            <td><input type="text" name="id"></td>
            <td width="100" rowspan="2">
                <input type="submit" style="width:100%; height:100%">
            </td>
        </tr>
        <tr>
            <td>남길글</td>
            <td><textarea name="content" rows="3" cols="40"></textarea></td>
        </tr>
    </table>
</form>
<%@ page import="java.util.List" %>
<% 
    Object obj = application.getAttribute("guest");

    List<String[]> list = null;
    if(obj != null) list = (List)obj;
%>
    <table width="500" border="1" cellspacing="0">
<%
    if(list != null){
        for(int i = 0; i < list.size(); i++){%>
        <tr>
            <td width="80"><%=list.get(i)[0] %></td>
            <td><%=list.get(i)[1] %></td>
            <td width="100"><a href="delGuest.jsp?idx=<%=i %>">[삭제]
        </tr>
<%    }
}
%>
    <tr>
</table>

addGuest

<meta http-equiv="refresh" content="0; url=guest.jsp">
<%@ page import="java.util.*" %>
<%
    String id = request.getParameter("id");
    String content = request.getParameter("content");

    String[] row = new String[]{id, content};

    Object obj = application.getAttribute("guest");
    List<String[]> list = null;

    if(obj == null) list = new ArrayList<>();
    else list = (List)obj;

    list.add(row);
    application.setAttribute("guest", list);

%>
<h1>입력성공</h1>

delGuest

<meta http-equiv="refresh" content="0; url=guest.jsp">
<%
        int idx = Integer.parseInt(request.getParameter("idx"));
        java.util.List list = (java.util.List)application.getAttribute("guest");
        list.remove(idx);
    %>

vagrant로 배포하기

https://portal.cloud.hashicorp.com/vagrant/discover?query=ubuntu&sort=created_at%20desc

vagrant init bento/ubuntu-20.04
vagrant up
winget search ssh
winget install putty.putty

putty 사용하기

java 다운받기
sudo apt update
sudo apt install openjdk-8-jdk-headless
Tomcat 받기
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.53/bin/apache-tomcat-8.0.53.tar.gz
tar -zxvf apache-tom~.tar.gz
파일 이름 바꾸기
mv [바꿀 파일 이름] [새로운 이름]
파일 지우기
rm [지울 파일 이름]

실행시키기

cd tomcat8/bin
ls
//. startup.sh & // 백그라운드로 실행
./catalina.sh start
접속 시도하기
curl http://localhost:8080
서버 deploy
cd /tomcat8/webapps
rm -f *
rm -r *
github의 코드 올리기
git clone [github 주소] 
mv lec2024/day17/ ./day17
ls
rm -r lec2024/
apt search ant
wget https://dlcdn.apache.org//ant/binaries/apache-ant-1.10.14-bin.tar.gz
tar -zxvf apache-ant~.tar.gz
mv apache-ant-1.10.14-bin ant
cd ant
echo $JAVA_HOME
which javac
ls -l [javac 주소]
ls -l [결과 주소= /usr/lib/jvm/java-8-openjdk-amd64]
pwd
ls al
nano .profile
>> (제일밑에 추가) #USER ADD PATH
>> JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
>>ANT_HOME=~/ant
>>PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin
>>(ctrl+X)
source .profile
ant
cd tomcat/wenapps/day17/
mkdir /WebContent/WEB_INF/lib
ant build
mv /home/vagrant/tomcat8/webapps/day17/WebContent/WEB_INF/lib/build/ROOT.war ../
mv Root.war day17.war
파일 업로드 하기
  • 터미널
    (FTP 다운받기)
winget WinSCP.WinSCP

open PSFTP

vagrant 끄기
vagrant halt