관리 메뉴

me made it !

[JSP] 20230314 JSP 모델2 방식으로 게시판 만들기 본문

TIL/JSP

[JSP] 20230314 JSP 모델2 방식으로 게시판 만들기

yeoney 2023. 3. 14. 16:44
반응형

 

function idCheck(){
//	alert("아이디 체크창입니다.");	
	let memberId = $("#memberId").val();
	
	$.ajax({
		url: "<%=request.getContextPath()%>/member/memberIdCheck.do",		
		method: "POST",
		data: {"memberId": memberId },
		dataType: "json",
		success : function(data){	
			if (data.idYn =="Y"){
				alert("사용가능한 아이디입니다.");
				$("#memberIdCheck").val("Y");
			}else{
				alert("사용불가한 아이디 입니다");
			}	
		},
		error : function(request,status,error){
			alert("다시 시도하시기 바랍니다.");		
		}		
	});
	}else if(str.equals("/member/memberIdCheck.do")) {
			String memberId = request.getParameter("memberId");
			//넘어온 memberId와 같은 아이디가 있는지 체크
			MemberDao md = new MemberDao();
			int value = md.memberIdCheck(memberId);
			
			PrintWriter out = response.getWriter();
			out.println("{\"value\":"+value+"}");
						
		}
		
	}
	public int memberIdCheck(String memberId){
			int value = 0;
			String sql ="select count(*) as cnt from member1230 where memberid = ?";
			PreparedStatement pstmt = null;
			ResultSet rs = null;
				try {
					pstmt = conn.prepareStatement(sql);
					pstmt.setString(1, memberId);
					rs = pstmt.executeQuery();
					
					if(rs.next()) {	//커서가 이동을 해서 다음 값이 존재하면 참 -> 진행할 수 있다.
						value = rs.getInt("cnt");					
					}
				}catch(SQLException e) {
					e.printStackTrace();
				}finally {
					try {
						rs.close();
						pstmt.close();
						conn.close();
					} catch (Exception e) {
					
						e.printStackTrace();
					}
				}
				return value;
		}

 

 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app>

<servlet>
<servlet-name>controller</servlet-name>
<servlet-class>example1230.controller.FrontController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>controller</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

</web-app>
package example1230.controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/FrontController")
public class FrontController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		String uri = request.getRequestURI();
	//	System.out.println("전체 주소는? "+uri);
		String projectName = request.getContextPath();		
		int projectLength = projectName.length();		
		String str = uri.substring(projectLength);	//실제 가상경로이름 추출
	//	System.out.println("가상경로는? "+str);
	//		 예를 들면 
	// 		/member/memberList.do
	//		/board/boardList.do
		String[] strArray = str.split("/");
		String gubun = strArray[1];

		if (gubun.equals("member")) {
			MemberController mc = new MemberController(str);
			mc.doGet(request, response);
			
		}else if(gubun.equals("board")) {
			BoardController bc =new BoardController(str);
			bc.doGet(request, response);
			
		}
		
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		doGet(request, response);
	}

}
package example1230.controller;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
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 example1230.domain.BoardVo;
import example1230.service.BoardDao;

@WebServlet("/BoardController")
public class BoardController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    String str;
    public BoardController(String path) {
    	this.str = path;
      
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		if(str.equals("/board/boardList.do")) {
			System.out.println("boardList.do 들어옴");
			
			BoardDao bd =  new BoardDao();
			ArrayList<BoardVo> blist = bd.boardSelectAll();
			
			
			request.setAttribute("blist", blist);
			
			RequestDispatcher rd = request.getRequestDispatcher("/board/boardList.jsp");
			rd.forward(request, response);		//forward 방식 : 같은 영역안에 있는 다른 공간에 정보를 넘겨줌 
			
		
		}
		
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
		doGet(request, response);
	}

}
package example1230.service;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import example1230.dbconn.Dbconn;
import example1230.domain.BoardVo;

public class BoardDao {
	
	Connection conn;
	
	public BoardDao() {
		
		Dbconn dbconn = new Dbconn();
		conn = dbconn.getConnection();
		
	}
	
	public ArrayList<BoardVo> boardSelectAll(){
		ArrayList<BoardVo> blist = new ArrayList<BoardVo>();
		
		String sql ="select *from board1230 where delyn = 'n' order by bidx DESC";
		
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			
			while(rs.next()){
				BoardVo bv = new BoardVo();
				bv.setBidx(rs.getInt("bidx"));
				bv.setSubject(rs.getString("subject"));
				bv.setWriter(rs.getString("writer"));
				bv.setWriteday(rs.getString("writeday"));
				blist.add(bv);
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			try {
				rs.close();
				pstmt.close();
				conn.close();
			} catch (SQLException e) {		
				e.printStackTrace();
			}
		}
		
		return blist;
	}
	
}
package example1230.dbconn;

import java.sql.Connection;
import java.sql.DriverManager;

public class Dbconn {
	
