반응형
서블릿은 get과 post 메소드가 나뉘어져 있기 때문에 하나의 가상경로로 메소드 다르게 두번 사용할 수 있다
주로 get은 화면출력용 포워드를 처리하며 post는 데이터 처리 후 리다이렉트를 담당한다
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="jspservlet.vo.*" %>
<%
UserVO loginUser = null;
if(session.getAttribute("loginUser") != null){
loginUser = (UserVO)session.getAttribute("loginUser");
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<h2>서블릿 연습 프로젝트!</h2><hr>
<h3>가상경로 연습하기</h3>
<a href="<%= request.getContextPath() %>/seconde.do">seconde.do로 이동하기</a>
<!-- 화면에 seconde.do servlet page!! 출력 -->
|
<a href="<%= request.getContextPath() %>/board/list.do">/board/list.do로 이동하기</a>
<!-- 화면에 board/list.do servlet page!! 출력 -->
<br>
<%
if(loginUser != null){
%>
[<strong><%= loginUser.getUid() %></strong>]님 환영합니다.
<a href="<%= request.getContextPath() %>/logout.do">로그아웃</a>
<a href="<%= request.getContextPath() %>/mypage.do">내 정보 확인</a>
<%
}else{
%>
<a href="<%= request.getContextPath() %>/login.do">로그인</a>
<%
}
%>
</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>login</title>
</head>
<body>
<h2>로그인</h2><hr>
<form action="login.do" method="post">
<input type="text" name="uid" placeholder="아이디"><br>
<input type="password" name="upw" placeholder="비밀번호"><br>
<button>로그인</button>
</form>
</body>
</html>
LoginController.java
package jspservlet.controller;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
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;
import jspservlet.util.DBConn;
import jspservlet.vo.UserVO;
/**
* Servlet implementation class LoginController
*/
@WebServlet("/login.do")
public class LoginController extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LoginController() {
super();
// TODO Auto-generated constructor stub
}
/*
서블릿은 get과 post 메소드가 나뉘어져 있기 때문에
하나의 가상경로로 메소드 다르게 두번 사용할 수 있다
주로 get은 화면출력용 포워드를 처리하며
post는 데이터 처리 후 리다이렉트를 담당한다
*/
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.getRequestDispatcher("/user/login.jsp").forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//doGet(request, response);
//로그인 처리 메소드
//1.파라미터 아이디,패스워드 찾기
String uid = request.getParameter("uid");
String upw = request.getParameter("upw");
Connection conn = null; //DB 연결
PreparedStatement psmt = null; //SQL 등록 및 실행. 보안이 더 좋음!
ResultSet rs = null; //조회 결과를 담음
//try 영역
try{
conn = DBConn.conn();
String sql = "select * from user where uid=? and upw=?";
psmt = conn.prepareStatement(sql);
psmt.setString(1, uid);
psmt.setString(2, upw);
rs = psmt.executeQuery();
if(rs.next()){
//로그인 성공
/*
int uno = rs.getInt("uno");
String uname = rs.getString("uname");
String uauthor = rs.getString("uauthor");
*/
UserVO loginUser = new UserVO();
loginUser.setUno(rs.getString("uno"));
loginUser.setUname(rs.getString("uname"));
loginUser.setUauthor(rs.getString("uauthor"));
loginUser.setUid(uid);
//로그인 정보 session에 저장
HttpSession session = request.getSession();
session.setAttribute("loginUser", loginUser);
response.sendRedirect(request.getContextPath());
}else {
//로그인 실패할 경우
response.sendRedirect(request.getContextPath()+"/login.do");
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
DBConn.close(rs, psmt, conn);
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
반응형
'Java' 카테고리의 다른 글
[Servlet] 공지 게시글 목록 조회하기 (0) | 2024.10.11 |
---|---|
[Servlet] 로그인한 회원의 회원 정보 조회 (0) | 2024.10.10 |
[JSP] 회원정보 조회하고 수정하기 (0) | 2024.10.08 |
[Servlet] 모델2 MVC (4) | 2024.10.07 |
[JSP] 모델1로 회원가입하기 (0) | 2024.10.06 |