본문으로 바로가기


1. 처음에는 회원관리 부분을 프로그래밍 한다.

join.html

(form태그,input태그, submit태그를 통해 action으로 정보를 넘긴다.


JoinOk(서블릿 역할) DB접속

실재로 DB에 접속해서 데이터베이스를 연결해서 회원가입 정보를 넣는다.


JoinResult.jsp

회원이 완료되었으면 축하메세지를 나타낸다.


login.html

로그인창으로 유도


LoginOK(서블릿 역할) DB접속

DB에 접속해서 실재 존재하는 id인지 , pw인지 로그인 인증


loginResult.jsp

반갑습니다. 누구누구입니다. 


modify.jsp

로그인 한 다음 회원정보 수정페이지


ModifyOK(서블릿) DB 접속

정보들을 업데이트 한다.


modifyResult.jsp

정보수집 완료


logout.jsp

로그아웃 페이지


view의 역할은 jsp,html


create table member {

phone1 varchar2(20),

phone2 varchar2(20),

phone3 varchar2(20),

gender varchar2(20)};




주석처리는 선택을 한뒤 ctrl + /

그리고 commit; 


join.html

<!DOCTYPE html>

<html>

<head>

<meta charset="EUC-KR">

<title>Insert title here</title>

</head>

<body>


<form action="JoinOk" method="post">

이름 : <input type="text" name="name" size="10"><br />

아이디 : <input type="text" name="id" size="10"><br />

비밀번호 : <input type="text" name="pw" size="10"><br />

전화번호 : <select name="phone1">

<option value="010">010</option>

<option value="016">016</option>

<option value="017">017</option>

<option value="018">018</option>

<option value="019">019</option>

<option value="011">011</option>

</select> - 

<input type="text" name="phone2" size="5"> - <input type="text" name="phone3" size="5"> <br />

성별구분 : <input type="radio" name="gender" value="man">남 &nbsp;<input type="radio" name="gender" value="woman">여 <br />

<input type="submit" value="회원가입"> <input type="reset" value="취소">// 회원가입 버튼을 누르면 JoinOk.jsp페이지로 이동

</form>


</body>

</html>



joinOk.jsp(서블릿 및 db접속)

package com.javalec.ex;


import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.Driver;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Arrays;


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 JoinOk

 */

@WebServlet("/JoinOk")

public class JoinOk extends HttpServlet {

private static final long serialVersionUID = 1L;

    

private Connection connection;

private Statement stmt;

private String name, id, pw, phone1, phone2, phone3, gender;

    /**

     * @see HttpServlet#HttpServlet()

     */

    public JoinOk() {

        super();

        // TODO Auto-generated constructor stub

        

    }


/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

System.out.println("doGet");

actionDo(request, response);

}


/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

System.out.println("doPost");

actionDo(request, response);  ///actionDo라는 매소드를 만듦.

}

private void actionDo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("EUC-KR");

name = request.getParameter("name");// html파일에서 값을 가져온다.

id = request.getParameter("id");

pw = request.getParameter("pw");

phone1 = request.getParameter("phone1");

phone2 = request.getParameter("phone2");

phone3 = request.getParameter("phone3");

gender = request.getParameter("gender");

String query = "insert into member values('" + id + "', '" + pw + "', '" + name + "', '" + phone1 + "', '" + phone2 + "', '"+ phone3 + "', '" + gender + "')";// 주의 데이터 값은 작은따음표로 넣어야 한다. 스트링이 있기때문에 작은따음표안에 큰따음표가 있다.

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oracle" , "scott" , "tiger");

                                                                                                 url,uid,upw

stmt = connection.createStatement();

int i = stmt.executeUpdate(query);// resultset객체가 필요하지 않다. 값을 넣고 끝나기때문에 update메소드사용

if(i == 1){ 정상적으로 반환되면 1이 반환

System.out.println("insert success");

response.sendRedirect("joinResult.jsp");// joinReult.jsp로 이동하여 회원가입 완료페이지로 이동

} else {

System.out.println("insert fail");// 실패했을경우

response.sendRedirect("join.html");

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if(stmt != null) stmt.close();

if(connection != null) connection.close();

} catch (Exception e) {}

}

}


}


