본문 바로가기
html | css | jsp

jsp - Member Management System(회원관리 시스템)

by 개폰지밥 2019. 5. 31.
반응형

* DeleteServlet.java

package dmirae.sgchoi.user;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class DeleteServlet
 */
@WebServlet("/DeleteServlet")
public class DeleteServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public DeleteServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String id=request.getParameter("id");
System.out.println(id);

try {
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("db와 연결하여 사용할 파일 찾음!");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("db와 연결하여 사용할 파일 못찾음ㅜ!");
}

Connection con=null;
try {
con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","jsp3c","1234");
System.out.println("찾은 클래스와 db와 연결 성공!");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.err.println("SQL Error = "+e.toString());
}
String sql="delete from users where id=?";
PreparedStatement pstmt = null;
try {
System.out.println(sql);
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.err.println("error"+e.toString());
}

int result = 0;
try {
result = pstmt.executeUpdate();
if(result!=0) {
System.out.println("삭제 성공!!");
response.sendRedirect("list.jsp");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.err.println("error"+e.toString());
}finally {
/*6. 생성된 객체 소멸
마지막으로 db와 연결하기 위해 열어 둔 통로를 모두 닫는다. 역순으로 닫는다. finally는 실패하든
성공하든 무조건 실행하겠다는 뜻이다.*/
if(pstmt != null)
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.err.println("error="+e.toString());

}
if(con != null)
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.err.println("error="+e.toString());
}
}


}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}

============================================================================

* LoginServlet.java

package dmirae.sgchoi.user;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

HttpSession session = request.getSession();
ResultSet rs = null;
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");


/*1.db와 연결하여 파일있는지 찾기
class의 forName() 메서드 사용하기
예외는 ClassNotFoundException*/

try {

Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("db와 연결하여 사용할 파일 찾음!");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("db와 연결하여 사용할 파일 못찾음ㅜ!");
}

/*2.찾은 파일 db와 연결하기
Connection 객체는 DriverManager 클래스의 getConnection()이라는 메서드로 생성
예외는 db 서버와 연결할 때 발생하고, SQLException 예외 발생*/
Connection con = null;
PreparedStatement pstmt = null;

String sql ="select * from users where id=?";
try {
System.out.println(sql);
con= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","jsp3c","1234");
System.out.println("찾은 클래스와 db와 연결 성공!");

/*3. 연결된 포트에 질의문 보내도록 돕는 객체 생성
동적인 질의를 처리하려면 PreparedStatement 객체 생성
select문 실행하는 LoginServlet 만들기*/
/*매개변수 표시문자가 있는 select문을 사용하여 테이블에서 데이터를 검색하려면
PreparedStatement.executeQuery 메소드를 사용합니다.
이 메소드는 ResultSet 오브젝트에서 결과 테이블을 리턴합니다.
ResultSet 메소드를 사용하여 결과 테이블을 통해 이동하고 각 행에서 개별 컬럼 값을 가져와야합니다.
IBM(Data Service driver for jdbc and sql)에서는 해당 스토어드 프로시저가
하나의 결과 세트만 리턴하고 하나의 입력 매개변수만 있는 경우 PreparedStatement.excutequery메소드를 사용하여
스토얻 ㅡ프로시저 호출에서 결과 세트를 검색할 수도 있습니다.
스토어드 프로시저가 여러 개의 결과 세트를 리턴하는 경우 PreparedStatement.execute 메소드를 사용해야합니다.
또한 매개 변수 표시문자가 없는 명령문에 PreparedStatement.executeQuery메소드를 사용할 수도 있습니다.*/
pstmt = con.prepareStatement(sql);

pstmt.setString(1, id);

System.out.println("연결된 포트의 질의문 성공!");
rs = pstmt.executeQuery();
while(rs.next()) {
String a = rs.getString("id");
String b = rs.getString("pwd");
String c = rs.getString("name");
String d = rs.getString("gender");
int e = rs.getInt("age");
String f = rs.getString("address");
//String g = rs.getString("reg_date");
System.out.println(a+"//"+b+"//"+c+"//"+d+"//"+e+"//"+f+"//");

if(rs.getString(1).equals(id)&&rs.getString(2).equals(pwd)) {
System.out.println("로그인을 성공하셨습니다. 환영합니다.");
session.setAttribute("id", id);
response.sendRedirect("list.jsp");
}else {
response.sendRedirect("login.jsp");
System.out.println("어려워 보내는거 성공했니..?");
}
}
System.out.println("디엔드입니다용");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.err.println("SQL Error ="+e.toString());
System.out.println("로그인 실패 후..");
response.sendRedirect("login.jsp");
}finally {
/*6. 생성된 객체 소멸
마지막으로 db와 연결하기 위해 열어 둔 통로를 모두 닫는다. 역순으로 닫는다. finally는 실패하든
성공하든 무조건 실행하겠다는 뜻이다.*/
if(pstmt != null)
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.err.println("error="+e.toString());

}
if(con != null)
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.err.println("error="+e.toString());
}
}
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}

