728x90

MemeberBean.java

package kr.co.bit.dto;

public class MemberBean {
    private String name;
    private String userid;
    private String pwd;
    private String email;
    private String phone;
    private int admin;
    
    @Override
    public String toString() {
       return name+","+userid+"";
    }
    
    public String getName() {
       return name;
    }
    public void setName(String name) {
       this.name = name;
    }
    public String getUserid() {
       return userid;
    }
    public void setUserid(String userid) {
       this.userid = userid;
    }
    public String getPwd() {
       return pwd;
    }
    public void setPwd(String pwd) {
       this.pwd = pwd;
    }
    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 int getAdmin() {
       return admin;
    }
    public void setAdmin(int admin) {
       this.admin = admin;
    }
    

}

 

MemberDAO.java

package kr.co.bit.dao;

import kr.co.bit.dto.MemberBean;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;



public class MemberDAO {
    private MemberDAO() {

    }

    private static MemberDAO instance = new MemberDAO();

    public static MemberDAO getInstance() {
       return instance;
    }

    public Connection getConnection() throws Exception {
       Connection conn = null;
       Context init = new InitialContext();
       DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/pool");
       conn = ds.getConnection();

       return conn;
    }

    public int userCheck(String id, String pwd) {
       int result = -1;
       String sql = "select pwd from member2 where userid=?";
       Connection conn = null;
       PreparedStatement pstmt = null;
       ResultSet rs = null;

       try {
          conn = getConnection();
          pstmt = conn.prepareStatement(sql);
          pstmt.setString(1, id);
          rs = pstmt.executeQuery();

          if (rs.next()) { // 아이디가 일치하는 행이 있다면
             if (rs.getString("pwd") != null && rs.getString("pwd").equals(pwd)) { // 비밀번호 확인
                result = 1;
             } else { // 아이디가 일치하지만 비밀번호가 불일치
                result = 0;
             }
          } else { // 아이디가 존재하지 않으면
             result = -1;
          }
       } catch (Exception e) {
          e.printStackTrace(); // 예외 처리 추가
       } finally {
          try {
             if (rs != null) rs.close();
             if (pstmt != null) pstmt.close();
             if (conn != null) conn.close();
          } catch (Exception e) {
             e.printStackTrace(); // 예외 처리 추가
          }
       }
       return result;
    }

    // 아이디 기준으로 회원정보 가져오기
    public MemberBean getMember(String userid) {
       MemberBean bean = null;

       String sql = "select * from member2 where userid=?";
       Connection conn = null;
       PreparedStatement pstmt = null;
       ResultSet rs = null;

       try {
          conn = getConnection();
          pstmt = conn.prepareStatement(sql);
          pstmt.setString(1, userid);
          rs = pstmt.executeQuery();

          if (rs.next()) {
             bean = new MemberBean();
             bean.setName(rs.getString("name"));
             bean.setUserid(rs.getString("userid"));
             bean.setPwd(rs.getString("pwd"));
             bean.setEmail(rs.getString("email"));
             bean.setPhone(rs.getString("phone"));
             bean.setAdmin(rs.getInt("admin"));
          }
       } catch (Exception e) {
          e.printStackTrace(); // 예외 처리 추가
       } finally {
          try {
             if (rs != null) rs.close();
             if (pstmt != null) pstmt.close();
             if (conn != null) conn.close();
          } catch (Exception e) {
             e.printStackTrace(); // 예외 처리 추가
          }
       }
       return bean;
    }

    public int checkID(String userid) {
       int result = -1;
       String sql = "SELECT count(*) as cnt FROM member2 WHERE userid=?";
       Connection conn = null;
       PreparedStatement pstmt = null;
       ResultSet rs = null;

       try {
          conn = getConnection();
          pstmt = conn.prepareStatement(sql);
          pstmt.setString(1, userid);
          rs = pstmt.executeQuery();

          if (rs.next()) {
             result = -1;
          }else{
             result = 1;
          }
       } catch (Exception e) {
          e.printStackTrace();
       } finally {
          try {
             if (rs != null) rs.close();
             if (pstmt != null) pstmt.close();
             if (conn != null) conn.close();
          } catch (Exception e) {
             e.printStackTrace();
          }
       }

       return result;
    }
}

 

JoinServlet.java

package kr.co.bit.controller;

import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.WebServlet;

import java.io.IOException;

@WebServlet(value = "/join.do") //value는 JSP에서 호출할 이름입니다.
public class JoinServelt extends HttpServlet {
//필드변수를 입력하는 곳입니다.

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html; charset=UTF-8");
        RequestDispatcher dis = request.getRequestDispatcher("join.jsp");
        dis.forward(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html; charset=UTF-8");

        doGet(request, response);

    }
}

 

Login2.java

package kr.co.bit.controller;

import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.WebServlet;
import kr.co.bit.dao.MemberDAO;
import kr.co.bit.dto.MemberBean;
import java.io.IOException;

@WebServlet(value = "/Login2.do") //url 매핑작업
//name은 생략이 가능하다 // value는 JSP에서 호출할 이름입니다. // action을 적으면 됨
public class Login2 extends HttpServlet {
    //필드변수를 입력하는 곳입니다.
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html; charset=UTF-8");
        request.setCharacterEncoding("UTF-8");

        RequestDispatcher dis=request.getRequestDispatcher("login.jsp");
        dis.forward(request, response);
    }


    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html; charset=UTF-8");
        request.setCharacterEncoding("UTF-8"); //do post는 깨질 확률이 높아 하나 더 추가해서 깨짐 방지

        String url="login.jsp";
        String userid=request.getParameter("userid");
        String pwd=request.getParameter("pwd");

        MemberDAO mdao=MemberDAO.getInstance();
        int result=mdao.userCheck(userid, pwd);

        if(result==1) {
            MemberBean mbean=mdao.getMember(userid);
            HttpSession session=request.getSession();
            session.setAttribute("loguser", mbean);
            request.setAttribute("msg", "Success");
            url="main.jsp";
        }
        //비번틀림
        else if(result==0) {
            request.setAttribute("msg", "Incorrect your password");
        }
        else if(result==-1) {
            request.setAttribute("msg", "No exist ID");
        }

        RequestDispatcher dis=request.getRequestDispatcher(url);
        dis.forward(request, response);

    }

}

 

idCheckServlet.java

package kr.co.bit.controller;//Made By Siho

import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.WebServlet;
import kr.co.bit.dao.MemberDAO;

import java.io.IOException;

@WebServlet(name = "idCheckServlet", value = "/idCheck.do")
public class idCheckServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html; charset=UTF-8");

        String userid = request.getParameter("userid");
        MemberDAO mdao = MemberDAO.getInstance();
        int result = mdao.checkID(userid);

        // userid와 result를 request 객체에 저장합니다.
        request.setAttribute("userid", userid);
        request.setAttribute("result", result);

        RequestDispatcher dis = request.getRequestDispatcher("idCheck.jsp");
        dis.forward(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html; charset=UTF-8");

        doGet(request, response);
    }
}

 

join.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script type="text/javascript" src="member.js"></script>
</head>
<body>
<h2>Sign Up</h2>
<form action="join.do" method="post" name="frm">
    Name<input type="text" name="name"><br>
    ID<input type="text" name="userid">
    <input type="hidden" name="reid">
    <input type="button" value="duplication" onclick="idCheck()"><br>
    Password<input type="password" name="pwd"><br>
    Check Password<input type="password" name="pwd_check"><br>
    Email<input type="email" name="email"><br>
    Phone<input type="tel" name="phone"><br>
    Grade <input type="radio" name="admin" value="0" checked="checked">General</input>
    <input type="radio" name="admin" value="1" >Admin</input><br>

    <input type="submit" value="Done" onclick="return joinCheck()">
    ${msg }
</form>

</body>
</html>

 

login.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>
<a href="Login2.do">로그인 페이지</a>
</body>
</html>

 

idCheck.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>
<head>
    <title>ID Duplication Check</title>
</head>
<body>
<h2>ID Duplication Check</h2>
<form action="idCheck.do" method="post" name="frm">
    ID <input type="text" name="userid">
    <input type="submit" value="duplication">
        <c:if test="${result == 1 }">
<%--            <script type = "text/javascript">--%>
<%--                opener.document.frm.userid.value="";--%>
<%--            </script>--%>
            ${userid } is already used!
        </c:if>
        <c:if test="${result == -1 }">
            ${userid } can be used!
        </c:if>

</form>
</body>
</html>

 

main.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:if test="${empty loguser}">
    <jsp:forward page="Login2.do"></jsp:forward>
</c:if>
<head>
    <script type="text/javascript" src="member.js"></script>
</head>
<body>
<form action="Logout.do">
    ${loguser.userid}
    <input type="submit" value="Logout">&nbsp;&nbsp;
    <input type="button" value="Modify" onclick="location.href='memberUpdate.do?userid=${loguser.userid}'">
