일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- #
- Java#컴파일러#자바컴파일러#
- tibero#티베로#이중화#failvover
- Java#java#메모리영역#클래스로더#가비지컬렉터
- 국비지원자바#국비교육자바#국비지원java#국비교육java#자바스크립트#프론트엔드
- spring#Spring#RequestBody#ResponseBody
- Java#java#자바#다오#디티오#브이오#dao#dto#vo
- 국비지원#국비교육
- 개발자도서#개발자책#도메인#DDD#도메인주도개발시작하기#개발스터디#
- 국비지원JAVA#국비교육JAVA#국비지원자바#국비교육자바#JSP#SERVLET#서블릿#
- Spring#spring#스프링#스프링프레임워크#스프링의존성주입#스프링생성자#스프링기본#국비지원#국비교육#국비지원스프링
- Java#JAVA#매개변수
- html#HTML#프론트엔드#개발자#코딩#국비지원#국비교육#국비지원프론트엔드#국비지원HTML#국비지원html#국비프론트엔드
- 항해플러스#항해#항해플러스3기#회고
- 자바#Java#배열예시#연습#기초다지기
- Java#정처기#비트연산자#정보처리기사
- #java#JAVA#프로그래밍#웹개발자
- IntelliJ#인텔리제이#인텔리#단축키
- db#데이터베이스#오라클#sql
- 국비지원JAVA#국비지원자바#프로그랭#JSP#국비지원JSP#국비교육JSP#웹개발자#코딩
- java
- 국비지원#국비교육#국비지원자바#국비교육자바#css#HTML#JAVA
- 국비지원JAVA
- 항해99 #항해플러스 #주니어개발자 #주니어개발자역량강화 #주니어개발자멘토링 #개발자사이드프로젝트 #코딩부트캠프 #코딩부트캠프후기
- 자바
- Spring#spring#스프링#스프링프레임워크#스프링자동주입#스프링생성자#스프링기본#국비지원#국비교육#국비지원스프링
- 쿼리스트링#쿼리문자열#바인딩
- Resource #
- 프로그래밍
- 개발자#it도서#도메인#DDD#ddd
- Today
- Total
개린이 개발노트
국비지원 JAVA(자바) 프로그래밍 (JSP,Bundle,WebServer,WAS,서블릿,필터,JDBC) 본문
국비지원 JAVA(자바) 프로그래밍 (JSP,Bundle,WebServer,WAS,서블릿,필터,JDBC)
개린이9999 2023. 1. 27. 21:54
위의 회원 가입 페이지에서 한국어를 누르면 한국어로된 회원가입 페이지,
english를 누르면 영어로된 회원가입 페이지가 나오도록 만들어보기(아래와 같이)
한글 번들 프로퍼티즈
title = 회원가입 페이지
name = 이름
id = 아이디
pw = 비밀번호
list1 = 자바
list2 = 자바스크립트
list3 = 제이에스피
male = 남
female = 여
btn = 회원가입
영어 번들 프로퍼티즈
title = Sign up Page
name = name
id = ID
pw = Password
list1 = Java
list2 = JavaScript
list3 = JSP
male = male
female = female
btn = Sign up
JSP
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<fmt:setLocale value='<%=request.getParameter("lang")%>'/>
<fmt:bundle basename="bundle.signupBundle">
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!-- CSS only -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
</head>
<body>
<div class="alert alert-secondary fs-3" role="alert">
<fmt:message key="title"/>
</div>
<div class="container mt-3">
<div class="text-end">
<a class="btn btn-primary me-md-2" href="?lang=ko">한국어</a>
<a class="btn btn-primary" href="?lang=en">English</a>
</div>
<form>
<div class="mb-3">
<label for="name" class="form-label">
<fmt:message key="name"/>
</label>
<input type="text" class="form-control" id="name">
</div>
<div class="mb-3">
<label for="id" class="form-label">
<fmt:message key="id"/>
</label>
<input type="text" class="form-control" id="id">
</div>
<div class="mb-3">
<label for="pw" class="form-label">
<fmt:message key="pw"/>
</label>
<input type="password" class="form-control" id="pw">
</div>
<div class="mb-3">
<select class="form-select">
<option value="1">
<fmt:message key="list1"/>
</option>
<option value="2">
<fmt:message key="list2"/>
</option>
<option value="3">
<fmt:message key="list3"/>
</option>
</select>
</div>
<div class="mb-3">
<input type="radio" name="gender" value="male">
<fmt:message key="male"/>
<input type="radio" name="gender" value="female">
<fmt:message key="female"/>
</div>
<button type="submit" class="btn btn-primary"><fmt:message key="btn"/> </button>
</form>
</div>
</body>
</html>
</fmt:bundle>
단순히 2번페이지로 이동요청할 때
↓ 이렇게 이동됨
그러나 단순 이동이 아닌 입력한 이름과 아이디를 포함해서 2번페이지로 보내주세요 라고 할때
=> URL:~~~/2번페이지.jsp?이름=xxx&아이디=xxx (쿼리스트링 이용)
-> 2번페이지에서는 이름과 아이디를 사용가능
쿼리스트링 이용 ↓
자바코드 이용해서 내용 출력하기 ↓
Web Server
Web Server의 개념
웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html .jpeg .css 등)를 제공하는 컴퓨터 프로그램
WAS(Web Server Apprication의 개념)
DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server
“웹 컨테이너(Web Container)” 혹은 “서블릿 컨테이너(Servlet Container)”라고도 불린다.
WAS = Web Server + Web Container
서블릿 필터
한글화 필터 한번만 이용하면 모든 JSP에 한글안깨져서 나옴!!!
패키지 만들고 클래스 만든 다음 인터페이스 추가
인터페이스는 필터 자바 서블릿
잘 안나올 때는
package com.study.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class TestFilter implements Filter {
@Override
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
// TODO Auto-generated method stub
}
}
필터쓰는 방법
1. 어노테이션으로 지정
2. web.xml의 환경설정을 바꿔서
클라이언트가 signup.jsp 이것좀 나한테 보내주세요
필터를 껴넣음
-> 서버가 오케이하고 signup.jsp 클라이언트에게 응답
어노테이션 방식
한글화 필터
package com.study.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
@WebFilter("/*")
public class TestFilter implements Filter {
@Override
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
chain.doFilter(request, response);
}
}
web.xml 생성하기
다이나믹 프로젝트 만들 때 처음부터 이렇게 만들어도 xml 만들어짐 ↓
web.xml 방식
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
<display-name>0127</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 필터 생성태그 -->
<filter>
<filter-name>testFilter</filter-name>
<filter-class>com.study.filter.TestFilter</filter-class>
</filter>
<!-- 생성된 필터를 어디에서 사용할건지 경로설정해주는 태그 -->
<filter-mapping>
<filter-name>testFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
JDBC
create user study identified by 1234;
grant connect, resource to study;
CREATE TABLE MEMBER(
NAME VARCHAR2(20),
USERID VARCHAR2(20) PRIMARY KEY,
PW VARCHAR2(20),
EMAIL VARCHAR2(40),
PHONE VARCHAR2(13),
ADMIN NUMBER(1) DEFAULT 0
);
INSERT INTO member VALUES('고길동', 'GOROAD', 1234, 'GOGORO@NAVER.COM', '010-1234-1234', 0);
INSERT INTO member VALUES('둘리', 'akama', 9876, 'akdong@NAVER.COM', '010-9876-9876', 1);
INSERT INTO member VALUES('티모', 'teemo', 5678, 'onlytop@google.com', '010-1212-3434', 0);
select * from member;
commit;
C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib
JDBC
jdbc드라이버 로드-> 데이터베이스연결->sql문 실행 ->db연결 끊음
(자바에서 예외처리 강요해서 try catch와 사용)
DriverManager-> Connection -> Statement -> Result
ojdbc6.jar -> 자바랑 DB 연결시 필요한 API
Class.forName("oracle.jdbc.driver.OracleDriver");
DB에 연결
Connection 인터페이스
Connection conn = new Connection(); -> new 생성자 안됨!
Connection conn = DriverManager.getConnection(url,id,pw);
위처럼하면 Connection 이라는 인터페이스로 베이스로 만들어진 conn이라는 객체만들어짐
url (jdbc 형태)
jdbc:oracle:thin:[hostname]:[port]:dbname
jdbc:oracle:thin:@localhost:1521:XE - > URL에 들어감
id : study
pw : 1234
conn.close();
Statement Sql 문을 처리
Statement stmt = conn.createStatement();
-> 얘를 가지고 sql 문을 실행할 수 도 있음
Statement 메서드 2가지로 나뉘게 됨
excuteQuery: select 처리 -> 결과 나타는 경우 사용
excuteUpdate: inset, update, delete -> 결과가 나타는게 아니라 그냥 테이블 내용이 변경되었을 때 사용
stmt.excuteQuery(SQL); -> 이런식으로 select처리
결과를 저장하는 ResultSet
ResultSet irs = stmt.excuteQuery(SQL);
ResultSet메서드
next(): 다음 데이터가 있는 지 확인하고 있으면 True, 없으면 False로 리턴하고 다음으로 이동
previous(): 이전 데이터가 있는지 확인해서 잇으면 true, 없으면 false로 리턴 이전으로 이동
first (): 현재 위치에서 첫번째로 이동
last(): 현재 위치에서 마지막으로 이동
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%!
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String url= "jdbc:oracle:thin:@localhost:1521:XE";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border='1'>
<tr>
<th>이름</th>
<th>아이디</th>
<th>비밀번호</th>
<th>이메일</th>
<th>전화번호</th>
<th>권한</th>
</tr>
<%
String sql = "select*from member";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url,"study","1234");
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()) {
out.print("<tr>");
out.print("<td>"+rs.getString("name")+"</td>");
out.print("<td>"+rs.getString("userid")+"</td>");
out.print("<td>"+rs.getString("pw")+"</td>");
out.print("<td>"+rs.getString("email")+"</td>");
out.print("<td>"+rs.getString("phone")+"</td>");
out.print("<td>"+rs.getInt("name")+"</td>");
out.print("</tr>");
}
} catch(Exception e) {
e.printStackTrace();
} finally {
try{
if(rs != null)
rs.close();
if(stmt != null)
stmt.close();
if(conn != null)
conn.close();
} catch(Exception e){
e.printStackTrace();
}
}
%>
</table>
</body>
</html>
PreparedStatement
-> Statement보다 더빠름
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%!
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String url= "jdbc:oracle:thin:@localhost:1521:XE";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border='1'>
<tr>
<th>이름</th>
<th>아이디</th>
<th>비밀번호</th>
<th>이메일</th>
<th>전화번호</th>
<th>권한</th>
</tr>
<%
String sql = "select*from member where ";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url,"study","1234");
//stmt = conn.createStatement();
//rs = stmt.executeQuery(sql);
pstmt= conn.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()) {
out.print("<tr>");
out.print("<td>"+rs.getString("name")+"</td>");
out.print("<td>"+rs.getString("userid")+"</td>");
out.print("<td>"+rs.getString("pw")+"</td>");
out.print("<td>"+rs.getString("email")+"</td>");
out.print("<td>"+rs.getString("phone")+"</td>");
out.print("<td>"+rs.getInt("name")+"</td>");
out.print("</tr>");
}
} catch(Exception e) {
e.printStackTrace();
} finally {
try{
if(rs != null)
rs.close();
if(pstmt != null)
pstmt.close();
if(conn != null)
conn.close();
} catch(Exception e){
e.printStackTrace();
}
}
%>
</table>
</body>
</html>
SQL문 ( sql디벨로퍼에서 작성)
create table 사원(
사원번호 number(4) PRIMARY key,
이름 varchar2(20),
생년월일 number(6),
부서명 varchar2(20)
);
insert into 사원 values(1001, '유재석', '901010', '영업부');
insert into 사원 values(1002, '정준하', '801212', '관리부');
insert into 사원 values(1003, '노홍철', '950505', '회계부');
select * from 사원;
commit;
<%@page import="java.sql.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%!Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String id = "study";
String pw = "1234";%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>사원정보</h1>
<table border=1>
<tr>
<th>사원번호</th>
<th>이름</th>
<th>생년월일</th>
<th>부서명</th>
</tr>
</table>
<%
try {
String sql = "select*from 사원";
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, id, pw);
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
out.print("<tr>");
out.print("<td>" + rs.getInt("사원번호") + "</td>");
out.print("<td>" + rs.getString("이름") + "</td>");
out.print("<td>" + rs.getInt(3) + "</td>");
out.print("<td>" + rs.getString(4) + "</td>");
out.print("<td>" + rs.getInt("name") + "</td>");
out.print("</tr>");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
%>
</body>
</html>
'국비지원(국비교육) 웹 개발자 과정' 카테고리의 다른 글
국비지원 JAVA(자바) 프로그래밍 (0) | 2023.02.03 |
---|---|
국비지원 JAVA(자바) 프로그래밍 (데이터베이스 커넥션 풀, VO,DTO) (0) | 2023.02.03 |
국비지원 JAVA(자바) 프로그래밍 (jsp,param,내장객체,번들,Bundle,fmt) (0) | 2023.01.26 |
국비지원 JAVA(자바) 프로그래밍 (JSP,SESSION,로그인, 로그아웃) (0) | 2023.01.25 |
국비지원 JAVA(자바) 프로그래밍 (application 내장 객체 ) (0) | 2023.01.20 |