T.김동식
<c:url var="변수" value="경로"/>
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*"
pageEncoding="UTF-8"
isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="contextPath" value="${pageContext.request.contextPath}" />
<c:url var="url1" value="/test03/memberForm.jsp"></c:url>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="${url1}">회원가입</a>
<a href="member8.jsp">회원리스트</a>
</body>
</html>
로그인구현하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="result2.jsp" method="post">
아이디: <input type="text" name="userID"><br> 비밀번호: <input
type="password" name="userPw"><br> <input type="submit"
value="로그인"> <input type="reset" value="다시입력">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset=”UTF-8">
<title>결과창</title>
</head>
<body>
<c:if test="${empty param.userID}">
아이디를 입력하세요.<br>
<a href="login.jsp">로그인 창 </a>
</c:if>
<c:if test="${not empty param.userID}">
<c:if test="${param.userID =='admin' }">
<h1>관리자로 로그인 했습니다.</h1>
<form>
<input type=button value="회원정보 삭제하기" />
<input type=button value="회원정보 수정하기" />
</form>
</c:if>
<c:if test="${param.userID !='admin' }">
<h1> 환영합니다. <c:out value="${param.userID}" /> 님!!!</h1>
</c:if>
</c:if>
</body>
</html>
구구단 출력하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>출력할 구구단의 수를 지정해 주세요.</h1>
<form action="guguResult.jsp">
출력할 구구단 : <input type=text name="dan" /> <br>
<input type ="submit" value="구구단 출력">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
tbody>tr:nth-child(odd){background:#ededed}
</style>
</head>
<body>
<c:set var="dan" value="${param.dan}"></c:set>
<table border="1" width="800" align="center">
<thead>
<tr align="center" bgcolor="lightgreen">
<td colspan="2">${param.dan}단출력</td>
</tr>
</thead>
<tbody>
<c:forEach var="i" begin="1" end="9">
<tr class="body" align=”center”>
<td width="400">${param.dan} x ${i}</td>
<td width="400">${dan*i}</td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
<c:out value="값"/>
<%@ 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>
<!-- 코드 그대로 빠져나오게 함 -->
<p><, <c:out value="<"></c:out></p>
<p>>, <c:out value=">"></c:out></p>
<p>&, <c:out value="&"></c:out></p>
</body>
</html>
properties 파일 + fmt 국제화/형식화의 기능을 제공해주는 JSTL 라이브러리
fmt:setLocale value="지정할 언어"
fmt:bundle basename="읽을파일명"
fmt:message key="출력할 key값"
//member.properties
mem.name = 홍길동
mem.address = 서울시 강남구
mem.job = 회계사
//member_ko.properties
mem.name = 홍길동
mem.address = 서울시 강남구
mem.job = 회계사
//member_en.properties
mem.name = hong kil-dong
mem.address = kang-name gu, seoul
mem.job = account
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ 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>
<fmt:setLocale value="en_US" />
<%-- <fmt:setLocale value="ko_KR" /> --%>
회원정보<br><br>
<fmt:bundle basename="resource.member" >
이름:<fmt:message key="mem.name" /><br>
주소:<fmt:message key="mem.address" /><br>
직업:<fmt:message key="mem.job" />
</fmt:bundle>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.Date" pageEncoding="UTF-8" isELIgnored="false"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<html>
<head>
<meta charset="UTF-8">
<title>포매팅 태그 라이브러리 예제</title>
</head>
<body>
<h2>fmt의 number 태그를 이용한 숫자 포맷팅 예제.</h2>
<c:set var="price" value="100000000" />
<fmt:formatNumber value="${price}" type="number" var="priceNumber" />
통화로 표현 시 :
<!-- formatNumber 표시할 숫자형식을 지정 -->
<fmt:formatNumber type="currency" currencySymbol="₩" value="${price}"
groupingUsed="true" />
<br> 퍼센트로 표현 시 :
<fmt:formatNumber value="${price}" type="percent" groupingUsed="false" />
<br> 일반 숫자로 표현 시 : ${priceNumber}
<br>
<h2>formatDate 예제</h2>
<c:set var="now" value="<%=new Date() %>" />
<!-- formatDate 지정한 형식의 날짜를 표시 -->
<fmt:formatDate value="${now }" type="date" dateStyle="full" />
<br>
<fmt:formatDate value="${now }" type="date" dateStyle="short" />
<br>
<fmt:formatDate value="${now }" type="time" />
<br>
<fmt:formatDate value="${now }" type="both" dateStyle="full"
timeStyle="full" />
<br>
<fmt:formatDate value="${now }" pattern="YYYY-MM-dd :hh:mm:ss" />
<br>
<br>
<br> 한국 현재 시간:
<fmt:formatDate value="${now }" type="both" dateStyle="full"
timeStyle="full" />
<br>
<br>
<!-- 지정한 국가의 시간을 지정 -->
<fmt:timeZone value="America/New York">
뉴욕 현재 시간:<fmt:formatDate value="${now }" type="both"
dateStyle="full" timeStyle="full" />
<br>
</fmt:timeZone>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%
request.setCharacterEncoding("utf-8");
%>
<html>
<head>
<meta charset="UTF-8">
<title>여러 가지 문자열 함수 기능</title>
</head>
<body>
<c:set var="title1" value="hello world!" />
<c:set var="title2" value="쇼핑몰 중심 JSP입니다!" />
<c:set var="str1" value="중심" />
<h2>여러 가지 문자열 함수 기능</h2>
title1="hello world"<br>
title2="쇼핑몰 중심 JSP 입니다.!"<br>
str1="중심"<br><br>
fn:length(title1) 문자열의 전체 길이를 반환 =${fn:length(title1) } <br>
fn:toUpperCase(title1) 대문자로 변환 =${fn:toUpperCase(title1)}<br>
fn:toLowerCase(title1) 소문자로 변환 =${fn:toLowerCase(title1)}<br><br>
fn:substring(title1,3,6) title1에서 3~6까지 해당하는 문자열 반환 =${fn:substring(title1,3,6)}<br>
fn:trim(title1) 앞 뒤 공백 제거 =${fn:trim(title1)}<br>
fn:replace(title1," ","/") title1에서 공백을 /로 대체 =${fn:replace(title1," ","/")}<br><br>
fn:indexOf(title2,str1) title2에서 str1이 처음으로 위치하는 자리값 반환 =${fn:indexOf(title2,str1) }<br>
fn:contains(title1,str1) title1에 str1의 포함여부 =${fn:contains(title1,str1) }<br>
fn:contains(title2,str1) title1에 str2의 포함여부 =${fn:contains(title2,str1) }<br>
</body>
</html>
jsp + sql
회원등록 및 회원정보 출력
//참고 MemberDAO.java
package sec01.ex01;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class MemberDAO {
private Connection con;
private PreparedStatement pstmt;
private DataSource dataFactory;
public MemberDAO() {
try {
Context ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:/comp/env");
dataFactory = (DataSource) envContext.lookup("jdbc/oracle");
} catch (Exception e) {
e.printStackTrace();
}
}
public List listMembers() {
List list = new ArrayList();
try {
con = dataFactory.getConnection();
String query = "select * from t_member order by joinDate desc ";
System.out.println("prepareStatememt: " + query);
pstmt = con.prepareStatement(query);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
String id = rs.getString("id");
String pwd = rs.getString("pwd");
String name = rs.getString("name");
String email = rs.getString("email");
Date joinDate = rs.getDate("joinDate");
MemberBean vo = new MemberBean();
vo.setId(id);
vo.setPwd(pwd);
vo.setName(name);
vo.setEmail(email);
vo.setJoinDate(joinDate);
list.add(vo);
}
rs.close();
pstmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
public void addMember(MemberBean memberBean) {
try {
Connection con = dataFactory.getConnection();
String id = memberBean.getId();
String pwd = memberBean.getPwd();
String name = memberBean.getName();
String email = memberBean.getEmail();
String query = "insert into t_member";
query += " (id,pwd,name,email)";
query += " values(?,?,?,?)";
System.out.println("prepareStatememt: " + query);
pstmt = con.prepareStatement(query);
pstmt.setString(1, id);
pstmt.setString(2, pwd);
pstmt.setString(3, name);
pstmt.setString(4, email);
pstmt.executeUpdate();
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 등록창</title>
<body>
<!-- member_action.jsp로 정보를 보낸다 -->
<form method="post" action="member_action.jsp">
<h1 style="text-align:center">회원 등록창</h1>
<table align="center">
<tr>
<td width="200"><p align="right">아이디</td>
<td width="400"><input type="text" name="id"></td>
</tr>
<tr>
<td width="200"><p align="right">비밀번호</td>
<td width="400"><input type="password" name="pwd"></td>
</tr>
<tr>
<td width="200"><p align="right">이름</td>
<td width="400"><p><input type="text" name="name"></td>
</tr>
<tr>
<td width="200"><p align="right">이메일</td>
<td width="400"><p><input type="text" name="email"></td>
</tr>
<tr>
<td width="200"><p> </p></td>
<td width="400">
<input type="submit" value="가입하기">
<input type="reset" value="다시입력">
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
import=" java.util.*,sec01.ex01.*"
pageEncoding="UTF-8"
isELIgnored="false" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<html>
<head>
<meta charset="TF-8">
<!--
useBean MemberBean을 setProperty property="*" 모든 정보를 연결시킨다.
id값과 name이 일치해야 연결된다 -->
<jsp:useBean id="m" class="sec01.ex01.MemberBean" />
<jsp:setProperty name="m" property="*" />
<%
MemberDAO memDAO=new MemberDAO();
memDAO.addMember(m); //추가, addMember()해 sql에도 저장
List membersList =memDAO.listMembers(); //조회, listMembers()를해서 정보를 가져옴
request.setAttribute("membersList", membersList); //회원정보를 request에 바인딩
%>
</head>
<body>
<!-- setAttribute한것들이 membersList.jsp로 전송될것이다. -->
<jsp:forward page="membersList.jsp" />
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*, sec01.ex01.*"
pageEncoding="UTF-8"
isELIgnored="false" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<html>
<head>
<meta charset=”UTF-8">
<title>회원 정보 출력창</title>
</head>
<body>
<table align="center" border=”1” align="center" >
<tr align="center" bgcolor="lightgreen" >
<td width="7%" ><b>아이디</b></td>
<td width="7%" ><b>비밀번호</b></td>
<td width="7%" ><b>이름</b></td>
<td width="7%"><b>이메일</b></td>
<td width="7%" ><b>가입일</b></td>
</tr>
<c:choose>
<%--ArrayList list =request.getAttribute("membersList");--%>
<!-- membersList--null 회원정보가 없을때 -->
<c:when test="${membersList==null}" >
<tr>
<td colspan=5>
<b>등록된 회원이 없습니다.</b>
</td>
</tr>
</c:when>
<c:when test="${membersList!= null}" >
<!-- 향상된for문 이용 membersList만큼을 돌린다. -->
<c:forEach var="mem" items="${membersList }" >
<tr align="center">
<td>${mem.id }</td>
<td>${mem.pwd}</td>
<td>${mem.name}</td>
<td>${mem.email}</td>
<td>${mem.joinDate}</td>
</tr>
</c:forEach>
</c:when>
</c:choose>
</table>
</body>
</html>
+이클립스에서 플러그인 설치하기
install New Sofrware, Eclipse Marketplace
+Properties Editor 설치
help - install new software - add - ... - finish
Scrapy
크롤링과 스크레이핑을 할때 사용하는 프레임워크
AI
강화학습
보상함수로 얼마나 행동이 좋은지를 측정,
상태와 변화 행동을 번갈아 수행하며 목적을 달성, 지도학습/비지도학습으로 불가능한 과업.
환경, 에이전트 -> 행동, 상태, 보상
https://www.bostondynamics.com/
비지도학습
군집(clustering)
사전 정보 없이 쌓여 있는 그룹 정보를 의미 있는 서브그룹(subgroup) 또는 클러스터(cluster)로 조직하는 탐색적 데이터 분석 기법
차원 축소(dimensionality reduction)
잡음 데이터는 특정 알고리즘의 예측 성능을 감소시킬 수 있음
관련 있는 정보를 대부분 유지하면서 더 작은 차원을 가진 부분 공간(subspace)으로 데이터를 압축
고차원 특성을 1차원 또는 2차원, 3차원 특성 공간으로 투영하여 3D와 2D 산점도(scatterplot)나 히스토그램(histogram)으로 시각화
훈련데이터(데이터셋을 나타내는 테이블의 행) = 훈련샘플 = 관측치(observation) = 레코드(record) = 인스턴스(instance) = 예시(example)
훈련: 모델 피팅(fitting)
모집단(population)
표기법
https://archive.ics.uci.edu/ml/datasets.php
붓꽃(Iris)
Setosa, Versicolor, Virginica 세 종류 150개의 붓꽃 샘플보유
https://archive.ics.uci.edu/ml/datasets/iris
https://archive.ics.uci.edu/ml/machine-learning-databases/iris/
위 붓꽃 데이터를 출력해보자.
1. sklearn 이용
scikit-learn(=사이킷런)이란 python을 대표하는 머신러닝 라이브러리, 오픈 소스
sklean에 내장된 데이터를 사용할 수도 있지만, 직접 만들수도 있다.
from sklearn.datasets import load_iris
import pandas as pd
import numpy as np
Iris = load_iris()
Iris_Data = pd.DataFrame(data=Iris['data'], columns= Iris['feature_names'])
Iris_target = pd.DataFrame(data=Iris['target'],columns = ['target'])
Iris_Data
2.위 경로에서 iris.data 다운후 출력
#데이터를 표형태로 보여줌
import pandas as pd
pd.read_csv('D:/# 박상희/2. 실습/data/iris.data')
3. 다운후 데이터 전처리 후 출력
쉼표로 구분해 데이터를 나눈 뒤
iris_name파일을 확인 후 head에 삽입 - csv 로 저장
#데이터를 표형태로 보여줌
import pandas as pd
pd.read_csv('D:/# 박상희/2. 실습/data/iris.data')
+ 파이썬복습
#변수에 우선 저장 후 사용
df=pd.read_csv('D:/# 박상희/2. 실습/data/iris.csv')
#5줄 미리보기
df.head()
# 데이터요약
df.describe()
#전반적인 정보확인
df.info()
#해당 열 확인하기
df['sepal_length']
#합계
df['sepal_length'].count()
#평균
df['sepal_length'].mean()
#표준편차
df['sepal_length'].std()
#최소값
df['sepal_length'].min()
#최대값
df['sepal_length'].max()