반응형

이번에는 게시판에 적힌 글을 조회하는 포스팅을 하도록 하겠습니다.

 

우선 reviewVo에 조회할 때 필요한 조회 종류를 추가해주도록 하겠습니다.

 

reviweVo.java

조회 기능까지 추가된 후의 reviewVo.java

package com.example.mall.domain;


public class reviewVo {

	/*
	 CREATE TABLE reviewTable (
	reNum INT AUTO_INCREMENT PRIMARY key,
	reTitle VARCHAR(20) NOT null,
	reContent text not null,
	reUser VARCHAR(20) NOT null,
	reregisterDate DATE DEFAULT NOW(),
	reCnt INT DEFAULT 0 # 조회수
	
	  
	 */
	
	private int reNum;
	private String reTitle;
	private String reContent;
	private String reUser;
	private String reregisterDate;
	private int reCnt;
	
	private String searchName, searchValue; // 이름별 검색, 제목별 검색
	public String getSearchName() {
		return searchName;
	}
	public void setSearchName(String searchName) {
		this.searchName = searchName;
	}
	public String getSearchValue() {
		return searchValue;
	}
	public void setSearchValue(String searchValue) {
		this.searchValue = searchValue;
	}
	public int getReNum() {
		return reNum;
	}
	public void setReNum(int reNum) {
		this.reNum = reNum;
	}
	public String getReTitle() {
		return reTitle;
	}
	public void setReTitle(String reTitle) {
		this.reTitle = reTitle;
	}
	
	public String getReContent() {
		return reContent;
	}
	public void setReContent(String reContent) {
		this.reContent = reContent;
	}
	public String getReUser() {
		return reUser;
	}
	public void setReUser(String reUser) {
		this.reUser = reUser;
	}
	public String getReregisterDate() {
		return reregisterDate;
	}
	public void setReregisterDate(String reregisterDate) {
		this.reregisterDate = reregisterDate;
	}
	public int getReCnt() {
		return reCnt;
	}
	public void setReCnt(int reCnt) {
		this.reCnt = reCnt;
	}
	
}

reviewMapper.xml

