강의 51 - JSP를 이용해서 자바 웹 프로그램 만들기 시작
list.jsp 가 깨짐..
이 화면에서 file - property나,
alt+enter
하지만 이게 끝이 아님
아래와 같은 jsp 페이지 지시자를 넣으면 된다.
이클립스 jsp파일 생성시 기본으로 생김!
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
52 - JDBC를 이용해 글 목록 구현하기
쉽게 임포트하기 : 글자 맨 끝 ctrl + space, 저장
WAS가 배포하는데, 이 곳의 lib 환경에 동봉시켜주어야 한다.. (자세한건 8분쯤을 참고)
data가 두개만 추출되는 문제 발생
내 pc에 클라와 서버가 둘다 있는셈..
끼얏호
강의 53 - 자세한 페이지 구현하기
int id = Integer.parseInt(request.getParameter("id"));
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String login_id = "c##philz"; // 앞에 .. 망할 c##을 붙여줘야 함 ㅠㅠ
String login_pw = "1234";
// 권한을 부여해도,, SYNONYM을 주어도 테이블이 보이지 않는다 함..
/* String sql = "SELECT * FROM NOTICE WHERE ID=?";
String sql = "SELECT * FROM NOTICE WHERE ID="+id; */
String sql = "SELECT * FROM NOTICE WHERE ID=?";
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection(url, login_id, login_pw);
System.out.println(con.isClosed() ? "접속 종료" : "접속 중");
// 쿼리문을 미리 준비한다.
PreparedStatement st = con.prepareStatement(sql);
// 1번째 물음표에 id를 꽂아 넣겟다
st.setInt(1, id);
ResultSet rs = st.executeQuery();
rs.next();
참고로 날짜는 getDate이다
<table class="table">
<tbody>
<tr>
<th>제목</th>
<td class="text-align-left text-indent text-strong text-orange" colspan="3">
<%= rs.getString("TITLE") %>
</td>
</tr>
<tr>
<th>작성일</th>
<td class="text-align-left text-indent" colspan="3"><%= rs.getDate("REGDATE") %></td>
</tr>
<tr>
<th>작성자</th>
<td><%= rs.getString("WRTIER_ID") %></td>
<th>조회수</th>
<td><%= rs.getInt("HIT") %></td>
</tr>
<tr>
<th>첨부파일</th>
<td colspan="3"><%= rs.getString("FILES") %></td>
</tr>
<tr class="content">
<td colspan="4"><%= rs.getString("CONTENT") %></td>
</tr>
</tbody>
</table>
54 - 자세한 페이지 MVC model1으로 변경하기
ResultSet rs = st.executeQuery();
rs.next();
String title = rs.getString("TITLE");
Date regdate = rs.getDate("REGDATE");
String writerId = rs.getString("WRTIER_ID");
int hit = rs.getInt("HIT");
String files = rs.getString("FILES");
String content = rs.getString("CONTENT");
rs.close();
st.close();
con.close();
강의 55 - MVC model2 방식으로 변경하기
컨트롤러보다 뷰가 먼제 보이면
에러나 빈껍데기가 보일거야,,
package com.newlecture.web.controller;
...
@WebServlet("/notice/detail")
public class NoticeDetailController extends HttpServlet{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int id = Integer.parseInt(request.getParameter("id"));
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String login_id = "c##philz"; // 앞에 .. 망할 c##을 붙여줘야 함 ㅠㅠ
String login_pw = "1234";
// 권한을 부여해도,, SYNONYM을 주어도 테이블이 보이지 않는다 함..
/* String sql = "SELECT * FROM NOTICE WHERE ID=?";
String sql = "SELECT * FROM NOTICE WHERE ID="+id; */
String sql = "SELECT * FROM NOTICE WHERE ID=?";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection(url, login_id, login_pw);
System.out.println(con.isClosed() ? "접속 종료" : "접속 중");
// 쿼리문을 미리 준비한다.
PreparedStatement st = con.prepareStatement(sql);
// 1번째 물음표에 id를 꽂아 넣겟다
st.setInt(1, id);
ResultSet rs = st.executeQuery();
rs.next();
String title = rs.getString("TITLE");
Date regdate = rs.getDate("REGDATE");
String writerId = rs.getString("WRTIER_ID");
int hit = rs.getInt("HIT");
String files = rs.getString("FILES");
String content = rs.getString("CONTENT");
// request는 저장소로도 사용 가능해
request.setAttribute("title", title);
request.setAttribute("regdate", regdate);
request.setAttribute("writerId", writerId);
request.setAttribute("hit", hit);
request.setAttribute("files", files);
request.setAttribute("content", content);
rs.close();
st.close();
con.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
// redirect
// forward
request
.getRequestDispatcher("/notice/detail.jsp")
.forward(request, response);
}
}
detail.jsp
<!-- point -->
<div class="margin-top first">
<h3 class="hidden">공지사항 내용</h3>
<table class="table">
<tbody>
<tr>
<th>제목</th>
<td class="text-align-left text-indent text-strong text-orange" colspan="3">
<%= request.getAttribute("title") %>
</td>
</tr>
<tr>
<th>작성일</th>
<td class="text-align-left text-indent" colspan="3">
<%= request.getAttribute("regdate") %>
</td>
</tr>
<tr>
<th>작성자</th>
<td>
<%= request.getAttribute("writerId") %>
</td>
<th>조회수</th>
<td>
<%= request.getAttribute("hit") %>
</td>
</tr>
<tr>
<th>첨부파일</th>
<td colspan="3">
<%= request.getAttribute("files") %>
</td>
</tr>
<tr class="content">
<td colspan="4">
<%= request.getAttribute("content") %>
</td>
</tr>
</tbody>
</table>
</div>
강의 56 - Model 데이터를 구조화하기
el 태그 규칙
getId가 있으면 ${notice.id}는
그것에 맞게 네이밍을 수정하여 꺼내줌. get을 제거하여 I는 소문자로...
entity 생성 및 EL 태그 만들기
소스 우클릭하여 get, set 생성
public class Notice {
private String title;
private Date regdate;
private String writerId;
private int hit;
private String files;
private String content;
public Notice() {
// TODO Auto-generated constructor stub
}
public Notice(String title, Date regdate, String writerId, int hit,
String files, String content) {
this.title = title;
this.regdate = regdate;
this.writerId = writerId;
this.hit = hit;
this.files = files;
this.content = content;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Date getRegdate() {
return regdate;
}
public void setRegdate(Date regdate) {
this.regdate = regdate;
}
public String getWriterId() {
return writerId;
}
public void setWriterId(String writerId) {
this.writerId = writerId;
}
public int getHit() {
return hit;
}
public void setHit(int hit) {
this.hit = hit;
}
public String getFiles() {
return files;
}
public void setFiles(String files) {
this.files = files;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
@Override
public String toString() {
return "Notice [title=" + title + ", regdate=" + regdate + ", writerId="
+ writerId + ", hit=" + hit + ", files=" + files + ", content="
+ content + "]";
}
}
request.getAttribute("title") 요런거 ${n.title} 로 바꾸기..
강의 57 - 목록 페이지도 MVC model2로 수정하기
이왕이면 스터디의 saffy Lee의 dbUtil도 활용해보자!!
강의 58 - View 페이지 은닉하기
list.jsp와 같이 사용자가 직접적으로 jsp파일에 접근할 수 있는데, 이렇게 되면
컨트롤러를 거치지 않기 때문에 요청 데이터를 볼 수 없다.
따라서 이 페이지를 은닉할 필요가 있는데,
이것을 WEB-INF 폴더에 넣도록 하자!
강의 59 - View(list.jsp)에서 반복문 제거하기
jsp 내의 모든 자바 코드를 없애서 스파게티 소스를 없애자
강의 60 - Tag 라이브러리와 JSTL
'Back-end > 기타 (BE)' 카테고리의 다른 글
스프링 배치 getting start (0) | 2021.03.25 |
---|---|
뉴렉쳐 Servlet & JSP [61 ~ 70강] (0) | 2020.11.01 |
뉴렉쳐 Servlet & JSP [41 ~ 50강] (0) | 2020.10.03 |
뉴렉쳐 Servlet & JSP [11~20강] (0) | 2020.10.03 |
뉴렉쳐 Servlet & JSP [31 ~ 40강] (2) | 2020.10.03 |
hi hello... World >< 가장 아름다운 하나의 해답이 존재한다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!