본문 바로가기
학교 공부/웹(Web)

[웹프로그래밍] 웹 프로그래밍 - 7번째 수업

by krapoi 2022. 4. 27.
반응형

오늘(2022-04-26) 수업한 내용은 로그인 만들기이다.

 

먼저 저번에 만들었던 nav를 조금 수정해 주어야 한다.

이렇게 form에 action을 추가해 주고, 로그인 버튼의 타입을 submit으로 바꿔 주었다.

 

그리고 loginproc을 만들어 주자.

이렇게 작성하였다.

그리고 이제 loginchk메서드를 만들러 DBManager에 가야 한다.

 

loginchk는 이렇게 만들어 주었다.

저기 있는 getcon()은 

이렇게 생겼다.

 

그러면

잘 나오는 것을 볼 수 있다.

이제 사진에서 보이는 것처럼 로그아웃을 만들어 주러 가자.

먼저 nav를 고쳐준다.

 

 

이렇게

그다음 Logout.jsp를 만들어 준 다음,

작성해 주자.

이렇게 작성되어 있다.

 

그러면 잘 로그아웃이 되는 것을 볼 수 있다.

 

그렇게 회원관리 사이트에 대해서 끝이 났다. 

 

이제 게시판을 만들어 볼 것이다.

먼저 새로운 프로젝트를 만들어 준다.

그다음 똑같이 webapp에 index.jsp를 만들어 준다.

그다음 나는 Bootstrap 5를 이용할 것이기 때문에 

https://www.w3schools.com/bootstrap5/index.php

 

Bootstrap 5 Tutorial

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

위 링크에서 css link를 가져와 준다.

이렇게 넣어주면 된다.

 

그리고 이걸로 게시판을 작성하였다.

코드는 아래와 같다.

실행해 보면

 

잘 뜨게 된다.

이렇게 오늘 수업이 끝나게 되었다.

 

소스 코드

회원 관리 시스템

nav.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
	pageEncoding="EUC-KR"%>
<div class="container">
	<ul>
		<li><a href="index.jsp">index</a></li>
		<li><a href="insert.jsp">insert</a></li>
		<li><a href="select.jsp">select</a></li>
	</ul>
	<div>
	<%
		String username = (String) session.getAttribute("username");
		if(username == null){
		%>
			<form action="loginproc.jsp">
				<table>
					<tr>
						<td>id</td>
						<td><input type="text" name="username" /></td>
						<td rowspan="2"><input type="submit" value="로그인" /></td>
					</tr>
					<tr>
						<td>pw</td>
						<td><input type="text" name="password" /></td>
	
					</tr>
				</table>
			</form>
		
		<% 
		}else{
			out.println(username + "Login");
	%>
		<a href="Logout.jsp">로그아웃</a>
		<%
		}
		%>
	</div>
</div>

 

loginproc.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
	pageEncoding="EUC-KR"%>
<%@page import="ex0405.MemberDBManager"%>
<%
	String username = request.getParameter("username");
	String pw = request.getParameter("password");
	
	MemberDBManager m = new MemberDBManager();
	
	boolean ret = m.loginchk(username, pw);
	
	if(ret){
		session.setAttribute("username", username);
		response.sendRedirect("index.jsp");
	}
	else{
		out.println("<script>");
		out.println("alert('아이디 비밀번호 확인 하세요')");
		out.println("location.href='index.jsp';");
		out.println("</script>");
		}
	
%>

 

Logout.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	session.invalidate();

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

 

MemberDBManager.java

package ex0405;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.mysql.cj.protocol.Resultset;

public class MemberDBManager {

	private static String classname = "com.mysql.cj.jdbc.Driver";
	private static String url = "jdbc:mysql://localhost:3306/aaa";
	private static String user = "root";
	private static String password = "wnwnqj11";

	public Connection getcon() throws ClassNotFoundException, SQLException {
		Class.forName(classname);
		Connection c = DriverManager.getConnection(url,user,password);
		return c;
	}

	public void doInsert(String user, String pass) {
		Connection con;
		PreparedStatement pstmt;

		try {
			Class.forName(classname);
			con = DriverManager.getConnection(url, this.user, password);
			pstmt = con.prepareStatement("insert into member (username,password) values (?,?)");
			pstmt.setString(1, user);
			pstmt.setString(2, pass);

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

	public List<Member> doSelect() {
		ArrayList<Member> al = new ArrayList<Member>();
		Connection con;
		PreparedStatement pstmt;
		ResultSet rs;

		try {
			Class.forName(classname);
			con = DriverManager.getConnection(url, this.user, password);
			pstmt = con.prepareStatement("select * from member");
			rs = pstmt.executeQuery();
			while (rs.next()) {
				Member m = new Member();
				m.setId(rs.getInt("id"));
				m.setUsername(rs.getString("username"));
				m.setPassword(rs.getString("password"));
				al.add(m);
			}

		} catch (Exception e) {

		}

		return al;
	}

	public String dodelete(String[] ids) {

		Connection con = null;
		PreparedStatement pstmt = null;
		String dids = ids[0];

		for (int i = 1; i < ids.length; i++)
			dids += "," + ids[i];

		try {
			Class.forName(classname);
			con = DriverManager.getConnection(url, user, password);

			pstmt = con.prepareStatement("delete from member " + " where id in (" + dids + ")");
			pstmt.executeUpdate();
			return "OK";
		} catch (Exception e) {
			e.printStackTrace();
			return "Bad request";
		}
	}

	public Member doselectone(String id) {
		Member m = new Member();
		Connection con;
		PreparedStatement pstmt;
		ResultSet rs;

		try {
			Class.forName(classname);
			con = DriverManager.getConnection(url, user, password);
			pstmt = con.prepareStatement("select * from member where id = " + "\"" + id + "\"");

			rs = pstmt.executeQuery();
			while (rs.next()) {
				m.setId(rs.getInt("id"));
				m.setUsername(rs.getString("username"));
				m.setPassword(rs.getString("password"));
			}
			return m;
		} catch (Exception e) {
			e.printStackTrace();
			return m;
		}

	}

	public void doupdate(String name, String pw, String id) {
		Connection c;
		PreparedStatement p;
		ResultSet r;

		try {
			Class.forName(classname);
			c = DriverManager.getConnection(url, user, password);
			p = c.prepareStatement("update member set username = " + "\'" + name + "\'," + "password = " + "\'" + pw
					+ "\'" + "where id = ?");
			p.setInt(1, Integer.parseInt(id));

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

	public boolean loginchk(String username, String pw) {
		Connection c = null;
		PreparedStatement p = null;
		ResultSet s = null;
		
		try {
			c = getcon();
			p = c.prepareStatement("select * from member where username = ? and password = ?");
			p.setString(1, username);
			p.setString(2, pw);
			s = p.executeQuery();
			if(s.next()) {
				System.out.println("데이터 베이스에 있음...");
				return true;
			}
		}catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}
}

 

 

게시판

index.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<!-- Latest compiled and minified CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">

<!-- Latest compiled JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

</head>
<body>
<div class="container">
	<div class="mt-3 p-5 bg-primary text-white rounded">
	
		<h1>자유게시핀</h1>
		<p>안녕하세요 자유게시핀을 만들 예정이빈다, 회원관리 만들때보다 더 예쁘게 만드러 봅시다ㅏㅏㅏ</p>
	
	</div>
	<div class="row">
		<div class="col bg-success">
			col-1
		</div>
		<div class="col bg-dark">
			co1-2
		</div>
		<div class="col bg-primary">
			col-3
		</div>
	</div>
</div>

</body>
</html>
반응형