joinResult.html


<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>


회원가입이 정상 처리 되었습니다.<br />

<a href="login.html">로그인</a>


</body>

</html>

실재로 db접속하면 내역이 보인다.


login.html


<!DOCTYPE html>

<html>

<head>

<meta charset="EUC-KR">

<title>Insert title here</title>

</head>

<body>


<form action="LogInOk" method="post">

아이디 : <input type="text" name="id"><br />

비밀번호 : <input type="text" name="pw"><br />

<input type="submit" value="로그인">  // 로그인 버튼을 누르면 LoginOk페이지로 이동

</form>


</body>

</html>



LogInOk.java


package com.javalec.ex;


import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

import java.util.Arrays;


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 LogInOk

 */

@WebServlet("/LogInOk")

public class LogInOk extends HttpServlet {

private static final long serialVersionUID = 1L;

private Connection connection;

private Statement stmt;

private ResultSet resultSet;

private String name, id, pw, phone1, phone2, phone3, gender;

       

    /**

     * @see HttpServlet#HttpServlet()

     */

    public LogInOk() {

        super();

        // TODO Auto-generated constructor stub

    }


/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

actionDo(request, response);

}


/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

actionDo(request, response);

}

private void actionDo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

id = request.getParameter("id");

pw = request.getParameter("pw");

String query = "select * from member where id = '" + id + "' and pw = '" + pw + "'";// 아이디와 pw가 같은값을 가져온다.

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe" , "scott" , "tiger");

stmt = connection.createStatement();

resultSet =  stmt.executeQuery(query);

while (resultSet.next()) {

name = resultSet.getString("name");

id = resultSet.getString("id");

pw = resultSet.getString("pw");

phone1 = resultSet.getString("phone1");

phone2 = resultSet.getString("phone2");

phone3 = resultSet.getString("phone3");

gender = resultSet.getString("gender");

}

HttpSession httpSession = request.getSession();// 브라우저 하나당 각각의 섹션이 존재한다.

httpSession.setAttribute("name", name);

httpSession.setAttribute("id", id);

httpSession.setAttribute("pw", pw);

response.sendRedirect("loginResult.jsp");// 로그인이 완료되었다고 보냄

} catch (Exception e) {

e.printStackTrace();

} finally {

try {자원해제

if(resultSet != null) resultSet.close();

if(stmt != null) stmt.close();

if(connection != null) connection.close();

} catch (Exception e2) {

e2.printStackTrace();

}

}

}


}




logout.jsp


<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<%

session.invalidate(); //세션을 유효하지 않은 상태로 변환

response.sendRedirect("login.html");// 로그인 페이지로 이동

%>

</body>

</html>


loginResult.jsp


<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

    

    <%!

    String name, id, pw;

    %>

    

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>


<%

name = (String)session.getAttribute("name"); 세션은 오브젝트 값이 String으로 캐스팅변환한다.

id = (String)session.getAttribute("id");

pw = (String)session.getAttribute("pw");

%>

<%= name %>님 안녕하세요 <br />

<a href="modify.jsp">회원정보 수정</a> modify.jsp로 이동

</body>

</html>


modify.jsp



<%@page import="java.sql.DriverManager"%>

<%@page import="java.sql.ResultSet"%>

<%@page import="java.sql.Statement"%>

<%@page import="java.sql.Connection"%>

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

    

    <%!

    Connection connection;

    Statement statement;

    ResultSet resultSet;

    

    String name, id, pw, phone1, phone2, phone3, gender;

    %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<%

id = (String)session.getAttribute("id");//로그아웃하지 않았으므로 세션으로부터 id값을 가져온다.

String query = "select * from member where id = '" + id + "'";//단 id가 같은것만

Class.forName("oracle.jdbc.driver.OracleDriver");

connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oracle" , "scott" , "tiger");

statement = connection.createStatement();

resultSet =  statement.executeQuery(query);

while(resultSet.next()) {

name = resultSet.getString("name");

pw = resultSet.getString("pw");

phone1 = resultSet.getString("phone1");

phone2 = resultSet.getString("phone2");

phone3 = resultSet.getString("phone3");

gender = resultSet.getString("gender");

}

