프로젝트를 만든다.

dbutil은 db정보임..

회원과 방명록(글번호, 아이디, 제목, 내용, 작성시간)이 있다...

table.sql에 db정보를 써놓았다...!!

방명록은 게시판과는 다르게 목록에 내용까지 쫙 다 보인다!!(게시판은 제목만 보이고 클릭하면 상세나오는거고)

 

보통 도메인만 치고 엔터를 치면 기본적으로 was는 index 페이지를 찾는다. 

그렇기 때문에 index.html을 만든다.

근데 context-root이름을 바꿔주어야한다. 지정을 안하면 프로젝트 이름이랑 같은게 컨텍스트루트이다.

 

 

실행화면

 

 

 

컨텍스트루트 들어오면 webcontent까지 들어왔다는 뜻이다. 그러니까 그 안에 guestbook이라는 폴더를 만들어준다.

//write.html 파일
//여기서는 유효성 체크를 해주고 전송(submit)을 해준다.
//서버쪽에다 글쓰기좀 해줘라고 요청하는것이다.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>SSAFY - 글작성</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <style>
        mark.sky {
            background: linear-gradient(to top, #54fff9 20%, transparent 30%);
        }
    </style>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#registerBtn").click(function () {//등록 버튼을 누른다면!
                if (!$("#userid").val()) {//근데 아이디가 없으면
                    alert("아이디 입력!!!!");
                    return;
                } else if (!$("#subject").val()) {//제목이 없다면
                    alert("제목 입력!!!!");
                    return;
                } else if (!$("#content").val()) {//이름이 없다면
                    alert("내용 입력!!!!");
                    return;
                } else {
                	//writeform안에 입력한 모든 데이터 들을 서버에 전송하겠다!
                	//어디로? action="~이 안에 url 작성~" action속에 입력한 곳으로 (근데 이걸 attr로 관리할수있다)
                	//그러면 articlewrite이라는 서블릿(글등록하는 서버) 작성해야한다!
                	
                    $("#writeform").attr("action", "/guestbook1_servlet/articlewrite").submit();
                }
            });
        });
    </script>
</head>
<body>
    <div class="container text-center mt-3">
        <div class="col-lg-8 mx-auto">
            <h2 class="p-3 mb-3 shadow bg-light"><mark class="sky">글쓰기</mark></h2>
            <form id="writeform" class="text-left mb-3" method="post" action="">
                <div class="form-group">
                    <label for="userid">작성자ID:</label>
                    <input type="text" class="form-control" id="userid" name="userid" placeholder="작성자ID...">
                </div>
                <div class="form-group">
                    <label for="subject">제목:</label>
                    <input type="text" class="form-control" id="subject" name="subject" placeholder="제목...">
                </div>
                <div class="form-group">
                    <label for="content">내용:</label>
                    <textarea class="form-control" rows="15" id="content" name="content"></textarea>
                </div>
                <div class="text-center">
                    <button type="button" id="registerBtn" class="btn btn-outline-primary">글작성</button>
                    <button type="reset" class="btn btn-outline-danger">초기화</button>
                </div>
            </form>
        </div>
    </div>
</body>
</html>

 

 

 

 

 

//guestbookwrite.java
//서버쪽에서 처리하는 거임

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

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.ssafy.util.DBUtil;

//만약 404면 오타나서 나는 오류
//500이면 서버쪽 오류

//404에러뜨면 웹서블릿이름 확인해보기
@WebServlet("/articlewrite")
public class GuestBookWrite extends HttpServlet {

	private static final long serialVersionUID = 1L;
	
	private DBUtil util = DBUtil.getInstance();//db객체 얻어옴

	//index에서 클릭하고 작성페이지에서 post방식으로 폼을 작성하기 때문에
    //제목 내용이 길기 때문에 post방식으로 작성했음
    //그렇기 때문에 doPost방식을 사용한다.
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
        //		1. data get 
		//클라이언트가 입력해서 파라미터로 보낸것(request)을 가져온다!!
		
		//무조건 string으로만 받을 수 있다.
		//html에서 <input type="text" name="userid"> <<이 name으로 구분!!!
		
		//보낼때도 font가 깨지지만 받을때도 깨진다.
		request.setCharacterEncoding("utf-8"); // post에서만..get에서는 하면 안된다!!
		String id= request.getParameter("userid");
		String subject = request.getParameter("subject");
		String content = request.getParameter("content");
		System.out.println(subject);//콘솔창에 찍어본다...
		
        
		//		2. logic
		
		//db에 집어넣으려면 jdbc 필요
		
		//insert하려면 connection과 preparedstatement  필요
		Connection conn = null;
		PreparedStatement pstmt = null;
		int cnt = 0; //insert가 되었는지 안되었는지 판단하기 위한 변수
		try {
			conn = util.getConnection();//db 연결
			String sql = "insert into guestbook (userid, subject, content) \n";
			sql += "values (?, ?, ?)";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, id);
			pstmt.setString(2, subject);
			pstmt.setString(3, content);
			
           	cnt = pstmt.executeUpdate();//insert의 개수를 return 해준다. 정상적으로 insert되었으면 1리턴, 안되었으면 0리턴
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			util.close(pstmt, conn); //둘다 닫아버림
		}
		
//		3. response page(응답페이지) >> 성공 또는 실패를 출력한다.

//"같은거는 \"로 모두 바꿔주어야한다!!!!!

		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE html>");
		out.println("<html>");
		out.println("<head>");
		out.println("    <meta charset=\"UTF-8\">");
		out.println("    <title>SSAFY - 글목록</title>");
		out.println("    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
		out.println("    <link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css\">");
		out.println("    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js\"></script>");
		out.println("    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js\"></script>");
		out.println("    <script src=\"https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js\"></script>");
		out.println("    <script type=\"text/javascript\">");
		out.println("        $(document).ready(function () {");
		out.println("            $(\"#mvListBtn\").click(function () {");
		out.println("                location.href = \"/guestbook1_servlet/listarticle\";");
		out.println("            });");
		out.println("            $(\"#mvRegisterBtn\").click(function () {");
		out.println("                location.href = \"/guestbook1_servlet/guestbook/write.html\";");
		out.println("            });");
		out.println("        });");
		out.println("    </script>");
		out.println("</head>");
		out.println("<body>");
		out.println("    <div class=\"container text-center mt-3\">");
		out.println("        <div class=\"col-lg-8 mx-auto\">");
		if(cnt != 0) {
			out.println("            <div class=\"jumbotron\">");
			out.println("                <h1 class=\"text-primary\">글작성 성공 ^^</h1>");
			out.println("                <p class=\"mt-4\"><button type=\"button\" id=\"mvListBtn\" class=\"btn btn-outline-dark\">글목록 페이지로 이동</button>");
			out.println("                </p>");
			out.println("            </div>");
		} else {
			out.println("            <div class=\"jumbotron\">");
			out.println("                <h1 class=\"text-danger\">글작성 실패 T.T</h1>");
			out.println("                <p class=\"mt-4\"><button type=\"button\" id=\"mvRegisterBtn\" class=\"btn btn-outline-dark\">글쓰기 페이지로 이동</button>");
			out.println("                </p>");
			out.println("            </div>");
		}
		out.println("        </div>");
		out.println("    </div>");
		out.println("</body>");
		out.println("</html>");
		
	}

}

 

 

 

 

 

 

+ Recent posts