mysql-memo에 연습버전도 잇음
👀 초반 설명
java => jquery + javascript => mysql => servlert => jsp
⚡ MVC :
java -> Servlet + Class -> jsp
Servelt : Controller (통신 언어를 받음)
Class : Module (순수 java)
Jsp : View (html,css,jquery 등 여러가지 담당)
=> 각 해당 역할이 아닌 다른 역할을 작성할시 👎
view ↔ Controller ↔ Module
꼭 거쳐야만 전달 가능
참고 : https://dev-eunse.tistory.com/110
⚡ dababase
RDBMS : mysql,mssql..등
DBMS : nosql 등
=> database 연결 시 라이브러리가 있어야 연결 가능 ( maven repository : 공식사이트 )
connector/J : 구버전(버전 특성 좀 탐, 보안 ↓ , ftp라고 생각하면됨 - 디폴트) - 더많이씀 (mysql-connector-j-8.4.0)
connector Java : 버전 특성을 잘 안탐(보안 ↑ , sftp라고 생각하면됨 )
pom : spring 과 사용
jar : servlet과 사용
**
port번호
mysql,mariadb : 3306
mssql : 1433
oracle : 9001~9009 (따로 지정하지 않으면 Port 번호는 1521 - 거의 이렇게 사용 x)
**
404 : .do 경로오류 or .jsp 로드오류
500 : Module 오류 (java 문법오류)
403 : controller 오류 (servlet)
402 : loop 발생하여 서버가 정지
참고 : https://dev-eunse.tistory.com/114
🔽 예제 - 짝꿍 databae에 접속해보기 알아만 두기
⚡ module ( database 접속 환경설정 파일 )
모듈은 여러개 가능(필요한 모듈만 불러서 작동)
database 드라이브 연결 속성 - 외울필요x 다 나와잇음
String db_driver = "com.mysql.cj.jdbc.Driver"; - 라이브러리가 java일경우
String db_driver = "com.mysql.jdbc.Driver"; - 라이브러리가 j일 경우
..등
jdbc : java database connect 의 약자
- dbconfig.java ( module 파트 )
public Connection info() throws Exception { //database 드라이브 연결 속성 String db_driver = "com.mysql.jdbc.Driver"; // connector/J //내부 : localhost , 외부 : ip또는 도메인명을 이용하여 접속 String db_url = "jdbc:mysql://172.30.1.28:3306/cms"; String db_user = "hana"; //사용자 id String db_pass = "hana1234"; //사용자 pw Class.forName(db_driver); //어떤 라이브러리를 이용하여 db에 접속할것인가 //-u 아이디 -p Connection dbcon = DriverManager.getConnection(db_url,db_user,db_pass); return dbcon; //dbcon을 return }
testcms.java ( controller 파트 - servlert 파일 )public class testcms extends HttpServlet { private static final long serialVersionUID = 1L; //controller part dbconfig db = new dbconfig(); //해당 module class load PrintWriter pw = null; //jsp에 alert을 띄우거나.. 등 Connection con = null; //mysql 접속 승인 및 DML,DDL,DCL 사용하기 위함 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { this.con = db.info(); System.out.println("database 접속 성공!"); //table 자동생성 제작 - 해당 변수에 담긴 table명으로 찍어냄 String tables = "notice_se"; //preparedstatement 이라면 "create table ?" 가능 String sql = "create table " + tables +"(" + "nidx int(5) not null auto_increment," + "mid varchar(30) not null," + "primary key(nidx)" + ")"; Statement st = this.con.createStatement(); //선언만 함 boolean result = st.execute(sql); //insert시에는 해당 문법 사용 //String sql = "insert into "+tables+" values('0','hong12345')"; //PreparedStatement st = this.con.prepareStatement(sql); //int로 받음 //int result = st.executeUpdate(); //if(result > 0) { //System.out.println("정상적으로 insert 실행되었습니다"); //} }catch(SQLSyntaxErrorException se) { System.out.println("중복table 발생 및 SQL문법오류 발생!"); }catch(Exception e) { System.out.println(e); System.out.println("database 접속 오류!"); }finally { try { this.con.close(); //database 접속 해제(필수) }catch(Exception e) { System.out.println("databae를 정상적으로 종료하지 못하였습니다"); } } } }
👀 해당 예제 부가설명
⚡ statement : Connection으로 연결한 객체에게, Query 작업을 실행하기 위한 객체.
//이게 있어야 sql 작동시킬수 잇음
statement (부모) : SQL문을 실행할 때마다 매번 구문을 새로 해석해서 적용
preparedstatement : 캐시 메모리를 이용하여 보다 빠르게 구문을 작동시킴 / 바인딩 변수를 사용가능
- 여러번 만들때 (select,insert,delete,update.. 등)
createstatement : 캐시메모리는 이용은 하나 바인딩변수 불가능, 메모리를 많이 잡아먹음
- 딱 한번만 만들때 (create ,drop,alter...등)
*바인딩변수란 => ?변수
System.out.println("환영합니다" + 변수 + "님");
System.out.println("환영합니다 ?님",변수); - 얘가 바인딩 변수
⚡ excute - Query작업 실행
- excute() : create,drop,alter시(false뜸) 사용 => boolean으로 받음
create,drop,alter,insert,update,delete 시(true뜸), select 시 (true)
=> 해결방법 : preparedstatement 이걸로 받기
- excuteQuery() : select시 사용
=> ResultSet으로 받아야함 : select문에서만 사용하는 라이브러리
=> https://dev-eunse.tistory.com/150 의 로그인 예제에 사용
- excuteUpdate() : insert,update,delete 시 사용 => int or Integer로 받음
excute의 단점 : boolean으로 받을 시 완벽 반환 어려움 == 사용시 error (인식을 잘 못함)//요런거 다 사용 x boolean result = st.execute(sql); if(result == true) { //false뜸 - 정상적으로 작동되어도 해당 if문 실행안됨 System.out.println("정상적으로 table이 생성되었습니다"); }
'CLASS > SERVLET' 카테고리의 다른 글
#6-2 / session,cookie - session 입력,출력,삭제 여깃음 (0) | 2024.06.18 |
---|---|
#6-1 / 간편 회원가입⭐ (0) | 2024.06.18 |
#4-2 / 동의 체크박스 Map 배열로 받기 (0) | 2024.05.31 |
#4-1 / html에서 java class로 값 전달,로그인 예제 (0) | 2024.05.31 |
#3-3 / html-> html 값 전달 (0) | 2024.05.30 |