</form>
</body>
</html>

 

member.js

function idCheck() {
    if (document.frm.userid.value == "") {
        alert("put your ID");
        document.frm.userid.focus();
        return;
    }
    let url = "idCheck.do?userid=" + document.frm.userid.value;
    window.open(url,'팝업','width=500, height=700, scrollbars=yes, resizable=no');}

function check() {
    var userid = document.frm.userid.value;
    var pwd = document.frm.pwd.value;
    
    if (userid == "") {
        alert("put your ID");
        return false;
    }
    
    if (pwd == "") {
        alert("put your password");
        return false;
    }
    
    return true;
}
728x90

'Frameworks > JSP' 카테고리의 다른 글

[JSP] 게시판 CRUD  (0) 2024.04.26
[JSP] Servlet활용한 로그인  (0) 2024.04.25
[JSP] 표현언어(Expression Language)  (0) 2024.04.24
[JSP] 회원정보관리(CRUD)  (0) 2024.04.23
[JSP] 자바 빈 / SQL에 DB넣기  (0) 2024.04.23
728x90

BoardBean.java

package kr.co.bit;

public class BoardBean {

    private int num;
    private String writer;
    private String email;
    private String subject;
    private String password;
    private String reg_date;
    private int ref;
    private int re_step;
    private int re_level;
    private int readcount;
    private String content;

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public String getWriter() {
        return writer;
    }

