오늘의 할일
- Servlet과 jpa를 활용한 홈페이지_1
Servlet 활용 웹 페이지
- 스프링을 본격적으로 활용하기 이전 서블릿을 활용한 간단한 웹 페이지 구성
간단한 틀
- 로그인 페이지와 메인 페이지
- 로그인 - DB를 구축하지 않아 임시로 admin 계정에 한해 로그인 가능.
- 메인 - top,menu,main,footer로 간단한 구역을 나누어둠
- top 부분에서는 로그인,로그아웃 버튼 활용 및 로그인시 사용자의 아이디를 포함한 환영 문구 출력
- session을 활용하여 사용자의 로그인 상태 유지, 로그아웃을 통해 세션 소멸
페이지 이동
- 로그인 페이지( 로그인 성공, 실패)
- 성공시 세션에 id값 저장/ redirection을 통한 페이지 이동
- 실패시 request에 msg값 저장 및 foward를 통해 아이디/비밀번호 오류 메세지를 로그인 페이지에 출력
- 메인
- top영역에 로그인/ 로그아웃 버튼 활성화
- session의 값을 활용해(NULL구분) 있으면 로그인/로그아웃 버튼 활성
- 로그아웃은 form태그의 action을 활용하여 logout 호출
- 로그인은 button의 onclick을 활용해 로그인 페이지로 이동
- top영역에 로그인/ 로그아웃 버튼 활성화
코드
LoginServlet
더보기
package mypage;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/login")
public class LoginServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
public LoginServlet() {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
if(id.equals("admin") && pwd.equals("1234")) {
//로그인 성공
HttpSession session = request.getSession();
session.setAttribute("id", id);
session.setMaxInactiveInterval(30*60); //30분
response.sendRedirect("/home.jsp");
}else {
//로그인 실패
request.setAttribute("msg", "id or pwd error.");
RequestDispatcher reqDis = request.getRequestDispatcher("/login.jsp");
reqDis.forward(request, response);
}
}
}
LogoutServlet
더보기
package mypage;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(false);
if (session != null) {
session.invalidate(); // 세션 무효화
}
response.sendRedirect("/login.jsp"); // 로그인 페이지로 리다이렉트
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
home.jsp
더보기
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
--스타일 코드 생략
</style>
</head>
<body>
<%
String userId = (session != null) ? (String) session.getAttribute("id") : null;
%>
<div id="top">
<h1>My Home Page</h1>
<%
if (userId != null) {
%>
<p>
Welcome,
<%= userId %>!
</p>
<form action="logout" method="post">
<button type="submit">Logout</button>
</form>
<%
} else {
%>
<button type="button" onclick="location.href='/login.jsp'">Login</button>
<%
}
%>
</div>
<div id="menu">
<ul>
<li><a href="">menu1</a></li>
<li><a href="">menu2</a></li>
<li><a href="">menu3</a></li>
<li><a href="">menu4</a></li>
<li><a href="">menu5</a></li>
</ul>
</div>
<div id="main"></div>
<div id="footer"></div>
</body>
</html>
login.jsp
더보기
<%@ page language ="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
--- 스타일 생략
</style>
</head>
<body>
<h2>Login</h2>
<%
String msg = (String)request.getAttribute("msg");
String id = (String)request.getAttribute("id");
if(msg!=null){
%>
<label><b><%=msg%></b></label>
<%
}
%>
<form action="/login" method="post">
<div class="container">
<label for="id"><b>id</b></label>
<input type="text" placeholder="Enter ID" name="id" required>
<label for="psw"><b>Password</b></label>
<input type="password" placeholder="Enter Password" name="pwd" required>
<button type="submit">Login</button>
<button type="button" onclick="location.href='/home.jsp'">Home</button>
</div>
</form>
</body>
</html>
'TIL' 카테고리의 다른 글
2025_02_17 TIL (0) | 2025.02.17 |
---|---|
2025_02_14 TIL (0) | 2025.02.14 |
2025_02_12 TIL (1) | 2025.02.13 |
2025_02_11 TIL (0) | 2025.02.11 |
2025_02_07 TIL (0) | 2025.02.07 |