	private String url= "jdbc:oracle:thin:@127.0.0.1:1521:xe";
	private String user="system";
	private String password="1234";
	
	public Connection getConnection() {
	
		Connection conn= null ;
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");	
			conn = DriverManager.getConnection(url, user, password);		//연결객체 생성
		} catch (Exception e) {
			e.printStackTrace();
		}
	return conn;
	}
}
package example1230.domain;

public class BoardVo {

	
	private int bidx;
	private String subject;
//	private String content;
	private String writer;
	private String delyn;
	private String writeday;
	private String ip;
	int midx;
	
	
	public int getBidx() {
		return bidx;
	}
	public void setBidx(int bidx) {
		this.bidx = bidx;
	}
	public String getSubject() {
		return subject;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	public String getWriter() {
		return writer;
	}
	public void setWriter(String writer) {
		this.writer = writer;
	}
	public String getDelyn() {
		return delyn;
	}
	public void setDelyn(String delyn) {
		this.delyn = delyn;
	}
	public String getWriteday() {
		return writeday;
	}
	public void setWriteday(String writeday) {
		this.writeday = writeday;
	}
	public String getIp() {
		return ip;
	}
	public void setIp(String ip) {
		this.ip = ip;
	}
	public int getMidx() {
		return midx;
	}
	public void setMidx(int midx) {
		this.midx = midx;
	}
	
	
	
	
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>      
 <%@ page import ="java.util.*" %>
 <%@ page import ="example1230.domain.BoardVo" %>
 <%
 ArrayList<BoardVo>  blist = (ArrayList<BoardVo>)request.getAttribute("blist");
 %>    
       
   
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
a:link{
text-decoration:none;
}

</style>
</head>
<body>
게시판 목록
<form name="frm" action="<%=request.getContextPath() %>/board/boardList.do" method="post">
<table  style="text-align:left;width:800px;border:0;">
<tr>
<td style="width:600px;"></td>
<td>
<select name="searchType">
<option value="subject">제목</option>
<option value="writer">작성자</option>
</select>
</td>
<td><input type="text" name="keyword" size="10"></td>
<td><input type="submit" name="submit" value="검색"></td>
</tr>
</table>
</form>
<table border=1 style="text-align:left;width:800px;">
<tr>
<td>게시물번호</td>
<td>제목</td>
<td>작성자</td>
<td>날짜</td>
</tr>

<!-- 향상된 for 문  -->
<%for(BoardVo bv: blist){ %>
<tr>
<td><%=bv.getBidx() %></td>
<td><%=bv.getSubject() %></td>
<td><%=bv.getWriter() %></td>
<td><%=bv.getWriteday().substring(0,10)  %></td>
</tr>
<%} %>



</table>
<table style="border:0, width:300px;width:800px;">
<tr>
<td style="text-align:right;">
◀
</td>
<td style="text-align:center;width:300px;">
1 2 3 4 5 6 7 8 9 10
</td>
<td style="width:200px;text-align:left;">
▶
</td>
</tr>
</table>


<a href="<%=request.getContextPath()%>/board/boardWrite.do">글쓰기</a>
</body>
</html>

 

여기서 과제 ! 

글쓰기 버튼을 누르면 write.jsp로 연결 되게 하라고 하셨다.

BoardController.java에다가 추가하기

//과제 ! 
		if(str.equals("/board/boardWrite.do")) {
			System.out.println("boardWrite.do 들어옴");
			
			BoardDao bd =  new BoardDao();
			ArrayList<BoardVo> blist = bd.boardSelectAll();
			
			
			request.setAttribute("blist", blist);
			
			RequestDispatcher rd = request.getRequestDispatcher("/board/boardWrite.jsp");
			rd.forward(request, response);		//forward 방식 : 같은 영역안에 있는 다른 공간에 정보를 넘겨줌 
		}

왜 됐는지는 모르겠으나.. 해내서 당황스럽다;; 물어봐야겠음

 

 


 

단축키

 

오늘 안 꿀팁들  

1 . ctrl + shift + y : 소문자로 바꾸기

 

2.  <%=bv.getWriteday().substring(0,10) %> :앞에서부터 10자리만 보여주기

 


https://kbj96.tistory.com/39

 

[Servlet & JSP] Redirect vs forward 방식 비교

[Servlet & JSP] Redirect vs forward 방식 비교 현재 JSP & Servlet을 활용한 WEB 개발에 대해서 전체적으로 학습을 진행하고 있습니다. 그중에서 Redirect와 foward 개념에 대해서 정리해보고자 합니다. 또한 간단

kbj96.tistory.com

 

https://velog.io/@corone_hi/JSP-forward-redirect

 

[JSP] forward, redirect

출처Server가 client 요청에 대해 특정 URL로 이동을 다시 요청하는 rule입니다. 클라이언트가 서버에 Resource 요청을 합니다.서버는 redirect 상태값인 3xx과 함께 Header에 이동할 Location URL을 추가해서 같

velog.io

 

반응형