    public void setWriter(String writer) {
        this.writer = writer;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getReg_date() {
        return reg_date;
    }

    public void setReg_date(String reg_date) {
        this.reg_date = reg_date;
    }

    public int getRef() {
        return ref;
    }

    public void setRef(int ref) {
        this.ref = ref;
    }

    public int getRe_step() {
        return re_step;
    }

    public void setRe_step(int re_step) {
        this.re_step = re_step;
    }

    public int getRe_level() {
        return re_level;
    }

    public void setRe_level(int re_level) {
        this.re_level = re_level;
    }

    public int getReadcount() {
        return readcount;
    }

    public void setReadcount(int readcount) {
        this.readcount = readcount;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}

 

BoardDAO.java

package kr.co.bit;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class BoardDAO {

    Connection con;
    PreparedStatement pstmt;
    ResultSet rs;

    public void getCon() {  //디비 연결작업(DBCP)
        try {
            Context init = new InitialContext();
            DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/pool");
            con = ds.getConnection();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void insertBoard(BoardBean bean) {
        getCon();

        int ref = 0;
        int re_step = 1;
        int re_level = 1;

        try {

            String rsql = "select max(ref) from board";

            pstmt = con.prepareStatement(rsql);
            rs = pstmt.executeQuery();

            if (rs.next()) {
                ref = rs.getInt(1) + 1;
            }

            String sql = "insert into board values(num,?,?,?,?,now(),?,?,?,0,?)";
            pstmt = con.prepareStatement(sql);

            pstmt.setString(1, bean.getWriter());
            pstmt.setString(2, bean.getEmail());
            pstmt.setString(3, bean.getSubject());
            pstmt.setString(4, bean.getPassword());
            pstmt.setInt(5, ref);
            pstmt.setInt(6, re_step);
            pstmt.setInt(7, re_level);
            pstmt.setString(8, bean.getContent());

            pstmt.executeUpdate();
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public int getAllCount() {
        getCon();

        int count = 0;
        try {
            String sql = "select count(*) from board";
            pstmt = con.prepareStatement(sql);
            rs = pstmt.executeQuery();

            if (rs.next()) {
                count = rs.getInt(1);
            }
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return count;
    }

    public BoardBean oneBoard(int num) {
        //조회수 증가, 번호를 기준으로 한 게시글에 대한 정보 가져오기
        BoardBean bean = new BoardBean();
        getCon();

        try {
            String readsql = "update board set readcount=readcount+1 where num=?";
            pstmt = con.prepareStatement(readsql);
            pstmt.setInt(1, num);

            pstmt.executeUpdate();

            String sql = "select *from board where num=?";
            pstmt = con.prepareStatement(sql);
            pstmt.setInt(1, num);

            rs = pstmt.executeQuery();

            if (rs.next()) {
                bean.setNum(rs.getInt(1));
                bean.setWriter(rs.getString(2));
                bean.setEmail(rs.getString(3));
                bean.setSubject(rs.getString(4));
                bean.setPassword(rs.getString(5));
                bean.setReg_date(rs.getDate(6).toString());
                bean.setRef(rs.getInt(7));
                bean.setRe_step(rs.getInt(8));
                bean.setRe_level(rs.getInt(9));
                bean.setReadcount(rs.getInt(10));
                bean.setContent(rs.getString(11));
            }
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return bean;
    }

    public BoardBean oneUpdateBoard(int num) {
        BoardBean bean = new BoardBean();
        getCon();

        try {
            String sql = "select * from board where num=?";
            pstmt = con.prepareStatement(sql);

            pstmt.setInt(1, num);

            rs = pstmt.executeQuery();
            if (rs.next()) {
                bean.setNum(rs.getInt(1));
                bean.setWriter(rs.getString(2));
                bean.setEmail(rs.getString(3));
                bean.setSubject(rs.getString(4));
                bean.setPassword(rs.getString(5));
                bean.setReg_date(rs.getDate(6).toString());
                bean.setRef(rs.getInt(7));
                bean.setRe_step(rs.getInt(8));
                bean.setRe_level(rs.getInt(9));
                bean.setReadcount(rs.getInt(10));
                bean.setContent(rs.getString(11));
            }
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return bean;
    }

    public String getPass(int num) {
        String pass = "";
        getCon();

        try {
            String sql = "select password from board where num=?";
            pstmt = con.prepareStatement(sql);
            pstmt.setInt(1, num);

            rs = pstmt.executeQuery();

            if (rs.next()) {
                pass = rs.getString(1);
            }
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return pass;
    }

    public void updateBoard(BoardBean bean) {
        getCon();

        try {
            String sql = "update board set subject=?,content=? where num=?";
            pstmt = con.prepareStatement(sql);

            pstmt.setString(1, bean.getSubject());
            pstmt.setString(2, bean.getContent());
            pstmt.setInt(3, bean.getNum());

            pstmt.executeUpdate();
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public Vector<BoardBean> allBoard(int startRow, int endRow) {

        Vector<BoardBean> v = new Vector<BoardBean>();
        getCon();

        try {
            String sql = "select * from board order by ref desc, re_step asc limit ?,?";

            pstmt = con.prepareStatement(sql);
            pstmt.setInt(1, startRow - 1);
            pstmt.setInt(2, endRow);

            rs = pstmt.executeQuery();

            while (rs.next()) {
                BoardBean bean = new BoardBean();

                bean.setNum(rs.getInt(1));
                bean.setWriter(rs.getString(2));
                bean.setEmail(rs.getString(3));
                bean.setSubject(rs.getString(4));
                bean.setPassword(rs.getString(5));
                bean.setReg_date(rs.getDate(6).toString());
                bean.setRef(rs.getInt(7));
                bean.setRe_step(rs.getInt(8));
                bean.setRe_level(rs.getInt(9));
                bean.setReadcount(rs.getInt(10));
                bean.setContent(rs.getString(11));

                v.add(bean);
            }
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return v;
    }

    public void deleteBoard(int num) {
        getCon();

        try {
            String sql = "delete from board where num=?";
            pstmt = con.prepareStatement(sql);
            pstmt.setInt(1, num);
            pstmt.executeUpdate();
            con.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void reWriteBoard(BoardBean bean) {

        int ref = bean.getRef();
        int re_step = bean.getRe_step();
        int re_level = bean.getRe_level();

        getCon();

        try {
            String levelsql = "update board set re_level=re_level+1 where ref=? and re_level>?";

            pstmt = con.prepareStatement(levelsql);

            pstmt.setInt(1, ref);
            pstmt.setInt(2, re_level);
            pstmt.executeUpdate();

            String sql = "insert into board values(num,?,?,?,?,now(),?,?,?,0,?)";

            pstmt = con.prepareStatement(sql);

            pstmt.setString(1, bean.getWriter());
            pstmt.setString(2, bean.getEmail());
            pstmt.setString(3, bean.getSubject());
            pstmt.setString(4, bean.getPassword());
            pstmt.setInt(5, ref);
            pstmt.setInt(6, re_step + 1);
            pstmt.setInt(7, re_level + 1);
            pstmt.setString(8, bean.getContent());

            pstmt.executeUpdate();
            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

BoardForm.jsp

BoardForm.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<center>
<form action="BoardWriteForm.jsp" method="post">
    <table width="600" border="1">
        <tr height="40">
            <td width="120" align="center">Writer</td>
            <td width="450"><input type="text" name="writer" size="50"></td>
        </tr>

        <tr height="40">
            <td width="120" align="center">Subject</td>
            <td width="450"><input type="text" name="subject" size="50"></td>
        </tr>

        <tr height="40">
            <td width="120" align="center">Email</td>
            <td width="450"><input type="email" name="email" size="50"></td>
        </tr>

        <tr height="40">
            <td width="120" align="center">Password</td>
            <td width="450"><input type="password" name="password" size="50"></td>
        </tr>

        <tr height="40">
            <td width="120" align="center">Content</td>
            <td width="450"><textarea rows="10" cols="60" name="content" size="50">
            </textarea></td>
        </tr>

        <tr height="40">
            <td align="center" colspan="2"><input type="submit" value="Writing">
                <input type="reset" value="reset">
                <button onclick="location.href='BoardList.jsp'">All Post </button>
        </tr>
    </table>
</form>
</center>
</body>
</html>

 

 

BoardList.jsp

<%@ page import="kr.co.bit.BoardDAO" %>
<%@ page import="kr.co.bit.BoardBean" %>
<%@ page import="java.util.Vector" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<center>
    <h2>All Post</h2>
    <%

        int pageSize = 10; // 페이지당 보여지는 게시글 수

        String pageNum = request.getParameter("pageNum"); // 페이지 번호
        if (pageNum == null) {
            pageNum = "1";
        }

        int count = 0; // 전체 글 갯수 알아내기 위해 설정
        int number = 0;

        BoardDAO bdao = new BoardDAO();
        count = bdao.getAllCount(); // 전체 게시글 개수 읽어온다

        int currentPage = Integer.parseInt(pageNum); // 현재 페이지 번호

        int startRow = (currentPage - 1) * pageSize + 1;
        //         1-1*10+1
        int endRow = currentPage * pageSize; // 1*10

        Vector<BoardBean> vec = bdao.allBoard(startRow, endRow);

        number = count - (currentPage - 1) * pageSize;

    %>
    <table width="800" border="1">
        <tr height="40">
            <td width="50" allign="center">No.</td>
            <td width="420" allign="center">Subject</td>
            <td width="100" allign="center">Writer</td>
            <td width="150" allign="center">Date</td>
            <td width="80" allign="center">Count</td>
        </tr>

        <%
            for (int i = 0; i < vec.size(); i++) {
                BoardBean bean = vec.get(i);
        %>
        <tr height="40">
            <td width="50" align="center"><%=number--%>
            </td>
            <td width="420" align="center">
                <a href="BoardIn.jsp?num=<%=bean.getNum() %>" style="text-decoration: none"> <!-- 글번호 -->

                    <%
                        if (bean.getRe_step() > 1) { // 댓글이 달렸을 때
                            for (int j = 0; j < (bean.getRe_step() - 1) * 5; j++) {
                    %>&nbsp;
                    <%
                        }
                    %>└ <%=bean.getSubject() %> <!-- 답글일때 -->
                    <%
                    } else {
                    %><%=bean.getSubject() %> <!-- 원글일떄 -->
                    <%
                        }
                    %>
                </a></td>


            <td width="100" align="center"><%=bean.getWriter() %>
            </td>
            <td width="150" align="center"><%=bean.getReg_date() %>
            </td>
            <td width="80" align="center"><%=bean.getReadcount() %>
            </td>
        </tr>
        <%
            }
        %>
        <tr height="40">
            <td colspan="5" align="center">
                <input type="button" value="Write" onclick="location.href='BoardForm.jsp'">
            </td>
        </tr>
    </table>

    <%
        if (count > 0) {    //  127 / 10  + 1  =  13
            int pageCount = count / pageSize + (count % pageSize == 0 ? 0 : 1); // 페이지 수 계산
            // 총 페이지 수

            int startPage = 1;

            if (currentPage % 10 != 0) { // currentPage가 11인 경우
                startPage = (int) (currentPage / 10) * 10 + 1; // 한 줄 안에 있는 페이지 개수
            } else { // currentPage가 10인 경우
                startPage = ((int) (currentPage / 10) - 1) * 10 + 1; // 한 �� 안에 있는
            }

            int pageBlock = 10;

            int endPage = startPage + pageBlock - 1;

            if (endPage > pageCount)
                endPage = pageCount;

            //이전이라는 하이퍼링크 만들건지 생각
            if (startPage > 10) {
    %>
    <a href="BoardList.jsp?pageNum=<%=startPage-10 %>">[Before]</a>
    <%
        }
        for (int i = startPage; i <= endPage; i++) {
    %>
    <a href="BoardList.jsp?pageNum=<%=i %>">[<%=i %>]</a>
    <%
        }
        if (endPage < pageCount) {
    %>
    <a href="BoardList.jsp?pageNum=<%=startPage+10 %>">[After]</a>
    <%
            }
        }
    %>
</center>
</body>
</html>

 

 

BoardWriteForm.jsp

<%@ page import="kr.co.bit.BoardDAO" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<center>
<%
    request.setCharacterEncoding("UTF-8");
    response.setContentType("text/html; charset=UTF-8");
%>
<jsp:useBean id="boardbean" class="kr.co.bit.BoardBean">
    <jsp:setProperty name="boardbean" property="*"/>
</jsp:useBean>

<%
    BoardDAO bdao = new BoardDAO();
    bdao.insertBoard(boardbean);

    response.sendRedirect("BoardList.jsp"); // 글쓰기 한 후 바로 글 쓴 목록을 보기 위해서
%>
</center>
</body>
</html>

 

BoardIn.jsp

<%@ page import="kr.co.bit.BoardDAO" %>
<%@ page import="kr.co.bit.BoardBean" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<center>
<%
    // 게시글 상세보기를 하기 위해 BoardList에서 전달받은 num값을 가지고 와서
    int num = Integer.parseInt(request.getParameter("num").trim()); // trim은 공백제거
    BoardDAO bdao = new BoardDAO();
    BoardBean bean = bdao.oneBoard(num); // 한 게시물 상세보기를 한다
%>
<h2>Post of One</h2>
<table width="600" border="1">
    <tr height="40">
        <td width="120" align="center">No.</td>
        <td width="120" align="center"><%=bean.getNum()%>
        </td>
        <td width="120" align="center">Count</td>
        <td width="120" align="center"><%=bean.getReadcount()%>
        </td>
    </tr>

    <tr height="40">
        <td width="120" align="center">Writer</td>
        <td width="120" align="center"><%=bean.getWriter()%>
        </td>
        <td width="120" align="center">Date</td>
        <td width="120" align="center"><%=bean.getReg_date()%>
        </td>
    </tr>

    <tr height="40">
        <td width="120" align="center">Email</td>
        <td width="120" align="center" colspan="3"><%=bean.getEmail()%>
        </td>
    </tr>

    <tr height="40">
        <td width="120" align="center">Subject</td>
        <td width="120" align="center" colspan="3"><%=bean.getSubject()%>
        </td>
    </tr>

    <tr height="40">
        <td width="120" align="center">Content</td>
        <td width="120" align="center" colspan="3"><%=bean.getContent()%>
        </td>
    </tr>

    <tr height="40">
        <td width="200" align="center" colspan="4">

            <input type="button" value="comment"
                   onclick="location.href='ReWriteForm.jsp?num=<%=bean.getNum() %>&ref=<%=bean.getRef() %>&re_step=<%=bean.getRe_step() %>&re_level=<%=bean.getRe_level() %>'">

            <input type="button" value="Modify" onclick="location.href='UpdateForm.jsp?num=<%=bean.getNum()%>'"> <!-- UpdateForm -> 글번호 가지고 -->
            <input type="button" value="Delete" onclick="location.href='DeleteForm.jsp?num=<%=bean.getNum()%>'"> <!-- DeleteForm -> 글번호 -->
            <input type="button" value="List" onclick="location.href='BoardList.jsp'"> <!-- BoardList  -->
        </td>
    </tr>

</table>
</center>
</body>
</html>

 

 

UpdateForm.jsp

<%@ page import="kr.co.bit.BoardDAO" %>
<%@ page import="kr.co.bit.BoardBean" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<center>
<h2>Modify a Post</h2>
<%
    int num = Integer.parseInt(request.getParameter("num"));
    BoardDAO dao = new BoardDAO();
    BoardBean bean = dao.oneUpdateBoard(num);
%>

<form action="UpdateProc.jsp" method="post">
    <table width="600" border="1">
        <tr height="40">
            <td align="center" width="150">Writer</td>
            <td align="center" width="150"><%=bean.getWriter() %>
            </td>

            <td align="center" width="150">Registed Date</td>
            <td align="center" width="150"><%=bean.getReg_date() %>
            </td>
        </tr>

        <tr height="40">
            <td align="center" width="150">Subject</td>
            <td width="150" colspan="3">&nbsp;<input type="text" name="subject" value="<%=bean.getSubject()%>"></td>

        </tr>

        <tr height="40">
            <td align="center" width="150">Password</td>
            <td width="150" colspan="3">&nbsp;
                <input type="password" name="password" value="<%=bean.getPassword()%>"></td>
        </tr>

        <tr height="40">
            <td align="center" width="150">Content</td>
            <td width="150" colspan="3">&nbsp;
                <textarea rows="10" cols="50" name="content"><%=bean.getContent()%></textarea>
            </td>
        </tr>

        <tr height="40">
            <td align="center" colspan="4">
                <input type="hidden" name="num" value="<%=bean.getNum()%>">
                <input type="submit" value="Modify">&nbsp;
                <input type="button" onclick="location.href='BoardList.jsp'" value="All PostList">
            </td>
        </tr>

    </table>
</form>
</center>
</body>
</html>

 

UpdateProc.jsp

<%@ page import="kr.co.bit.BoardDAO" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<body>
<%
    request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="boardbean" class="kr.co.bit.BoardBean">
    <jsp:setProperty property="*" name="boardbean"/>
</jsp:useBean>

<%
    BoardDAO bdao=new BoardDAO();
    String pass=bdao.getPass(boardbean.getNum()); //hidden으로 넘긴값 받는다
    //DB에 있는 값    폼에 입력한 값(수정할 때 적은 비밀번호 값)
    if(pass.equals(boardbean.getPassword())){
        bdao.updateBoard(boardbean);
        response.sendRedirect("BoardList.jsp");
    }
    else{
%>
<script type="text/javascript">
    alert("Incorrect password");
    history.go(-1);
</script>
<%
    }
%>
</body>
</html>

 

 

DeleteForm.jsp

<%@ page import="kr.co.bit.BoardDAO" %>
<%@ page import="kr.co.bit.BoardBean" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<center>
<%
  int num = Integer.parseInt(request.getParameter("num"));
  BoardDAO bdao = new BoardDAO();
  BoardBean bean = bdao.oneUpdateBoard(num); // 삭제하기 전에 삭제하고싶은 게시글의 입력한 정보를 띄우기 위해
%>
<h2>Delete Post</h2>
<form action="DeleteProc.jsp" method="post">
  <table width="600" border="1">
    <tr height="40">
      <td align="center" width="150">Writer</td>
      <td align="center" width="150"><%=bean.getWriter() %>
      </td>

      <td align="center" width="150">Registed Date</td>
      <td align="center" width="150"><%=bean.getReg_date() %>
      </td>
    </tr>

    <tr height="40">
      <td align="center" width="150">Subject</td>
      <td width="150" colspan="3">&nbsp;<input type="text" name="subject" value="<%=bean.getSubject()%>"></td>

    </tr>

    <tr height="40">
      <td align="center" width="150">Password</td>
      <td width="150" colspan="3">&nbsp;
        <input type="password" name="password" value="<%=bean.getPassword()%>"></td>
    </tr>

    <tr height="40">
      <td align="center" colspan="4">
        <input type="hidden" name="num" value="<%=bean.getNum()%>">
        <input type="submit" value="Delete Post">&nbsp;
        <input type="button" onclick="location.href='BoardList.jsp'" value="All PostList">
      </td>
    </tr>
  </table>
</form>
</center>
</body>
</html>

 

DeleteProc.jsp

<%@ page import="kr.co.bit.BoardDAO" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    String pass = request.getParameter("password");

    int num = Integer.parseInt(request.getParameter("num"));

    BoardDAO bdao = new BoardDAO();
    String password = bdao.getPass(num);

    //폼에서 입력한 비번 --- 기존에 글 작성시 입력한 비번
    if (pass.equals(password)) {
        bdao.deleteBoard(num);
        response.sendRedirect("BoardList.jsp");
    } else {
%>
<script type="text/javascript">
    alert("Incorrect Password, Retry again.");
    history.go(-1);
</script>
<%
    }
%>
</body>
</html>

 

 

ReWriteForm.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<center>
<%
    int num=Integer.parseInt(request.getParameter("num"));
    int ref=Integer.parseInt(request.getParameter("ref"));
    int re_step=Integer.parseInt(request.getParameter("re_step"));
    int re_level=Integer.parseInt(request.getParameter("re_level"));
%>
<form action="ReWriteProc.jsp" method="post">
    <table width="600" border="1">
        <tr height="40">
            <td align="center" width="150">Writer</td>
            <td width="450"><input type="text" name="writer" size="50"></td>
        </tr>

        <tr height="40">
            <td align="center" width="150">Subject</td>
            <td width="450"><input type="text" name="subject" size="50"></td>
        </tr>

        <tr height="40">
            <td align="center" width="150">Email</td>
            <td width="450"><input type="email" name="email" size="50"></td>
        </tr>

        <tr height="40">
            <td align="center" width="150">Password</td>
            <td width="450"><input type="password" name="password" size="50"></td>
        </tr>

        <tr height="40">
            <td align="center" width="150">Content</td>
            <td width="450"><textarea rows="10" cols="60" name="content" size="50">
         </textarea></td>
        </tr>

        <tr height="40">
            <td align="center" colspan="2">
                <input type="hidden" name="ref" value="<%=ref%>">
                <input type="hidden" name="re_step" value="<%=re_step%>">
                <input type="hidden" name="re_level" value="<%=re_level%>">

                <input type="submit" value="Reply">
                <input type="reset" value="Cancel">
                <input type="button" onclick="location.href='BoardList.jsp'" value="All Posts">
            </td>
        </tr>
    </table>
</form>
</center>
</body>
</html>

 

ReWriteProc

<%@ page import="kr.co.bit.BoardDAO" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        request.setCharacterEncoding("UTF-8");
    %>

<jsp:useBean id="boardBean" class="kr.co.bit.BoardBean">
    <jsp:setProperty name="boardBean" property="*"/>
</jsp:useBean>

<%
    BoardDAO bdao=new BoardDAO();
    bdao.reWriteBoard(boardBean);

    response.sendRedirect("BoardList.jsp");
%>

</body>
</html>

 

728x90

'Frameworks > JSP' 카테고리의 다른 글

[JSP] 회원로그인 및 중복확인  (0) 2024.04.29
[JSP] Servlet활용한 로그인  (0) 2024.04.25
[JSP] 표현언어(Expression Language)  (0) 2024.04.24
[JSP] 회원정보관리(CRUD)  (0) 2024.04.23
[JSP] 자바 빈 / SQL에 DB넣기  (0) 2024.04.23
728x90

1. MemberBean.java

package bit.dto;

//dao data access object
//dto data transfer object
public class MemberBean {
    private String name;
    private String userid;
    private String pwd;
    private String email;
    private String phone;
    private int admin;

    public String toString() {
        return name + " ," + userid + " ,";
    }

    public String getUserid() {
        return userid;
    }

    public void setUserid(String userid) {
        this.userid = userid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    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 int getAdmin() {
        return admin;
    }

    public void setAdmin(int admin) {
        this.admin = admin;
    }
}

 

2. MemberDAO

package bit.dao;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;


public class MemberDAO {
    //DAO는 DB쪽, spring 에선..
    private MemberDAO() {

    }

    private static MemberDAO instance = new MemberDAO();

    public static MemberDAO getInstance() {
        return instance;
    }

    //싱글톤패턴 => 오로지 한번의 객체생성으로 메모리 효율적 관리목적
    public Connection getConnection() throws Exception {
        Connection conn = null;
        Context init = new InitialContext();
        DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/pool");
        conn = ds.getConnection();
        return conn;
    }

}
<%@ page import="java.sql.Connection" %>
<%@ page import="bit.dao.MemberDAO" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    MemberDAO dao = MemberDAO.getInstance();
    Connection conn =dao.getConnection();
    out.print("연동성공");
%>
</body>
</html>

3. login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<!DOCTYPE html>
<html>
<head>
    <title>Title</title>
  <script type="text/javascript" src="member.js"></script>
</head>
<body>
<h2>로그인</h2>
<form action ="Login2.do" method="post" name ="frm">
  <table>
    <tr>
      <td>아이디</td>
      <td><input type="text" name="userid" value="${userid }"></td>
    </tr>
    <tr>
      <td>비밀번호</td>
      <td><input type="password" name="pwd"></td>
    </tr>
    <tr>
    <td colspan ="2" align="center">
    <input type="submit" value="로그인" onclick="return check()">&nbsp;&nbsp;
    <input type="reset" value="취소">&nbsp;&nbsp;
    <input type="button" value="회원가입" onclick="location.href='join.do'">
  </td>
    </tr>
    <tr>
      <td colspan="2">${msg }</td></tr>
  </table>
</form>

</body>
</html>

 

3-2. loginBegin

<%@ 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>
<a href="Login2.do">로그인 페이지</a>
</body>
</html>

4. Login2

package bit.controller;


import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.WebServlet;
import java.io.IOException;

    @WebServlet(value = "/Login2.do") //value는 JSP에서 호출할 이름입니다. //url 매핑작업
    public class Login2 extends HttpServlet {
//필드변수를 입력하는 곳입니다.

        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html; charset=UTF-8");
            RequestDispatcher dis = request.getRequestDispatcher("login.jsp");
            dis.forward(request,response);

        }

        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html; charset=UTF-8");
        }
    }

 

5. member.js

function check() {
    var userid = document.frm.userid.value;
    var pwd = document.frm.pwd.value;

    if (userid === "") {
        alert("아이디를 입력해주세요.");
        return false;
    }

    if (pwd === "") {
        alert("비밀번호를 입력해주세요.");
        return false;
    }

    return true;
}

 

6. login2.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html>
<html>
<head>
    <title>Title</title>
</head>
<body>
로그인 성공
</body>
</html>

 

728x90

'Frameworks > JSP' 카테고리의 다른 글

[JSP] 회원로그인 및 중복확인  (0) 2024.04.29
[JSP] 게시판 CRUD  (0) 2024.04.26
[JSP] 표현언어(Expression Language)  (0) 2024.04.24
[JSP] 회원정보관리(CRUD)  (0) 2024.04.23
[JSP] 자바 빈 / SQL에 DB넣기  (0) 2024.04.23
728x90
EL (Expression Language)
:
웹 페이지에 표현하는데 사용되는 언어
JSP출력부분을 쉽게 하기 위해 개발한 태그

 

 
 

출력 결과

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%="Hi"%><br>

<% out.print("Hi");%><br>

${"Hi"}<br>
${"10"}<br>
${"4.5"}<br>
${"true"}<br>
${"null"}<br>
${3+4}<br>
${5/3}<br>
${4 div 2}<br>
${5 mod 2}<br>
${5>2}<br>
${(5>2)?5:2}<br>

<%
    String str = null;
%>
${empty str}<br> <!-- 객체가 null인지 확인하기 위한 연산자 -->
${3==3}<br>
${3 eq 3}
</body>
</html>

 

 


 

 

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<center>
    <h2>로그인폼</h2>
    <form action="Login.jsp">
        <table width="400" border="1">

            <tr height="50">
                <td width="150" align="center">ID</td>
                <td><input type="text" name="id" id="userid"></td>

            </tr>

            <tr height="50">
                <td width="150" align="center">Password</td>
                <td><input type="password" name="pw" id="userpw"></td>

            </tr>
        </table>
        <input type="submit" value="Login">
    </form>
</center>
</body>
</html>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        request.setCharacterEncoding("utf-8");
        //고전 방식
        String id = request.getParameter("id");
        String pw = request.getParameter("pw");
    %>
    <%= id%><br>
    <%= pw%><br>

    <%
        out.print("---------------------------------");
    %>
<h2>Expressiong Language</h2>
${param.id}<br>
${param["pw"]}
</body>
</html>

 

 


 

 

EL 표현

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    pageContext.setAttribute("name", "재원");
    request.setAttribute("name", "재영");
    session.setAttribute("name", "지현");
    application.setAttribute("name", "화영");
%>
page 속성 : ${pageScope.name }<hr>
request 속성 : ${requestScope.name }<hr>
seession 속성 : ${sessionScope.name }<hr>
application 속성 : ${applicationScope.name }<hr>

</body>
</html>

 

 


코어태그

종류 설명
<c:out> 데이터 출력할 때 사용하는 태그
<c:set> 변수에 값 설정
<c:if> 조건에 다라 처리를 달리 할 때 사용
<c:choose> 여러 조건에 따라 처리를 달리 할 때 사용
<c:forEach> 반복처리를 위해 사용
<c:import> 외부자원을 url지정해서 가져온다
<c:redirect>  지정한 경로로 이동
<c:catch>  예외처리
<c:remove>  세팅된 값 제거

 


forEach

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    <title>Title</title>
</head>
<body>

<%
    String movie[]={"파묘","쿵푸팬더4","웡카"};
    pageContext.setAttribute("movie",movie);
%>
<c:forEach var="movie" items="${movie }" varStatus="status">
    ${movie}<br>
    ${status.index}<br>
    ${status.count}<br>

</c:forEach>
</body>
</html>

 

 

otherwise

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    <title>Title</title>
</head>
<body>

<%
    String movie[]={"파묘","쿵푸팬더4","웡카"};
    pageContext.setAttribute("movie",movie);
%>
<c:forEach var="movie" items="${movie }" varStatus="status">
   <c:choose>
       <c:when test="${status.first}">
           <li style="color:red">${movie}</li>
       </c:when>
       <c:otherwise>
           <li>${movie }</li>
       </c:otherwise>
   </c:choose>
</c:forEach>
</body>
</html>

formatdate

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<c:set var="now" value="<%=new java.util.Date() %>"></c:set>
${now}<br>
<fmt:formatDate value="${now}"/><br>
date: <fmt:formatDate value="${now}" type="date"/><br>
time: <fmt:formatDate value="${now}" type="time"/><br>
both: <fmt:formatDate value="${now}" type="both"/><br>

<fmt:formatDate value="${now }" pattern="yyyy년 MM월 dd일 hh시"/>
</body>
</html>
728x90

'Frameworks > JSP' 카테고리의 다른 글

[JSP] 게시판 CRUD  (0) 2024.04.26
[JSP] Servlet활용한 로그인  (0) 2024.04.25
[JSP] 회원정보관리(CRUD)  (0) 2024.04.23
[JSP] 자바 빈 / SQL에 DB넣기  (0) 2024.04.23
[JSP] 쿠키(Cookie)와 세션(Session)  (0) 2024.04.22
728x90

 

  • 회원가입 프로세스
    • MemberJoin.jsp: 회원가입 폼을 제공하는 HTML 페이지
    • MemberJoinProc.jsp: 회원가입 폼에서 입력된 데이터를 받아 MemberDAO의 insertMember() 메서드를 호출하여 데이터베이스에 회원 정보를 저장한 후, MemberArray.jsp로 이동
  • 회원 목록 조회
    • MemberArray.jsp: MemberDAO의 allSelectMember() 메서드를 호출하여 모든 회원 정보를 가져와 목록으로 출력
  • 회원 상세 조회
    • MemberInfo.jsp: MemberDAO의 oneMember() 메서드를 호출하여 특정 회원의 상세 정보를 가져와 출력, 수정 및 삭제 버튼 제공
  • 회원 정보 수정
    • MemberUpdate.jsp: 수정할 회원의 정보를 출력하고, 수정 폼을 제공
    • UpdateProc.jsp: 수정 폼에서 입력된 데이터와 기존 비밀번호를 확인한 후, MemberDAO의 getPass() 메서드를 사용하여 비밀번호 일치 여부를 확인. 일치하는 경우 MemberDAO의 updateMember() 메서드를 호출하여 회원 정보를 업데이트한 후, MemberArray.jsp로 이동
  • 회원 정보 삭제
    • MemberDelete.jsp: 삭제할 회원의 정보를 출력하고, 삭제 버튼 제공
    • DeleteProc.jsp: MemberDAO의 getPass() 메서드를 사용하여 비밀번호 일치 여부를 확인. 일치하는 경우 MemberDAO의 deleteMember() 메서드를 호출하여 회원 정보를 삭제한 후, MemberArray.jsp로 이동
  • 데이터 접근 객체 (DAO)
    • MemberDAO.java: 데이터베이스 연결 및 CRUD 작업을 수행하는 클래스
      • insertMember(): 새로운 회원 정보를 데이터베이스에 삽입
      • allSelectMember(): 모든 회원 정보를 조회하여 Vector에 저장
      • oneMember(): 특정 회원의 상세 정보를 조회하여 MemberBean에 저장
      • getPass(): 특정 회원의 비밀번호 일치 여부를 확인
      • updateMember(): 회원 정보를 수정
      • deleteMember(): 회원 정보를 삭제
  • 데이터 전달 객체 (DTO)
    • MemberBean.java: 회원 정보를 저장하고 전달하는 클래스, getter와 setter 메서드 포함

 

 

MemberJoin.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>

<body>

<form action="MemberJoinProc.jsp" method="post">

    <table width="500" border="1">

        <tr height="50">

            <td width="150" align="center">아이디</td>
            <td widht="350" align="center"><input type="text" name="id" size="40"></td>
        
        <tr height="50">

            <td width="150" align="center">패스워드</td>
            <td widht="350" align="center"><input type="password" name="pass1" size="40"></td>
        
        <tr height="50">

            <td width="150" align="center">패스워드확인</td>
            <td widht="350" align="center"><input type="password" name="pass2" size="40"></td>
     
   	  	<tr height="50">

            <td width="150" align="center">이메일</td>
            <td widht="350" align="center"><input type="email" name="email" size="40"></td>
      
      	<tr height="50">

            <td width="150" align="center">전화번호</td>
            <td widht="350" align="center"><input type="tel" name="tel" size="40"></td>
        
        <tr height="50">

            <td width="150" align="center">당신의관심분야</td>
            <td width="350" align="center">
            <input type="checkbox" name="hobby" value="캠핑">캠핑 
            <input type="checkbox" name="hobby" value="등산">등산 
            <input type="checkbox" name="hobby" value="영화">영화
            <input type="checkbox" name="hobby" value="독서">독서
            </td>

        </tr>

        <tr height="50">

            <td width="150" align="center">당신의직업은</td>

            <td width="350" align="center"><select name="job">

                <option value="교사">교사</option>

                <option value="변호사">변호사</option>

                <option value="의사">의사</option>

                <option value="기술사">기술사</option>

            </select></td>

        </tr>

        <tr height="50">

            <td width="150" align="center">당신의연령은</td>

            <td width="350" align="center">
            <input type="radio" name="age" value="10">10대
            <input type="radio" name="age" value="20">20대
            <input type="radio" name="age" value="30">30대
            <input type="radio" name="age" value="40">40대
            </td>

        </tr>

        <tr height="50">

            <td width="150" align="center">하고싶은말</td>

            <td width="350" align="center"><textarea rows="5" cols="40" name="info">
            </textarea></td>

        </tr>

        <tr height="50">

            <td align="center" colspan="2">
            <input type="submit" value="회원가입">
            <input type="reset" value="취소"></td>

        </tr>

    </table>

</form>

</center>

</body>

</html>

 

MemberBean.java

package kr.co.bit;

public class MemberBean {

    private String id;
    private String pass1;
    private String pass2;
    private String email;
    private String tel;
    private String hobby;
    private String job;
    private String age;
    private String info;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPass1() {
        return pass1;
    }

    public void setPass1(String pass1) {
        this.pass1 = pass1;
    }

    public String getPass2() {
        return pass2;
    }

    public void setPass2(String pass2) {
        this.pass2 = pass2;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }
}

 

MemberJoinProc.jsp

<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="kr.co.bit.MemberDAO" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    request.setCharacterEncoding("utf-8");
    String[] hobby=request.getParameterValues("hobby");// hobby 배열 받아오기
    String str=""; //빈 문자열 초기화

    for(int i=0;i<hobby.length;i++){  // 배열 요소 나열해서
        str+=hobby[i]+"";  // 배열요소를 문자열로 집어넣기
    }
%>

<jsp:useBean id="mbean" class="kr.co.bit.MemberBean"> <!-- usebean id 선언, 클래스 참조 지정 -->
    <jsp:setProperty property="*" name="mbean"/> <!-- 객체 속성 지정(property), 객체 이름 지정(name) -->
</jsp:useBean>

<%
    mbean.setHobby(str); //setHobby() 호출해서 str값 전달

    MemberDAO mdao=new MemberDAO(); // Data access Object // mdao 인스턴스 생성
    mdao.insertMember(mbean);  // mdao의 insertMember()호출해서 mbean으로 객체 전달

    //회원가입이 되었다면 회원정보를 보여주는 페이지로 이동
    response.sendRedirect("MemberArray.jsp");
	 //회원가입이 되면 멤버배열화면으로 강제로 이동
%>


</body>

</html>

 

MemberDAO.java

package kr.co.bit;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

public class MemberDAO {

    String id="아이디"; 
    String pw="비밀번호"; 
    String url="jdbc:mysql://localhost:3306/스키마이름";

    Connection conn; //연결
    PreparedStatement pstmt; //실행대기
    ResultSet rs; // sql 쿼리를 실행한 결과를 저장

    public void getCon() { //DB연결을 위한 메소드 설정
        try{
            Class.forName("com.mysql.cj.jdbc.Driver");

            //db에 접속
            conn= DriverManager.getConnection(url,id,pw);
        } catch (Exception e) {}
    }

    public void insertMember(MemberBean mbean) { // MemberBean 객체를 DB에 추가하는 메소드
        try {
            getCon(); // 커넥션 메소드 호출
            String sql="insert into member values(?,?,?,?,?,?,?,?)";

            PreparedStatement pstmt=conn.prepareStatement(sql);

            pstmt.setString(1, mbean.getId());
            pstmt.setString(2, mbean.getPass1());
            pstmt.setString(3, mbean.getEmail());
            pstmt.setString(4, mbean.getTel());
            pstmt.setString(5, mbean.getHobby());
            pstmt.setString(6, mbean.getJob());
            pstmt.setString(7, mbean.getAge());
            pstmt.setString(8, mbean.getInfo());

            pstmt.executeUpdate(); //DB변경 적용

            conn.close(); //DB와 연결 종료

        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public Vector<MemberBean> allSelectMember(){
     // 모든 회원 정보를 데이터베이스에서 조회하여 MemberBean 객체들을 포함한 Vector를 반환하는 메서드
        Vector<MemberBean> v = new Vector<MemberBean>();
   	 //회원 정보를 담을 Vector 객체를 생성
        try {
            getCon();

            String sql="select *from member";
            pstmt=conn.prepareStatement(sql);
            rs=pstmt.executeQuery();
    // 준비된 문을 실행하여 SQL 쿼리를 데이터베이스에 전송하고, 결과를 ResultSet 객체에 저장

            while(rs.next()) {
                MemberBean bean = new MemberBean();

                bean.setId(rs.getString(1));
                bean.setPass1(rs.getString(2));
                bean.setEmail(rs.getString(3));
                bean.setTel(rs.getString(4));
                bean.setHobby(rs.getString(5));
                bean.setJob(rs.getString(6));
                bean.setAge(rs.getString(7));
                bean.setInfo(rs.getString(8));

                v.add(bean); // 테이블에 삽입된 정보들을 다 꺼내서 MemberBean필드에 저장한다, 저장 후 벡터에 삽입
            }
            conn.close();
        }catch (Exception e) {}

        return v; // 벡터 반환
    }

    public MemberBean oneMember(String id) {
        MemberBean bean = new MemberBean();

        try{
            getCon();
            String sql="select *from member where id=?";

            pstmt=conn.prepareStatement(sql);
            pstmt.setString(1, id);
		// SQL 쿼리의 물음표(?) 자리에 문자열 값을 설정하
        // 이 경우에는 첫 번째 물음표 자리에 id 변수에 저장된 문자열 값을 설정
        
            rs=pstmt.executeQuery();

            if(rs.next()){
                bean.setId(rs.getString(1));
                bean.setPass1(rs.getString(2));
                bean.setEmail(rs.getString(3));
                bean.setTel(rs.getString(4));
                bean.setHobby(rs.getString(5));
                bean.setJob(rs.getString(6));
                bean.setAge(rs.getString(7));
                bean.setInfo(rs.getString(8));
            }
        } catch (Exception e) {}
        return bean;
    }

    public String getPassword(String id){ //UpdateProc의 ID(hidden) 받아옴
        String pass = "";
        try{
            getCon();
            String sql="select pass1 from member where id=?";
            pstmt=conn.prepareStatement(sql);
            pstmt.setString(1, id);

            rs= pstmt.executeQuery();

            if(rs.next()){
                pass=rs.getString(1);
            }
            conn.close();
        } catch (Exception e) {}

        return pass;
    }

    public void updateMember(MemberBean mbean) {

        try {
            getCon();
            String sql="update member set email=?, tel=? where id=?";

            pstmt=conn.prepareStatement(sql);

            pstmt.setString(1, mbean.getEmail());
            pstmt.setString(2, mbean.getTel());
            pstmt.setString(3, mbean.getId());

            pstmt.executeUpdate();

            conn.close();

        }catch(Exception e){}
    }
    
     public void deleteMember(MemberBean mbean) {

        try {
            getCon();
            String sql = "delete from member where id=?";

            pstmt = conn.prepareStatement(sql);

            pstmt.setString(1, mbean.getId());

            pstmt.executeUpdate();

            conn.close();

        } catch (Exception e) {}
    }
}

 

MemberArray.jsp

<%@ page import="kr.co.bit.MemberBean" %>
<%@ page import="java.util.Vector" %>
<%@ page import="kr.co.bit.MemberDAO" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    // 모든 회원 정보 가져오기
    MemberDAO mdao = new MemberDAO();

    // 가변길이인 vector를 이용해 데이터를 저장한 후 > 화면에 회원들 정보 출력
    Vector<MemberBean> vec = mdao.allSelectMember();
%>
<center>
    <table width="800" border="1">
        <tr height="50">
            <td width="150" align="center">아이디</td>
            <td width="250" align="center">이메일</td>
            <td width="200" align="center">전화번호</td>
            <td width="200" align="center">취미</td>
        </tr>

        <%
            for (int i = 0; i < vec.size(); i++) {
                MemberBean bean = vec.get(i);

        %>
        <tr height="50">
            <td width="150" align="center">
                <a href="MemberIn.jsp?id=<%=bean.getId() %>"><%=bean.getId() %></a>
            </td>
            <td width="250" align="center"><%=bean.getEmail() %>
            </td>
            <td width="200" align="center"><%=bean.getTel() %>
            </td>
            <td width="200" align="center"><%=bean.getHobby() %>
            </td>
        </tr>
        <%
            }
        %>
    </table>
</center>
</body>
</html>

 

 

MemberIn.jsp

<%@ page import="kr.co.bit.MemberDAO" %>
<%@ page import="kr.co.bit.MemberBean" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--데이터베이스에서 한 회원의 정보를 가져옴--%>
<%
    String id = request.getParameter("id");
    MemberDAO mdao = new MemberDAO();
    MemberBean mbean = mdao.oneMember(id); // 해당하는 id의 회원정보를 리턴받을거임
%>
<center>
    <h2>회원정보 상세보기</h2>
    <table width="400" border="1">
        <tr height="50">
            <td width="150" align="center">아이디</td>
            <td width="250"><%=mbean.getId() %>
            </td>
        </tr>
        <tr height="50">
            <td width="150" align="center">이메일</td>
            <td width="250"><%=mbean.getEmail() %>
            </td>
        </tr>
        <tr height="50">
            <td width="150" align="center">전화번호</td>
            <td width="250"><%=mbean.getTel() %>
            </td>
        </tr>
        <tr height="50">
            <td width="150" align="center">취미</td>
            <td width="250"><%=mbean.getHobby() %>
            </td>
        </tr>
        <tr height="50">
            <td width="150" align="center">직업</td>
            <td width="250"><%=mbean.getJob() %>
            </td>
        </tr>
        <tr height="50">
            <td width="150" align="center">나이</td>
            <td width="250"><%=mbean.getAge() %>
            </td>
        </tr>
        <tr height="50">
            <td width="150" align="center">코멘트</td>
            <td width="250"><%=mbean.getInfo() %>
            </td>
        </tr>

        <tr height="50">
            <td colspan="2" align="center">
                <button onclick="location.href='MemberUpdate.jsp?id=<%=mbean.getId()%>'">Update</button>
                <button onclick="location.href='MemberDelete.jsp?id=<%=mbean.getId()%>'">Delete</button>
                <button onclick="location.href='MemberArray.jsp'">MemberList</button>
                <button onclick="location.href='MemberJoin.jsp'">Sign Up</button>
            </td>
        </tr>
    </table>
</center>
</body>
</html>

 

MemberUpdate.jsp

비밀번호 일치 하지 않을떄

 

<%@ page import="kr.co.bit.MemberDAO" %>
<%@ page import="kr.co.bit.MemberBean" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    String id = request.getParameter("id");
    MemberDAO mdao = new MemberDAO();
    MemberBean mbean = mdao.oneMember(id);
%>
<center>
    <h2>회원정보 수정</h2>
    <table width="400" border="1">
        <form action="UpdateProc.jsp" method="post">
            <tr height="50">
                <td width="150" align="center">아이디</td>
                <td width="250"><%=mbean.getId()%>
                </td>
            </tr>
            <tr height="50">
                <td width="150" align="center">이메일</td>
                <td width="250">
                    <input type="email" name="email" value="<%=mbean.getEmail() %>"> <!-- 직접 입력 할 수 있게 만들기 -->
                </td>
            </tr>
            <tr height="50">
                <td width="150" align="center">전화번호</td>
                <td width="250">
                    <input type="tel" name="tel" value="<%=mbean.getTel() %>">
                </td>
            </tr>
            <tr height="50">
                <td width="150" align="center">비밀번호</td>
                <td width="250">
                    <input type="password" name="pass1">
                </td>
            </tr>
            <tr height="50">
                <td colspan="2" align="center">
                    <input type="hidden" name="id" value="<%=mbean.getId()%>"> <!-- 히든으로 넘겨서 안보임 중요!! -->
                    <input type="submit" value="회원수정">
        </form>

        <button onclick="location.href='MemberArray.jsp'">MemberList</button>

        </td>
        </tr>
    </table>
</center>

</body>
</html>

 

UpdateProc.jsp

<%@ page import="kr.co.bit.MemberDAO" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    request.setCharacterEncoding("UTF-8");
    response.setContentType("text/html; charset=UTF-8");
%>

<jsp:useBean id="mbean" class="kr.co.bit.MemberBean"> <!-- usebean id 선언, 클래스 참조 지정 -->
<jsp:setProperty name="mbean" property="*"/> <!-- 객체 속성 지정(property), 객체 이름 지정(name) -->
</jsp:useBean>

<%
	// 사용자가 입력한 ID 가져오기
    String id = request.getParameter("id");
    MemberDAO mdao = new MemberDAO();

    //DB에서 불러온 Password 가져오기
    String pass = mdao.getPassword(id);

    if(mbean.getPass1().equals(pass)){
        mdao.updateMember(mbean);
        response.sendRedirect("MemberArray.jsp");

        //DB패스워드와 입력패스워드가 같다면 member테이블을 수정할 수 있다.
    }
    else{
        %>
        <script type="text/javascript">
                alert("Not equals your password.");
        history.go(-1);
        </script>
<%
    }
%>

</body>
</html>

 

 

 

MemberDelete.jsp

삭제된것 확인된

<%@ page import="kr.co.bit.MemberDAO" %>
<%@ page import="kr.co.bit.MemberBean" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    String id = request.getParameter("id");
    MemberDAO mdao = new MemberDAO();
    MemberBean mbean = mdao.oneMember(id);
%>
<center>
    <h2>Delete Account</h2>
    <table width="400" border="1">
        <form action="DeleteProc.jsp" method="post">
            <tr height="50">
                <td width="150" align="center">ID</td>
                <td width="250"><%=request.getParameter("id")%>
                </td>
            </tr>
            <tr height="50">
                <td width="150" align="center">Password</td>
                <td width="250">
                    <input type="password" name="pass1">
                </td>
            </tr>
            <tr height="50">
                <td colspan="2" align="center">
                    <input type="hidden" name="id" value="<%=request.getParameter("id") %>"> <!-- 히든으로 넘겨서 안보임 중요!! -->
                    <input type="submit" value="DeleteAccount">
        </form>

        <button onclick="location.href='MemberArray.jsp'">MemberList</button>
    </table>
</center>
</body>
</html>

 

DeleteProc.java

<%@ page import="kr.co.bit.MemberDAO" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    request.setCharacterEncoding("UTF-8");
    response.setContentType("text/html; charset=UTF-8");
%>

<jsp:useBean id="mbean" class="kr.co.bit.MemberBean">
    <jsp:setProperty name="mbean" property="*"/>
</jsp:useBean>

<%
    MemberDAO mdao = new MemberDAO();

    String pass = mdao.getPassword(mbean.getId());

    if(mbean.getPass1() != null && mbean.getPass1().equals(pass)){
        mdao.deleteMember(mbean);
        response.sendRedirect("MemberArray.jsp");
    }
    else{
%>
<script type="text/javascript">
    alert("Not equals your password.");
    history.go(-1);
</script>
<%
    }
%>

</body>
</html>

 

728x90

'Frameworks > JSP' 카테고리의 다른 글

[JSP] Servlet활용한 로그인  (0) 2024.04.25
[JSP] 표현언어(Expression Language)  (0) 2024.04.24
[JSP] 자바 빈 / SQL에 DB넣기  (0) 2024.04.23
[JSP] 쿠키(Cookie)와 세션(Session)  (0) 2024.04.22
[JSP] 액션태그  (0) 2024.04.19
728x90

자바빈이란?

하나의 묶음으로 전송하는 것 (데이터 저장소)
 
  • 프로그램에서 사용되는 정보가 여러 개라면 변수에 저장하고 필요할 때마다 개별적으로 접근해서 사용하기 보다는 필요
  • 한 정보를 객체를 구성하는 멤버로 설정해 두고 한꺼번에 데이터에 접근해서 사용할 수 있음
  • 자바 은닉 개념을 사용해 데이터 손상을 막는다(private)
  • 공개된 메서드를 통해서만 접근(public)
=> 일종의 템플릿 개념

 

자바빈의 액션태그

종류 설명
<jsp:useBean> 자바 빈을 생성한다
(jsp와 자바 빈을 연결하기 위한 자바 빈 객체 생성)
<jsp:getProperty> 자바 빈에서 정보 얻어온다
<jsp:setProperty> 자바 에서 정보 저장한다

 

자바 빈 객체는 데이터를 저장하고 해당 데이터에 접근하는 메서드를 가지고 있는 일종의 자바 클래스

이를 활용하면 JSP에서 데이터를 캡슐화하고 효과적으로 관리할 수 있다

  1. 자바 빈 객체 생성:
    • class: 사용할 자바 빈 클래스의 패키지와 이름을 지정합니다.
    • id: 생성된 자바 빈 객체의 이름을 지정합니다.
    • scope (선택사항): 자바 빈 객체의 사용 범위를 지정합니다. 가능한 값은 page, request, session, application 등이 있습니다. 이는 객체가 어느 영역에서 사용될지를 결정합니다. 이 옵션을 생략하면 기본값인 page가 됩니다.
  2. <jsp:useBean class="패키지이름.클래스이름" id="빈이름" [scope="범위"]/>
  3. id 값과 자바 빈의 속성 이름 일치:
    • id 값은 자바 빈 객체를 식별하는 이름입니다. 이 값은 반드시 자바 빈 클래스 내의 setProperty와 getProperty 메서드의 이름과 일치해야 합니다.
  4. 자바 빈 객체 정보 얻기:
    • name: 자바 빈 객체의 id 값을 지정합니다.
    • property: 얻고자 하는 속성의 이름을 지정합니다. 이를 통해 해당 속성의 값을 얻어올 수 있습니다.
  5. <jsp:getProperty name="id값" property="속성이름"/>

예를 들어, 자바 빈 클래스인 UserBean이 있다고 가정하고, 이를 JSP에서 사용할 경우 다음과 같이 작성할 수 있다:

<jsp:useBean class="com.example.UserBean" id="user" scope="session"/>

<jsp:setProperty name="user" property="name" value="John"/>
<jsp:setProperty name="user" property="age" value="30"/>

Name: <jsp:getProperty name="user" property="name"/><br/>
Age: <jsp:getProperty name="user" property="age"/>

 

위 코드에서는 UserBean 클래스의 객체를 세션 영역에 생성하고, 해당 객체의 속성인 이름과 나이를 설정하고 출력하는 예제입니다.

 
Scope 설명
page 자바 빈은 생성된 페이지 내에서만 접근되어 사용할 수 있음 해당 페이지 내에서만
request 자바 빈이 생성된 요청을 수행하는 페이지들에서 사용할 수 있음 요청 페이지까지
session 자바 빈이 생성된 세션에서 요청을 처리하는 페이지들에서 사용할 수 있음 브라우저 닫히기 전까지
application 자바 빈이 생성된 응용프로그램에 포함된 페이지들에서 사용할 수 있음 톰캣을 restart시켜 서버를 재시작하기 전까지
 

 

 

예시1)

 

sql로 데이터 입력 확인한 결과

 

 

Member.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>

<body>

<form action="MemberJoinProc.jsp" method="post">

    <table width="500" border="1">

        <tr height="50">

            <td width="150" align="center">아이디</td>

            <td widht="350" align="center"><input type="text" name="id"
                                                  size="40"></td>
        <tr height="50">

            <td width="150" align="center">패스워드</td>

            <td widht="350" align="center"><input type="password"
                                                  name="pass1" size="40"></td>
        <tr height="50">

            <td width="150" align="center">패스워드확인</td>

            <td widht="350" align="center"><input type="password"
                                                  name="pass2" size="40"></td>
        <tr height="50">

            <td width="150" align="center">이메일</td>

            <td widht="350" align="center"><input type="email" name="email"
                                                  size="40"></td>
        <tr height="50">

            <td width="150" align="center">전화번호</td>

            <td widht="350" align="center"><input type="tel" name="tel"
                                                  size="40"></td>
        <tr height="50">

            <td width="150" align="center">당신의관심분야</td>

            <td width="350" align="center"><input type="checkbox"
                                                  name="hobby" value="캠핑">캠핑 <input type="checkbox"
                                                                                    name="hobby" value="등산">등산 <input type="checkbox"
                                                                                                                      name="hobby" value="영화">영화 <input type="checkbox"
                                                                                                                                                        name="hobby" value="독서">독서</td>

        </tr>

        <tr height="50">

            <td width="150" align="center">당신의직업은</td>

            <td width="350" align="center"><select name="job">

                <option value="교사">교사</option>

                <option value="변호사">변호사</option>

                <option value="의사">의사</option>

                <option value="기술사">기술사</option>

            </select></td>

        </tr>

        <tr height="50">

            <td width="150" align="center">당신의연령은</td>

            <td width="350" align="center"><input type="radio" name="age"
                                                  value="10">10대 <input type="radio" name="age" value="20">20대

                <input type="radio" name="age" value="30">30대 <input
                        type="radio" name="age" value="40">40대</td>

        </tr>

        <tr height="50">

            <td width="150" align="center">하고싶은말</td>

            <td width="350" align="center"><textarea rows="5" cols="40"
                                                     name="info"></textarea></td>

        </tr>

        <tr height="50">

            <td align="center" colspan="2"><input type="submit"
                                                  value="회원가입"> <input type="reset" value="취소"></td>

        </tr>

    </table>

</form>

</center>

</body>

</html>

 

MemberBean.class

package kr.co.bit;

public class MemberBean {
    private String id;
    private String pass1;
    private String email;
    private String tel;
    private String hobby;
    private String job;
    private String age;
    private String info;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPass1() {
        return pass1;
    }

    public void setPass1(String pass1) {
        this.pass1 = pass1;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }

}

 

MemberJoinProc.jsp

<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    request.setCharacterEncoding("utf-8");
    String[] hobby=request.getParameterValues("hobby");
    String str="";

    //배열에 있는 내용을 하나의 문자열로 저장하겠다
    for(int i=0;i<hobby.length;i++){
        str+=hobby[i]+"";
    }
%>

<!-- useBean을 이용하여 한꺼번에 데이터 받기 -->
<jsp:useBean id="mbean" class="kr.co.bit.MemberBean">
    <jsp:setProperty property="*" name="mbean"/>
</jsp:useBean>

<%
    mbean.setHobby(str);

 	String id="아이디";
	String pw="비밀번호";
	String url="jdbc:mysql://localhost:3306/스키마 이름";

    try{
        Class.forName("com.mysql.cj.jdbc.Driver");

        //db에 접속
        Connection con=DriverManager.getConnection(url,id,pw);
        String sql="insert into member values(?,?,?,?,?,?,?,?)";

        PreparedStatement pstmt=con.prepareStatement(sql);

        //?에 맞게 데이터를 맵핑
        //MemberBean필드에 저장되어 있는 값을 빼 Member테이블 필드에 삽입
        pstmt.setString(1, mbean.getId());
        pstmt.setString(2, mbean.getPass1());
        pstmt.setString(3, mbean.getEmail());
        pstmt.setString(4, mbean.getTel());
        pstmt.setString(5, mbean.getHobby());
        pstmt.setString(6, mbean.getJob());
        pstmt.setString(7, mbean.getAge());
        pstmt.setString(8, mbean.getInfo());

        pstmt.executeUpdate();

        con.close();

    }catch(Exception e){
        e.printStackTrace();
    }
%>
디비완료

</body>

</html>

 

 


예제 2)

itemForm.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="item.jsp">
        name<input type="text" name="name"><br>
        price<input type="text" name="price"><br>
        desc1<input type="text" name="desc1"><br>
        <input type="submit" value="submit">
    </form>

</body>
</html>

 

ItemBean.class

package kr.co.bit;

public class ItemBean {
    private String name;
    private int price;
    private String desc1;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public String getDesc1() {
        return desc1;
    }

    public void setDesc1(String desc1) {
        this.desc1 = desc1;
    }



}

 

item.jsp

<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    response.setContentType("text/html; charset=UTF-8");
    request.setCharacterEncoding("UTF-8");
%>

<jsp:useBean id="item" class="kr.co.bit.ItemBean">
    <jsp:setProperty property="*" name="item"/>
</jsp:useBean>

<%
String id="아이디";
String pw="비밀번호";
String url="jdbc:mysql://localhost:3306/스키마 이름";

try {
    Class.forName("com.mysql.cj.jdbc.Driver");

//db에 접속
    Connection con = DriverManager.getConnection(url, id, pw);
    String sql = "insert into item values(?,?,?)";

    PreparedStatement pstmt = con.prepareStatement(sql);

    pstmt.setString(1, item.getName());
    pstmt.setInt(2, item.getPrice());
    pstmt.setString(3, item.getDesc1());


    pstmt.executeUpdate();

    con.close();

}catch(Exception e){
    e.printStackTrace();
}
%>
db에 <%=item.getName() %>추가했다

</body>
</html>
728x90

'Frameworks > JSP' 카테고리의 다른 글

[JSP] 표현언어(Expression Language)  (0) 2024.04.24
[JSP] 회원정보관리(CRUD)  (0) 2024.04.23
[JSP] 쿠키(Cookie)와 세션(Session)  (0) 2024.04.22
[JSP] 액션태그  (0) 2024.04.19
[JSP] 내부객체  (0) 2024.04.19

+ Recent posts