내부객체
JSP 내부객체
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html">
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>request 내부객체의 다양한 메소드 결과</h1>
<%
//1) 한글 인코딩
//-> UTF-8 조합형
//-> EUC-KR 완성형, MS949
request.setCharacterEncoding("UTF-8");
//2) 사용자가 입력한 정보 가져오기
out.println(request.getParameter("uid"));
out.println("<br>");
//3) 요청한 사용자의 다양한 정보
out.println(request.getRemoteAddr()); //요청PC의 IP받아오기
out.print("<hr>");
//basic폴더의 경로
out.print(request.getContextPath());
out.print("<hr>");
out.print(request.getRealPath("/basic"));
out.print("<hr>");
out.print(application.getRealPath("/basic"));
// 내부변수
/*
request.setAttribute("user", "korea");
request.getAttribute("user");
*/
request.setAttribute("user", "korea");
//내부변수의 리턴형은 Object이므로
//형변환해서 사용한다.
Object obj = request.getAttribute("user");
String str = (String)obj;
out.println(str);
%>
</body>
</html>
톰캣 IPv4 지정
IP주소 6자리 -> 4자리변경
Run -> Run Configurations -> Tomcat Server -> (x)=Arguments -> VM arguemnts에 아래와 같이 추가
-> 공백1칸 주고 -Djava.net.preferIPv4Stack=true
-> Apply
성적프로그램 만들기
1) 폼형식
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html">
<html>
<head>
<meta charset="UTF-8">
<title>sungjukForm.jsp</title>
<style>
body {font-family:"Noto Sans CJK KR";}
table {margin: 20px; border-collapse:collapse;}
tr,th,td {padding: 5px 10px; }
input,select {width: 150px; height: 30px; border-radius: 5px; border: 1px solid #bbb; padding: 5px;}
.bottom {padding-top: 20px;}
.submit, .reset {width: 100px; height: 32px; border-radius: 10px; color: #fff; cursor:pointer; transition: all 0.5s}
.submit {background: #b5b5b5; border: 1px solid #b4b4b4; }
.submit:hover { background: #0050ff; border: #0050ff; }
.reset { background: #ff7878; border:#ff7878;}
.reset:hover { background: #e03f3f;}
</style>
</head>
<body>
<h1>성적 입력 폼</h1>
<a href="sungjukList.jsp">[성적목록]</a>
<form method="post" action="sungjukIns.jsp">
<table>
<tr>
<th>이름</th>
<td>
<input type="text" name="uname" maxlength="20" required autofocus>
</td>
</tr>
<tr>
<th>국어</th>
<td>
<input type="number" name="kor" size="5" min="0" max="100" placeholder="점수를 입력하세요">
</td>
</tr>
<tr>
<th>영어</th>
<td>
<input type="number" name="eng" size="5" min="0" max="100" placeholder="점수를 입력하세요">
</td>
</tr>
<tr>
<th>수학</th>
<td>
<input type="number" name="mat" size="5" min="0" max="100" placeholder="점수를 입력하세요">
</td>
</tr>
<tr>
<th>주소</th>
<td>
<select name="addr">
<option value="Seoul">서울</option>
<option value="Jeju">제주</option>
<option value="Busan">부산</option>
<option value="Suwon">수원</option>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="center" class="bottom">
<input type="submit" value="전송" class="submit">
<input type="reset" value="취소" class="reset">
</tr>
</table>
</form>
</body>
</html>
스타일을 좀 수정하였다.
2) 성적 데이터 삽입
성적테이블에 데이터를 삽입한다.
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.Connection" %>
<!DOCTYPE html">
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../css/style.css">
<title>*성적 결과*</title>
</head>
<body>
<h1>성적 입력 폼</h1>
<p><a href="sungjukList.jsp">[성적목록]</a></p>
<%
//한글 인코딩
request.setCharacterEncoding("UTF-8");
//입력정보 가져와서 변수에 담기
String uname = request.getParameter("uname").trim();
int kor = Integer.parseInt(request.getParameter("kor"));
int eng = Integer.parseInt(request.getParameter("eng"));
int mat = Integer.parseInt(request.getParameter("mat"));
String addr = request.getParameter("addr").trim();
//평균구하기
int aver=(kor+eng+mat)/3;
//출력
out.println("이름:" + uname + "<br>");
out.println("국어:" + kor + "<br>");
out.println("영어:" + eng + "<br>");
out.println("수학:" + mat + "<br>");
out.println("평균:" + aver + "<br>");
out.println("주소:" + addr + "<br>");
out.println("요청IP:" + request.getRemoteAddr() + "<br>");
try{
//Oracle DB 저장
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection
("jdbc:oracle:thin:@//localhost:1521/xe","java0514","1234");
StringBuilder sql = new StringBuilder();
//SQL문 작성
sql.append(" INSERT INTO SUNGJUK(SNO,UNAME,KOR,ENG,MAT,AVER,ADDR,WDATE) "); //칼럼의 순서는 이곳에서.
sql.append(" VALUES((SELECT NVL(MAX(SNO),0)+1 FROM SUNGJUK) ");
sql.append(",?,?,?,?,?,?,SYSDATE) "); //직접 쓰는 것은 절대상수 값이다.
// 4) SQL문 변환
PreparedStatement pstmt = null;
pstmt = con.prepareStatement(sql.toString());
// ?순서와 ?에 들어갈 자료형 주의
pstmt.setString(1, uname);
pstmt.setInt(2, kor);
pstmt.setInt(3, eng);
pstmt.setInt(4, mat);
pstmt.setInt(5, aver);
pstmt.setString(6, addr);
//실행
int result = pstmt.executeUpdate();
if(result == 0){
out.println("<p>성적입력이 실패했습니다.</p>");
out.println("<p><a href='javascript:history.back()'>다시시도</a></p>");
}else {
out.println("<script>");
out.println("alert('성적이 입력되었습니다.');");
out.println("location.href='sungjukList.jsp';");
out.println("</script>");
}
} catch (Exception e){
out.print("실패!"+e);
}
%>
<button onclick="javascript:history.back()" >뒤로가기</button>
</body>
</html>
위 폼에 이렇게 작성하면 저 코드가 실행되며 데이터가 테이블에 삽입된다.
3) 성적 리스트
입력된 데이터를 조회하는 코드
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<!DOCTYPE html">
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../css/style.css">
<style>
a{color: inherit; text-decoration:none;}
tr{cursor:pointer; opacity:.8;}
tr:hover {opacity: 1; color: #0050ff;}
tr:nth-child(even){background: #eee;}
</style>
<title>sungjukList</title>
</head>
<body>
<h1>성적목록</h1>
<a href="sungjukForm.jsp">[성적쓰기]</a>
<table>
<%
try{
//Oracle DB 저장
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection
("jdbc:oracle:thin:@//localhost:1521/xe","java0514","1234");
StringBuilder sql = new StringBuilder();
//SQL문 작성
sql.append(" SELECT SNO, UNAME, KOR, ENG, MAT, AVER, ADDR, WDATE ");
sql.append(" FROM SUNGJUK ");
sql.append(" ORDER BY WDATE DESC ");
PreparedStatement pstmt = null;
ResultSet rs = null; //
pstmt = con.prepareStatement(sql.toString());
rs=pstmt.executeQuery(); //SELECT문에서 사용한다. SELECT한 테이블이 담김.
//cursor는 불러온 값 가장 처음것을 가리킴
//cursor : 가리키는 값
if(rs.next()){ //cursor가 존재하는지?
out.println("<tr>");
out.println("<th colspan='8'>============================ 성적표 ============================</th>");
out.println("</tr>");
out.println("<tr>");
out.println("<th>번호</th>");
out.println("<th>이름</th>");
out.println("<th>국어</th>");
out.println("<th>영어</th>");
out.println("<th>수학</th>");
out.println("<th>평균</th>");
out.println("<th>주소</th>");
out.println("<th>등록일</th>");
out.println("</tr>");
do{ //칼럼명으로 접근한다.
%>
<tr>
<td><%=rs.getInt("sno")%></td>
<td><a href='sungjukRead.jsp?sno=<%=rs.getInt("sno")%>'><%=rs.getString("uname")%></a></td>
<td><%=rs.getInt("kor")%></td>
<td><%=rs.getInt("eng")%></td>
<td><%=rs.getInt("mat")%></td>
<td><%=rs.getInt("aver")%></td>
<td><%=rs.getString("addr")%></td>
<td><%=rs.getString("wdate")%></td>
</tr>
<%
} while(rs.next());
}else{
out.println("<tr>");
out.println("<td>자료없음</td>");
out.println("</tr>");
}
} catch (Exception e){
out.print("실패!"+e);
}
%>
</table>
</body>
</html>
성적테이블 CRUD
sungjukForm.jsp 성적쓰기 -> sungjukIns.jsp
sungjukList.jsp 성적목록 -> sungjukRead.jsp 상세보기 (수정, 삭제 기능이 있어야한다.)
수정,삭제의 부모는 상세보기
상세보기는 -> 하나만 보기 -> 유일성이 만족되는 칼럼
페이지이동
<a href=""></a>
location.href=""
'Backend' 카테고리의 다른 글
08월 28일 수 | JSP 06 - JSP Java bean (0) | 2019.08.28 |
---|---|
08월 27일 화 | JSP 05 - JSP CRUD 게시판 삭제, 수정 (0) | 2019.08.27 |
08월 23일 금 | JSP 03 - JSP 내장객체 (0) | 2019.08.23 |
08월 22일 목 | JSP 02 - JSP 문법 (0) | 2019.08.22 |
08월 21일 수 | JSP 01 - 톰캣설치, 개발환경설정 (0) | 2019.08.21 |
댓글