============================================================================

RegisterSevlet.java

package dmirae.sgchoi.user;
import java.sql.*;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class RegisterServlet
 */
@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegisterServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub

String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
String gender = request.getParameter("gender");
String age=request.getParameter("age");
String address = request.getParameter("address");


//1. db와 연결하여 사용할 파일들이 있는지 확인
//Class라는 클래스의 forName() 메서드 사용하기
//ClassNotFoundException 예외 발생시키기


try {
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("db와 연결하여 사용할 파일 찾음!");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("db와 연결하여 사용할 파일 못찾음ㅜ!");
}
//2. 찾은 드라이버 클래스를 db와 연결하는 Connection 객체 생성하기
//Connection 객체는 DriverManager 클래스의 getConnection() 이라는 static 메서드로 생성
//예외는 db 서버와 연결할 때 발생, SQLException 예외 발생
Connection con = null;
try {
con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","jsp3c","1234");
System.out.println("찾은 클래스와 db와 연결 성공!");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.err.println("SQL Error = "+e.toString());
}
//3. 연결된 포트를 통해 질의문 보낼 수 있도록 돕는 객체를 생성한다.
//동적 질의를 처리할 때 유리한 객체인 PreparedStatement 객체를 생성한다.
String sql ="insert into users values(?, ?, ?, ?, ?, ?,default)";
PreparedStatement pstmt =null;
//ResultSet rs = null; select할 때 사용
int result = 0;
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, pwd);
pstmt.setString(3, name);
pstmt.setString(4, gender);
pstmt.setInt(5,Integer.parseInt(age));
pstmt.setString(6, address);

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.err.println("error="+e.toString());
}

/*4.db로부터 질의 결과를 가져와야 하는 경우에는 executeQuery() 메서드를 사용하고
특정 내용을 db에 적용하는 경우에는 executeUpdate() 메서드를 사용한다는 것이다.
정리하면 ResultSet은 select할 때 사용 executeUpdate는 저번에 한 예제처럼 html엘 상에서 삭제를 누르면
db가 실제로 삭제되게 즉 특정 내용을 db에 적용할 때 사용하는것이 executeUpdate이다.
excuteUpdate는 insert문, update문, delect문에서 사용함.*/

try {
//회원가입 성공하면 login.jsp로 가게(로그인창)
result  = pstmt.executeUpdate();
if(result!=0) {
System.out.println("회원가입 성공!!");
response.sendRedirect("login.jsp");
}


} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.err.println("error="+e.toString());
//회원가입 실패하면 다시 register.jsp로(회원가입창)
if(result==0) {
System.out.println("회원가입 실패");
response.sendRedirect("register.jsp");
}
} finally {
/*6. 생성된 객체 소멸
마지막으로 db와 연결하기 위해 열어 둔 통로를 모두 닫는다. 역순으로 닫는다. finally는 실패하든
성공하든 무조건 실행하겠다는 뜻이다.*/
if(pstmt != null)
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.err.println("error="+e.toString());

}
if(con != null)
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.err.println("error="+e.toString());
}
}

}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}

============================================================================

html은 5월29일에 올렸음!!!

 

*user.sql

-- users 테이블 생성
create table users
(
id  varchar2(10) primary key,
pwd varchar2(10) not null,
name varchar2(20) not null,
gender char(6) check (gender in ('남', '여')),
age number,
address varchar2(100),
reg_date date default sysdate
);

-- 데이터 추가
insert into users values('test', '1234', '최슬기', '여', 23, '오류',default);
insert into users values('xotm', '8924', '최슬기', '여', 23, '오류',default);
insert into users values('0223', '1234','김수정', '여', 22, '우장산',default);
insert into users values('ahff', '1234', '한현우', '여', 28, '개봉동',default);

-- 이렇게 똑같은거 주면 안되니깐 primary key를 주는 것이다.
select * from users
where age >=20;

select * from users
where name = '최슬기';

select * from users
where name like '김%';

select * from users
where name like '%정';
--20살이상의 값만 가지고 와라 위에꺼까지 다 써야한다. 그게 한 세트이다.
--홍%는 홍씨 성을 가진 모든 이름을 보고 싶다는 뜻이다.
--끝이 %정으로 끝나는 사람을 찾겠다.

--최슬기의 주소를 오류에서 경기도로 바꿔보시오
--김수정을 삭제해보시오. 둘다 update를 이용하세요.

--뷰 생성(create view)구문
CREATE VIEW 십대회원(회원번호, 성명, 전화번호)
AS SELECT 회원번호, 성명, 전화번호 FROM 회원 WHERE 나이>=10 AND 나이<20;

============================================================================

반응형

'html | css | jsp' 카테고리의 다른 글

ajax  (0) 2019.11.14
Vanilla Java Script  (0) 2019.10.01
html - Bulletin Board Management System(게시판 관리 시스템)  (0) 2019.05.31
html - login page  (0) 2019.05.29

댓글