--jsp파일
<%@ 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>Post Method Servlet방식</h1>
<form method="post" action="PostServlet">
id: <input name="id"><p/>
pw: <input type="password" name="pwd"><p/>
email: <input name="email"><p/>
<input type="submit" value="회원가입">
</form>
</body>
</html>
--servlet파일
package servlet1;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/PostServlet")
public class PostServlet4 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pwd");
String email = request.getParameter("email");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter(); //ctrl + shift + o 임포트 단축키
out.print("<html>");
out.print("<body>");
out.print("<h1>Post Method Servlet</h1>");
out.print("<h3>id: " + id + "</h3>");
out.print("<h3>pw: " + pw + "</h3>");
out.print("<h3>email: " + email + "</h3>");
out.print("</body>");
out.print("</html>");
}
}
--첫번째 jsp파일
<%@ 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>login과 logout하기</h1>
<%
String id = (String)session.getAttribute("idKey");
if(id != null) { //로그인한 사람
out.print(id + "님 반갑습니다");
%>
<p/>
<a href="05.2.logout.jsp">로그아웃</a>
<%
} else {
%>
<form method="post" action="loginServlet"> <!-- post방식으로 해야 정보 보안됨-->
id: <input name="id"><p/>
pw: <input type="password" name="pwd"><p/>
<input type="submit" value="로그인">
<input type="reset">
</form>
<%
}
%>
</body>
</html>
--servlet파일(두번째)
package servlet1;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/loginServlet")
public class LoginServlet5 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pwd");
if(id != null && pw != null) {
HttpSession session = request.getSession();
session.setAttribute("idKey", id); //로그인을 했으면 세션에 들어있고 안 했으면 없음
}
response.sendRedirect("05.1.login.jsp");
}
}
--세번째 jsp파일
<%@ 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>
<%
/* String id = (String)session.getAttribute("idKey");
out.print("<h3>" + id + "님 로그아웃 되었습니다 </h3>");
sendRedirect를 밑에서 해줬기 때문에 창이 넘어가서어차피 안 보이는 구문
*/
session.invalidate(); //세션 끊기 => id가 null값이 됨
response.sendRedirect("05.1.login.jsp");
%>
</body>
</html>
효율성과 재사용을 위해 사용함
데이터베이스에 있는 컬럼명을 private으로 선언
private이라서 get, set(public들임)으로 접근
이렇게 private 변수와 get,set 메소드가 구성되어 있는게 JavaBeans라고 함.
값을 생성하는 구문만 쓰면 값이 100개여도 다 들어감
얻어오는 구문도 쓰기만 하면 모든 값이 다 얻어와짐
중간에 넣어 정보가 모두 저장될 수 있게 함
bean을 사용하지 않으면 request로 사용자 정보를 일일이 써야함
--클래스 파일
package ch05Bean;
public class BeanTest1 {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
--jsp파일
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="test" class="ch05Bean.BeanTest1"/>
<!-- class 풀네임(패키지명.클래스명)으로 써야함 -->
<jsp:setProperty name="test" property="name" value="자바빈사용:홍길동"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
당신의 이름: <jsp:getProperty name="test" property="name"/>
</body>
</html>
--jsp파일
<%@ 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>
<script src="script.js"></script>
</head>
<body>
<table border="1">
<form method="post" name="regFrm" action="02.2.MemProc.jsp">
<tr>
<th colspan="3">회원가입</th>
</tr>
<tr>
<td>아이디</td>
<td><input name="id"></td>
<td>아이디를 적어주세요(8자이내)</td>
</tr>
<tr>
<td>비밀번호</td>
<td><input type="password" name="pw"></td>
<td>비밀번호를 적어주세요(영문,숫자,특수기호를 포함하여 20자이내)</td>
</tr>
<tr>
<td>비밀번호확인</td>
<td><input type="password" name="rePw"></td>
<td>위에 작성한 비밀번호와 동일한 비밀번호를 작성하세요</td>
</tr>
<tr>
<td>이름</td>
<td><input name="name"></td>
<td>이름을 적어주세요</td>
</tr>
<tr>
<td>생년월일</td>
<td><input name="birthday"></td>
<td>생년월일을 적어주세요(ex. 2002/04/28)</td>
</tr>
<tr>
<td>이메일</td>
<td><input type="email" name="email"></td>
<td>이메일를 적어주세요</td>
</tr>
<tr>
<td colspan="3" align="center">
<input type="button" value="회원가입" onclick="inputCheck()">
<input type="reset" value="다시쓰기">
</td>
</tr>
</form>
</table>
</body>
</html>
--javascript파일
function inputCheck() {
if(regFrm.id.value == "") {
alert("아이디를 넣어주세요");
regFrm.id.focus();
return;
}
if(regFrm.pw.value == "") {
alert("비밀번호를 넣어주세요");
regFrm.pw.focus();
return;
}
if(regFrm.rePw.value == "") {
alert("비밀번호 확인을 넣어주세요");
regFrm.rePw.focus();
return;
}
if(regFrm.pw.value != regFrm.rePw.value) {
alert("비밀번호가 일치하지 않습니다");
regFrm.rePw.focus();
return;
}
if(regFrm.name.value == "") {
alert("이름을 넣어주세요");
regFrm.name.focus();
return;
}
regFrm.submit();
}
--javaBean파일
package ch05Bean;
public class MemberBean {
private String id;
private String pw;
private String name;
private String birthday;
private String email;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
--Bean을 이용하는 jsp파일
<jsp:setProperty name="regBean" property="*"/>
<!-- property="*": 변수에 들어있는 모든 값 가져오기-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<table border="1" align="center">
<tr>
<th colspan="2">
<jsp:getProperty property="name" name="regBean"/>회원님이 작성한 내용입니다.
</th>
</tr>
<tr>
<td>아이디</td>
<td><jsp:getProperty property="id" name="regBean"/></td>
</tr>
<tr>
<td>비밀번호</td>
<td><jsp:getProperty property="pw" name="regBean"/></td>
</tr>
<tr>
<td>이름</td>
<td><jsp:getProperty property="name" name="regBean"/></td>
</tr>
<tr>
<td>생년월일</td>
<td><jsp:getProperty property="birthday" name="regBean"/></td>
</tr>
<tr>
<td>이메일</td>
<td><jsp:getProperty property="email" name="regBean"/></td>
</tr>
<tr>
<td colspan="2">
<input type="button" value="확인완료"> 
<input type="button" value="다시쓰기" onclick="history.back();">
</td>
</tr>
</table>
</body>
</html>
다시쓰기 눌렀을 때
데이터베이스(오라클, MYSQL 등) 종류에 따라 연동하기 쉽도록 하는 API
직접연동이 안 되고 JDBC를 거쳐서 연결
이 방법은 추천하지 않고 별도로 jsp와 servlet으로 하는게 좋음
--자바(jsp없어서 서버아님)에서 실행시킬 자바 파일
package oracle06;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class OracleDBTest1 {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.OracleDriver");
// Class.forName("com.mysql.jdbc.Driver"); => MySQL DB 사용시
// Class.forName("org.mariadb.jdbc.Driver"); => mariadb DB 사용시
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "kh","1234");
System.out.println("Success");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
오라클의 세부정보 넣어줌
package oracle06;
import java.sql.*;
public class OracleDBTest2 {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","kh","1234");
System.out.println("Success");
Statement st = con.createStatement(); //SQL문이 컴파일 됨
ResultSet rs = st.executeQuery("SELECT * FROM JOB");
while(rs.next()) {
//rs.getString(2) 컬럼이 적으면 이렇게 써도 됨
//rs.getString("job_code"); 컬럼명으로 가져오기
String jobCode = rs.getString(1); //컬럼 첫번째 거 가져오기
String jobName = rs.getString("job_name");
System.out.println(jobCode + " : " + jobName);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
next하면 포인터가 하나하나 내려가면서 돌게 됨
맨 마지막 next가 돌고 나서 값이 있으면 true, 없으면 false 반환
false가 되면 반복하는 것 멈춤(while 속성)
--jsp파일
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.sql.*" %> <!-- 지시자 반드시 써야 연결할 수 있음 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
int count = 0;
try {
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","kh","1234");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM DEPARTMENT");
%>
<table border="1">
<tr>
<th>부서코드</th>
<th>부서명</th>
<th>부서위치</th>
</tr>
<%
if(rs != null) {
while(rs.next()) {
%>
<tr>
<td><%=rs.getString(1) %></td>
<td><%=rs.getString(2) %></td>
<td><%=rs.getString(3) %></td>
</tr>
<%
count++;
}
}
%>
</table>
total records : <%=count %>
<%
} catch(Exception e) {
System.out.println("예외발생: " + e);
}
%>
</body>
</html>
--javaBean 파일
package oracle06;
public class RegisterBean5 {
private String emp_id;
private String emp_name;
private String email;
private String phone;
private String dept_code;
private int salary;
public String getEmp_id() {
return emp_id;
}
public void setEmp_id(String emp_id) {
this.emp_id = emp_id;
}
public String getEmp_name() {
return emp_name;
}
public void setEmp_name(String emp_name) {
this.emp_name = emp_name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getDept_code() {
return dept_code;
}
public void setDept_code(String dept_code) {
this.dept_code = dept_code;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
}
--JDBC 파일
package oracle06;
import java.sql.*;
import java.util.ArrayList;
public class RegisterMgr5 {
private final String JDBC_DRIVER = "oracle.jdbc.OracleDriver";
private final String JDBC_URL = "jdbc:oracle:thin:@localhost:1521:xe";
private final String USER = "kh";
private final String PASS = "1234";
//final은 변수 고정시키는 것
public RegisterMgr5() {
try {
Class.forName(JDBC_DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public ArrayList<RegisterBean5> getRegisterList() {
//반환형은 Bean의 객체가 됨
ArrayList<RegisterBean5> alist = new ArrayList<RegisterBean5>();
Connection con;
try {
con = DriverManager.getConnection(JDBC_URL, USER, PASS);
Statement st = con.createStatement();
String strQuery = "SELECT * FROM EMPLOYEE";
ResultSet rs = st.executeQuery(strQuery);
while(rs.next()) {
RegisterBean5 bean = new RegisterBean5();
bean.setEmp_id(rs.getString("emp_id"));
bean.setEmp_name(rs.getString("emp_name"));
bean.setPhone(rs.getString("phone"));
bean.setDept_code(rs.getString("dept_code"));
bean.setEmail(rs.getString("email"));
bean.setSalary(rs.getInt("salary"));
alist.add(bean);
}
} catch (Exception e) {
e.printStackTrace();
}
return alist;
}
}
--jsp 파일
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*, oracle06.*" %>
<jsp:useBean id="regMgr" class="oracle06.RegisterMgr5"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Bean을 이용한 Oracle 연동</h1>
<table border="1">
<tr>
<th>사번</th>
<th>사원명</th>
<th>이메일</th>
<th>전화번호</th>
<th>부서코드</th>
<th>급여</th>
</tr>
<%
ArrayList<RegisterBean5> alist = regMgr.getRegisterList();
for(int i=0; i<alist.size(); i++) { //ArrayList는 size임 Array는 length
RegisterBean5 regBean = alist.get(i);
%>
<tr>
<td><%=regBean.getEmp_id() %></td>
<td><%=regBean.getEmp_name() %></td>
<td><%=regBean.getEmail() %></td>
<td><%=regBean.getPhone() %></td>
<td><%=regBean.getDept_code() %></td>
<td><%=regBean.getSalary() %></td>
</tr>
<%
}
%>
</table>
</body>
</html>