도서검색

하이·2023년 2월 9일
0

수업

목록 보기
24/41
post-custom-banner
  1. 프로젝트 생성
  • maven으로 변경
  • pom.xml에 필요한 <dependencies></dependencies> 추가
    : tomcat9 servlet/mysql/mybatis
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.test</groupId>
  <artifactId>bsearch</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <dependencies>
		<!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-servlet-api -->
		<dependency>
			<groupId>org.apache.tomcat</groupId>
			<artifactId>tomcat-servlet-api</artifactId>
			<version>9.0.71</version>
		</dependency>
		<!-- mybatis -->
		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.5.11</version>
		</dependency>

		<!-- mySql -->
		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
		    <groupId>mysql</groupId>
		    <artifactId>mysql-connector-java</artifactId>
		    <version>8.0.28</version>
		</dependency>


	</dependencies>
  
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.3</version>
      </plugin>
    </plugins>
  </build>
</project>
  1. html 작성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>도서 검색 키워드</h1>
	
	<!--form은 거의 post를 사용함 -->
	<form action="bookSearch" method="post">
		도서명 키워드 : <input type ="text" name="keyword">
		<br><br>
		<input type="radio" name="price" value="10000">10,0000원 미만<br>
		<input type="radio" name="price" value="20000">20,0000원 미만<br>
		<input type="radio" name="price" value="30000">30,0000원 미만<br>
		<input type="radio" name="price" value="40000">40,0000원 미만<br>
		<br><br>
		<button type="submit">도서 검색!</button>
	</form>
	
</body>
</html>
  1. servlet 작성
// 한글 처리
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		
		// 1. 입력 받기
		String keyword = request.getParameter("keyword"); 
		String price = request.getParameter("price");
  1. VO
package vo;

public class BookVO {

	private String btitle;
	private String bprice;
	
	private String bisbn;
	private String bauthor;
	
	
	
	
	public BookVO(String btitle, String bprice, String bisbn, String bauthor) {
		super();
		this.btitle = btitle;
		this.bprice = bprice;
		this.bisbn = bisbn;
		this.bauthor = bauthor;
	}


//	public BookVO(String btitle, String bprice) {
//		super();
//		this.btitle = btitle;
//		this.bprice = bprice;
//	}


	public String getBisbn() {
		return bisbn;
	}


	public void setBisbn(String bisbn) {
		this.bisbn = bisbn;
	}


	public String getBauthor() {
		return bauthor;
	}


	public void setBauthor(String bauthor) {
		this.bauthor = bauthor;
	}


	public BookVO() {
	}


	public String getBtitle() {
		return btitle;
	}


	public void setBtitle(String btitle) {
		this.btitle = btitle;
	}


	public String getBprice() {
		return bprice;
	}


	public void setBprice(String bprice) {
		this.bprice = bprice;
	}

}
  1. mybatis
package mybatis;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;


public class MyBatisConnectionFactory {

	private static SqlSessionFactory sqlSessionFactory;
	
	static {
		String resource = "./SqlMapConfig.xml"; 	//이 파일을 가져다가 reader를 뽑고
		try {
			Reader reader = Resources.getResourceAsReader(resource);
			
			if(sqlSessionFactory == null) {
				// 하나만 만들도록 하는 꺼에요!
				sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //빌더를 통해 reader를 가져감
				// 빌더 만들기 ! builder를 통해 factory 만들기
				// 이때 설정정보 넣어줘야되요~~(reader부분)
			} 
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	// private static SqlSessionFactory sqlSessionFactory;가
	// private 이라서 getter 생성
	public static SqlSessionFactory getSqlSessionFactory() {
		return sqlSessionFactory;		
	} 
	
}
  • sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration 
			PUBLIC "-//mybatis.org/DTD Config 3.0//EN" 
			"http://mybatis.org/dtd/mybatis-3-config.dtd" >
<configuration>

	<!-- property는 하나만 설정할거에요
		외부파일을 이용해서 데이터베이스 접속정보를 가져올 거에요
		외부파일을 하나 만들 거고 => driver.properties 파일을 만들거에요 -->
	<properties resource="./driver.properties" />



	<!-- MyBatis에 대한 기본 세팅정보가 나옴
		 MyBatis가 동작하는 기본적인 방식에 대한 세팅정보가 있음 -->
	<settings>
		<setting name="jdbcTypeForNull" value="NULL" />
		<!-- Data가 없을 경우 Null로 처리할 거에요 -->
	</settings>


	<!-- 별명지정하는게 나옴. 타이핑을 줄이기 위해 사용함. xml코드 내에서 사용 -->
	<typeAliases>
		<typeAlias type="vo.BookVO" alias="Book" />
	</typeAliases>

	<!-- DB 연결 정보 선언 -->
	<!-- <environments default="development"> -->
	<environments default="development">
		<!-- 개발하기 위한 연결정보 -->
		<environment id="development">
		
			<!-- 연결 환경에 대한 세부사항이 나오면 됨 -->
			<transactionManager type="JDBC">
				<!-- type="JDBC"이면, 수동으로 transaction을 처리 지금 우리가 하고 있는 방식임. commit(), 
					rollback() 명령어를 직접 처리하는 방식 type="MANAGED" 이면, 자동으로 transaciton을 관리 Container가 
					transaction을 관리함 -->
			</transactionManager>

			<dataSource type="POOLED">
				<!-- Connection Pool을 사용할지 말지를 결정. 일반적으로 POOLED를 명시해서 connection pool을 
					사용! -->
				<!-- 실제 데이터베이스 연결정보가 들어감 -->
				<!-- $와 #의 차이점? -->
				<property name="driver" value="${driver}" />
				<property name="url" value="${url}" />
				<property name="username" value="${user}" />
				<property name="password" value="${password}" />

				<!-- 데이터베이스 connection pool에 대한 설정이 나올 수 있음 -->

			</dataSource>
		</environment>

	</environments>


	<!-- mapping된 SQL구문이 있는 XML 파일에 대한 설정 -->
	<mappers>
		<mapper resource="./sqlmap/Book.xml" />
	</mappers>


	<!-- 운영하기 위한 연결정보 <environment id="operation"> </environment> <environment 
		id="test"> </environment> -->

	<!-- </environments> -->
</configuration>
  • driver.properties
driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://127.0.0.1:3306/library?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true
user = root
password = test1234
  • resource 폴더 - sqlmap 폴더 생성

(7. DAO - MVC 할 때)

profile
기록의 즐거움 😆💻
post-custom-banner

0개의 댓글