%>

<form action="ModifyOk" method="post">

이름 : <input type="text" name="name" size="10" value=<%=name %>><br />

아이디 : <%=id %><br /> //변경못함

비밀번호 : <input type="text" name="pw" size="10"><br />

전화번호 : <select name="phone1">// 그대로 출력

<option value="010">010</option>

<option value="016">016</option>

<option value="017">017</option>

<option value="018">018</option>

<option value="019">019</option>

<option value="011">011</option>

</select> - 

<input type="text" name="phone2" size="5" value=<%=phone2 %>//참조하므로 expression> - <input type="text" name="phone3" size="5" value=<%=phone3 %>참조하므로 expression> <br />

<%

if(gender.equals("man")) {성별이 남자이면 기본적으로 남자로 표시된다.

%>

성별구분 : <input type="radio" name="gender" value="man" checked="checked">남 &nbsp;<input type="radio" name="gender" value="woman">여 <br />

<%

} else {

%>

성별구분 : <input type="radio" name="gender" value="man" >남 &nbsp;<input type="radio" name="gender" value="woman" checked="checked">여 <br />

<%

}

%>

<input type="submit" value="정보수정"> <input type="reset" value="취소">

</form>


</body>

</html>



Modify.java


package com.javalec.ex;


import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.Statement;


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 ModifyOk

 */

@WebServlet("/ModifyOk")

public class ModifyOk extends HttpServlet {

private static final long serialVersionUID = 1L;

    

private Connection connection;

private Statement stmt;

private String name, id, pw, phone1, phone2, phone3, gender;

HttpSession httpSession;

    /**

     * @see HttpServlet#HttpServlet()

     */

    public ModifyOk() {

        super();

        // TODO Auto-generated constructor stub

    }


/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

actionDo(request, response);

}


/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

actionDo(request, response);

}

private void actionDo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("EUC-KR");

httpSession = request.getSession();

name = request.getParameter("name");

id = request.getParameter("id");

pw = request.getParameter("pw");

phone1 = request.getParameter("phone1");

phone2 = request.getParameter("phone2");

phone3 = request.getParameter("phone3");

gender = request.getParameter("gender");

if(pwConfirm()){

System.out.println("OK");

String query = "update member set name ='" + name + "', phone1= '" + phone1 + "', phone2 = '" + phone2 + "', phone3 = '" + phone3 + "', gender = '" + gender + "'";

// System.out.println(query);

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe" , "scott" , "tiger");

stmt = connection.createStatement();

int i = stmt.executeUpdate(query);

if(i ==1 ){

System.out.println("update success");

httpSession.setAttribute("name", name);//이름이 수정될수 있으므로

response.sendRedirect("modifyResult.jsp"); //수정완료되었다는 페이지로 이동

} else {

System.out.println("update fail");

response.sendRedirect("modify.jsp");//id, pw가 일치하지 않으면 다시 수정페이지로 이동

}

} catch(Exception e) {

e.printStackTrace();

} finally {

try {

if(stmt != null) stmt.close();

if(connection != null) connection.close();

} catch (Exception e) {}

}

} else {

System.out.println("NG"); //id,pw가 일치하지 않으면 ng

}

}

private boolean pwConfirm() {

boolean rs = false;

String sessionPw =  (String)httpSession.getAttribute("pw");  사용자가 입력한 pw하고 db에 있는 pw가 일치하는지 확인

if(sessionPw.equals(pw)) {

rs = true;  ///id, pw가 일치하는지 확인한다. 맞으면 DB에서 업데이트해서 진행

} else {

rs = false;// ng메세지를 발생한다. redirect해서 적당한 페이지로 보낸다.

}

return rs;

}


}


'프로그래밍 > jsp' 카테고리의 다른 글

EL(Expression Language)  (477) 2017.12.19
파일업로드  (484) 2017.12.18
20. 커넥션풀(DAO,DTO, PrepaaredStatement, 커넥션풀)  (487) 2017.12.08
데이터베이스-2  (1211) 2017.10.27
데이터베이스 -1  (1199) 2017.10.26