<!-- 게시글 검색하기 -->
	<select id="selectsearch" resultType="reviewVo">
		select * from reviewTable where ${searchName} like concat('%',#{searchValue},'%') <!-- #은 데이터값 -->
	</select>

 

reviewmapper.java

// 게시글 검색하기
	public List<reviewVo> selectsearch(reviewVo reviewvo) throws Exception;

 

reviewService.java

	// 게시글 제목 또는 작성자로 검색하기
	public List<reviewVo> selectsearch(reviewVo reviewvo) throws Exception {
		return reviewmapper.selectsearch(reviewvo);
	}

 

view에 검색할 수 있는 form 양식 작성

 

list.jsp 

기능 검색 추가된 list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
게시글 불러오기 
<br>
<table border="2">
<tr>
	<th>글번호</th><th>제목</th><th>내용</th><th>작성자</th><th>등록일</th><th>조회수</th>
</tr>
<c:forEach var="item" items="${relist}">
<tr>
<td>${item.reNum}</td>
<td><a href="detailreview?reNum=${item.reNum}">${item.reTitle}</a></td>
<td>${item.reContent}</td>
<td>${item.reUser}</td>
<td>${item.reregisterDate}</td>
<td>${item.reCnt}</td>
</c:forEach>
</table>
<a href="write">글쓰기</a>
<form action="search">
<table>
<tr>
<td><select name="searchName">
		<option value="reUser">작성자</option>
		<option value="reTitle">글제목</option>
		</select></td>
	<td colspan="2">
	<input type="text" name="searchValue">
	</td>
	<td>
	<input type="submit" value="검색">
	</td>
</tr>	
</table>
</form>
</body>
</html>

 

결과창

 

작성자 '롤'이 들어가는 글자로 검색해보겠습니다.

 

반응형
반응형

1. 우선 STS를 설치하였다는 전제하에 글을 작성하고있습니다.

 

다음과 같이 실행되는 장면을 볼 수 있습니다.

 

 

자 다음과 같이 어디에 설치 할지 경로를 잡아 주도록 합니다.

 

 

 

2. [File] > [New] > [Spring Starter Project]

 

3. 설정 화면 필요한 것들을 넣어주도록 한다.

 

 

4. 실행 해주도록 합니다.

 

 

 

위와 같은 에러가 나타났습니다. 해당 오류는 Gradle 프로젝트 생성 후 DB 관련 dependencies를 설정하지 않아서 뜨는 오류입니다.

 

해결 방법: 

 

build.gradle 파일에 아래와 같은 내용을 추가해줍니다.

그리고, /src/main/resources/application.properties 안에 다음과 같은 DB 정보를 입력해주도록 합니다.

 

이후에 다시 실행해주면 성공하는 코드가 나타나야 합니다 !

 

 

5. 이제 jsp 파일을 생성해서 실행해보도록 하겠습니다.

 

아래와 같이 없는 디렉토리들을 생성해준 후 views 디렉토리 아래 테스트해볼 jsp파일을 생성해주고 안에 내용은 자신의 기호에 맞게 작성해주도록 합니다.

 

저는 아래와 같이 만들어 주었습니다.

 

<spring.jsp>

 

그 다음으로 controller 파일을 생성해주도록 하겠습니다.

 

* 중간에 디자인이 바뀐점은 제가 테마를 바꿔서 그렇습니다.

 

<testcontroller.java>

 

6. /src/main/resources/application.properties 에 다시 아래와 같은 내용을 추가 해줍니다.

 

 

이렇게 하고 실행이 되어야하는데 이러한 에러와 로그가 발생합니다.

 

해결 방법 :

 

build.gradle  dependencies 안에 내용을 추가해줍니다.

제가 공부하고자 포스팅하지만 혹시나 검색 도중 필요하신 분이 계시다면 복사 붙여넣기가 가능하실 수 있게 스크린샷이 아닌 코드블럭으로 작성하겠습니다.

	compile('org.apache.tomcat.embed:tomcat-embed-jasper')
	compile('javax.servlet:jstl:1.2')

* 주의 * 작성하신 후 해당 프로젝트 우클릭 [Gradle] -> [Refresh Gradle Project] 해주셔야합니다.

 

 

위와 같이 자신이 views 안에 만든 .jsp 파일이 정상적으로 실행되면 성공한 것입니다.

반응형
반응형

JSP 자바빈즈는 하나의 jsp 페이지에 사용되는 것이 아닌 여러 jsp페이지에서 호출하여 사용 가능합니다. 다른 자바 클래스와 마찬가지로 자바 객체입니다.

 

빈 쓰는 이유는 다음과 같습니다.

- jsp가 뷰를 위한 아이이기 때문에 비즈니스 모델을 빼기 위함

 

beans 호출 형태

<jsp:useBean id="아이디" class="자바 빈즈 객체의 실제 클래스명을 패키지명 포함하여 작성" scope="page" />

 

breans를 이용하여 구구단을 출력해보겠습니다.

 

HTML

1
2
3
4
5
6
7
8
<body>
beans를 이용한 구구단 출력<br>
<form action="j8beans.jsp" method="post">
몇단?
<input type="text" name="dan" value="2">
<input type="submit">
</form>
</body>
 

 

JSP

 

1
2
3
4
5
6
7
8
9
10
11
12
13
<body>
    <hr>
    ** Beans로 구구단 출력 **
    <br>
    <jsp:useBean id="gugu" class="pack.j8gugudan" scope="page" />
    <!-- 경로 풀로 다 적어줘야함 -->
    <%
        int re2[] = gugudan.computeGugu(dan);
        for (int a = 0; a < 9; a++) {
            out.println(dan + " * " + (a + 1+ " = " + re2[a] + "&nbsp;&nbsp;");
        }
    %>
</body>
 

 

JAVA

컨트롤러 안에 있는 패키지 pack 안에 있는 j8gugudan.java입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package pack;
 
public class j8gugudan {
    public static j8gugudan gugudan = new j8gugudan();
    public static j8gugudan getInstance() {
        return gugudan;
    }
    
    public j8gugudan() {
        
    }
    
    public int[] computeGugu(int dan) {
        int gu[] = new int[9];
        
        for(int i = 1; i < 10; i++) {
            gu[i - 1= dan * i;
        }
        
        return gu;
    }
}
 
 

 

 

출력 결과

 

반응형

'JSP·Servlet' 카테고리의 다른 글

JSP 내장 객체  (0) 2020.05.03
JSP 에서 사용하는 태그  (0) 2020.05.03
JSP란 ?  (0) 2020.05.03
반응형

- 내장 객체란?

JSP 파일이 자바 소스 파일로 변환될때 _jspServiece 메소드 내에 자동으로 선언 및 초기화하는 변수를 뜻합니다.

 

- request, response

 

request = HttpServeletRequest 타입으로 요청 정보 처리

response = HttpServletResponse 타입으로 응답 정보 처리

 

예제 )

 

html

1
2
3
4
5
6
7
<body>
<br>
<form action="irum.go" method="post">
자료 입력 : <input type="text" name="data">
<input type="submit">
</form>
</body>
 

 

jsp

1
2
3
4
5
6
7
8
9
<body>
<br>
<%
request.setCharacterEncoding("utf-8");
 String data = request.getParameter("data");
 
%>
<%=data %>
</body>
 

 

출력 결과

 

 

- Session

 

session은 javax.servlet.http.HttpSession의 내장 객체로 클라이언트마다 하나씩 생성, 정보 유지시 사용합니다.

 

ex ) 

 

HTML

1
2
3
4
5
6
7
8
<body>
* 자료 입력 *
<br>
<form action="j6session2.jsp" method="post">
id : <input type="text" name="id"><p/>
<input type="submit" value="로그인">
</form>
</body>
 

 

JSP1

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
session.setAttribute("idkey", id);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>세션 연습 중</h2>
<form action="j6session2.jsp" method="post">
 
<input type="submit" value="결과보기">
 
</form>
</body>
 

 

jsp2

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>선택 결과 보기</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String id = (String)session.getAttribute("idkey");
if(id != null) {
%>
<%=id %> 님입니다.<br><br>
세션 아이디 : <%=session.getId() %> <br><br>
<%
else {
    out.println("이미 연결 되어있습니");
}
%>
</body>
</html>
 

 

Html 에서의 name ="id"는 jsp1의 3번째 줄로 가서 4번째쭐의 session.Attrivute "idKey"에 저장됩니다. 그 후 결과 보기를 다시 눌러주면 jsp2의 12번째줄로 넘어갑니다.

이후 15번째 줄에 html에서 읿력한 id 값이 출력 됩니다.

 

출력 결과는 다음과 같습니다.

 

 

반응형

'JSP·Servlet' 카테고리의 다른 글

JSP Beans  (0) 2020.05.03
JSP 에서 사용하는 태그  (0) 2020.05.03
JSP란 ?  (0) 2020.05.03
반응형

- 주석

 

JSP 에서는 JSP HTML 자바를 주로 사용합니다.

JSP <%-- 내용 --%>
HTML <!-- 내용 -->
자바 주석

한 줄의 경우 //

여러 줄의 경우 /* 내용 */

 

- 지시자

지시자는 JSP 컨테니어가 JSP 페이지를 파싱하여 자바 소스로 변환시 필요 정보를 알려주기 위함

 

<%@ 지시자 속성 = 값 %> 으로 사용할 수 있습니다.

 

지시자 종류 : page, include, taglib

 

- 스크립트

스크립트는 jsp 페이지가 요청될 때마다 수행되어야 하는 자바 코드를 추가할때 사용

<% 실행문 %> 으로 사용합니다.

 

아래와 같이 사용 가능합니다 !

1
2
3
4
5
6
7
8
9
10
11
12
13
<body>
    <h2>jsp 출발</h2>
    <%
        for (int i = 1; i < 7; i++) {
            out.print("<h" + i + ">");
            out.print("jsp");
            out.print("</h" + i + ">");
        }
        out.println("<br>출력 자료");
    %>
    <br>
</body>
 

 

위 소스의 출력 결과는 다음과 같습니다.

 

 

* JSP의 변수를 JS에 전달하는 방법은 다음과 같습니다.

<% String Name = "Hong"; %>

 

<script>

var Name = "<%=Name%>";

</script>

 

하지만 ! 반대로 JS 변수를 JSP로 넘겨주지는 못합니다 !

- 선언문

<%! 변수 %> 또는 <%! 메소드 %> 으로 사용합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<body>
    <%! 
        // <%!는 클래스의 멤버필드로 전역변수로 사용
        String tel = "02-111-1111";
    %>
    
    
    <%! // !붙이면 메소드의 멤버변수가 아니라 클래스의 멤버변수
    public int add(int m, int n) {
        return m+n;
    }
    %>
</body>
 
 

 

반응형

'JSP·Servlet' 카테고리의 다른 글

JSP Beans  (0) 2020.05.03
JSP 내장 객체  (0) 2020.05.03
JSP란 ?  (0) 2020.05.03
반응형

JSP란?

 

JavaServer Pages의 줄임말로 동적인 웹 콘텐츠를 생성하기 위한 웹 APP 개발 도구.

 

- jsp는 프로그램적 명령문만 컨테이너가 해석하고, HTML 관련 태그는 그대로 출력되기 때문에 별도의 과정을 거치지 않아도 무방합니다.

 

- jsp는 동적인 데이터를 끼워 넣는 것이 가능합니다.

 

ex ) 제가 공부했던 내용의 일부를 가져왔습니다.

 

1
2
3
4
5
6
7
<body>
<br>
<%
String data = (String)request.getAttribute("key");
%>
</body>
 
 

 

이와 같이 내장 객체 request를 이용하여 동적인 데이터 추가가 가능합니다. 

 

JSP의 장점

 

- 역할 분리가 가능합니다. 서버와 작용하는 컴포넌트를 담당하는 역할과, 정적인 데이터와 동적 데이터를 섞어 웹을 만드는 역할로 나누어질 수 있습니다.

 

- bean 컴포넌트와 태그 라이브러리에 기반을 두고 재사용성을 강조하여 효율적으로 작업을 하게 도와줍니다.

 

JSP의 동작 원리

 

 

반응형

'JSP·Servlet' 카테고리의 다른 글

JSP Beans  (0) 2020.05.03
JSP 내장 객체  (0) 2020.05.03
JSP 에서 사용하는 태그  (0) 2020.05.03

+ Recent posts