KDT/WEB

240104 WEB - JSP19(MVC)

001cloudid 2024. 1. 4. 12:51
728x90

MVC

웹 브라우저 주소줄에 가상주소 localhost:8080/MVCProject/insert.me를 입력하면

insert.jsp가 웹 브라우저에 나타나게 가상주소 사용

 

package com.itwillbs.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MemberController extends HttpServlet {

//MemberController 파일을 servlet파일로 지정
//→ MemberController extends HttpServlet(자바내장객체(처리담당자) 상속
//→ 웹 애플리케이션 서버(처리담당서버)가 자동으로 서블릿 메소드 호출
//→ service(), doGet(), doPost(),... 자동으로 호출
//→ doGet(), doPost() 재정의(메소드 오버라이딩)해서 주소매핑 작업 처리

//메소드 오버라이딩(alt + shift + s → v)
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doGet()"); //get방식일 때
//doProcess() 메소드 호출
doProcess(request, response);
}

@Override
protected void doPost(HttpServletRequest requset, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doPost()"); //post방식일 때
//doProcess() 메소드 호출
doProcess(requset, response);
}

//주소 매핑을 위한 메소드 정의
protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doProcess()");
//가상주소 http://localhost:8080/MVCProject/insert.me
//가상주소 뽑아보기 : /insert.me
String sPath = request.getServletPath();
System.out.println("가상주소 뽑아오기 : " + sPath);
//주소 매핑 → 가상주소 비교 → 실제 페이지 연결
if(sPath.equals("/insert.me")) {
System.out.println("가상주소 비교 /insert.me 일치");
//실제페이지 member/insert.jsp 웹 방식 주소가 변경되면서 웹 이동(하이퍼링크)
// response.sendRedirect("member/insert.jsp");
//1) 실제페이지 member/insert.jsp 주소 변경 없이 이동(특이한 이동방식) → 화면만 바뀜.
//액션태그 <jsp:forward> 같은 이동 방식
//2) 이동할 때 request, response 값을 들고 이동
//주소는 그대로 유지되면서 화면만 바뀜. request,response를 가져감
RequestDispatcher dispatcher =request.getRequestDispatcher("member/insert.jsp"); //객체생성을 new로 하지 않음
dispatcher.forward(request, response);
}
}
}

 

그림 1. 주소 변경 없음

웹의 위치가 아니라 가상주소를 기준으로 찾아감. webapp이 루트임.

가상 주소 : http://localhost:8080/MVCProject/insert.me

실제페이지(화면) : http://localhost:8080/MVCProject/member/insert.jsp

 

package com.itwillbs.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.itwillbs.service.MemberService;

public class MemberController extends HttpServlet {

//MemberController 파일을 servlet파일로 지정
//→ MemberController extends HttpServlet(자바내장객체(처리담당자) 상속
//→ 웹 애플리케이션 서버(처리담당서버)가 자동으로 서블릿 메소드 호출
//→ service(), doGet(), doPost(),... 자동으로 호출
//→ doGet(), doPost() 재정의(메소드 오버라이딩)해서 주소매핑 작업 처리

//메소드 오버라이딩(alt + shift + s → v)
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doGet()"); //get방식일 때
//doProcess() 메소드 호출
doProcess(request, response);
}

@Override
protected void doPost(HttpServletRequest requset, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doPost()"); //post방식일 때
//doProcess() 메소드 호출
doProcess(requset, response);
}

//주소 매핑을 위한 메소드 정의
protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doProcess()");
//가상주소 http://localhost:8080/MVCProject/insert.me
//가상주소 뽑아보기 : /insert.me
String sPath = request.getServletPath();
System.out.println("가상주소 뽑아오기 : " + sPath);
//주소 매핑 → 가상주소 비교 → 실제 페이지 연결
if(sPath.equals("/insert.me")) {
System.out.println("가상주소 비교 /insert.me 일치");
//실제페이지 member/insert.jsp 웹 방식 주소가 변경되면서 웹 이동(하이퍼링크)
// response.sendRedirect("member/insert.jsp");
//1) 실제페이지 member/insert.jsp 주소 변경 없이 이동(특이한 이동방식) → 화면만 바뀜.
//액션태그 <jsp:forward> 같은 이동 방식
//2) 이동할 때 request, response 값을 들고 이동
RequestDispatcher dispatcher = request.getRequestDispatcher("member/insert.jsp"); //객체생성을 new로 하지 않음
dispatcher.forward(request, response);
}
if(sPath.equals("/insertPro.me")) {
System.out.println("가상주소 비교 /insertPro.me 일치");
//패키지.클래스 com.itwillbs.service.MemberService
//리턴할 형 없이 insertMember(HttpServletRequest request) 메소드 정의
//MemberService 객체생성
MemberService memberService = new MemberService();
//insertMember(request) 메소드 호출
memberService.insertMember(request);
}
}
}

 

package com.itwillbs.service;

import java.sql.Timestamp;

import javax.servlet.http.HttpServletRequest;

import com.itwill.dao.MemberDAO;
import com.itwillbs.domain.MemberDTO;

public class MemberService {
public void insertMember(HttpServletRequest request) {
System.out.println("MemberService insertMember(HttpServletRequest request)");

//insertPro.jsp 내용 넣기
try {
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
Timestamp date = new Timestamp(System.currentTimeMillis());

//MemberDTO 객체 생성 → 기억장소 할당
//패키지 com.itwillbs.domain.MemberDTO
MemberDTO memberDTO = new MemberDTO();

//멤버변수에 request에 가져온 값을 set 메서드 호출해서 저장
memberDTO.setId(id);
memberDTO.setpw(pw);
memberDTO.setName(name);
memberDTO.setDate(date);

// 패키지(폴더) member, 자바파일 MemberDAO 생성
//패키지 com.itwillbs.domain.MemberDAO
// insertMember() 메소드 정의
MemberDAO memberDAO = new MemberDAO();
memberDAO.insertMember(memberDTO);
} catch (Exception e) {
e.printStackTrace();
}
}
}

 

package com.itwillbs.domain;

import java.sql.Timestamp;

public class MemberDTO {
// 데이터 은닉과 캡슐화
//멤버변수 => 변수를 아무나 접근못하게 막아줌 => 데이터 은닉
private String id;
private String pw;
private String name;
private Timestamp date;

// 데이터를 접근하기위한 setter, getter public 메서드 정의
// alt shift s => r
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getpw() {
return pw;
}
public void setpw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Timestamp getDate() {
return date;
}
public void setDate(Timestamp date) {
this.date = date;
}
}

 

package com.itwill.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

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

import com.itwillbs.domain.MemberDTO;

public class MemberDAO {
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;

public void dbClose() {
if(rs!=null) {
try {
rs.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
if(pstmt!=null) {
try {
pstmt.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
if(con!=null) {
try {
con.close();
} catch (Exception e3) {
e3.printStackTrace();
}
}
}

// 멤버변수
// 생성자 => 생략하면 자동으로 기본생성자 만듬
// 멤버함수(메서드 method)

// 1~2 단계 디비연결하는 getConnection()메서드 정의
public Connection getConnection() {
try {
// Class.forName("com.mysql.cj.jdbc.Driver");
// String dbUrl = "jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul";
// String dbUser = "root";
// String dbPw = "1234";
// con = DriverManager.getConnection(dbUrl, dbUser, dbPw);

//커넥션 풀(Connenction Pool(CP) : 서버단에서 연결정보를 저장)
//데이터베이스와 연결된 Connection 객체를 미리 생성하여 풀(Pool) 기억공간에 저장
//→ 필요할 때 마다 풀에 접근해서 Connection객체를 사용하고 끝나면 반환
// 장점 : 속도 향상, DB연결정보를 한 번만 수정해서 사용
// 톰캣에서 제공하는 DBCP(Database Connection Pool) 사용
//1) META-INF 폴더에 context.xml 파일을 만들고 커넥션 풀 디비연결정보 정의
//2) DAO에서 디비연결자원의 이름을 불러서 사용
// import javax.naming.Context;
// import javax.naming.InitialContext;
Context init = new InitialContext();
//init.lookup("자원이름/자원이름");
//자원위치 : java:comp/env
//자원이름 : jdbc/Mysql
// import javax.sql.DataSource;
DataSource ds = (DataSource)init.lookup("java:comp/env/jdbc/MysqlDB");
con = ds.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
return con;
}

// insertMember() 메서드 정의
// insertMember(String id,String pw,String name,Timestamp date)
public void insertMember(MemberDTO memberDTO) {
System.out.println("MemberDAO insertMember()");
System.out.println("전달받은 바구니 memberDTO의 주소 : " + memberDTO);
System.out.println("전달받은 아이디 : " + memberDTO.getId());
System.out.println("전달받은 비밀번호 : " + memberDTO.getpw());
System.out.println("전달받은 이름 : " + memberDTO.getName());
System.out.println("전달받은 가입날짜 : " + memberDTO.getDate());


// System.out.println("프로그램 시작");
// int a = 10;
// int b = 0;

// if( b != 0 ) {
// System.out.println("a/b = " + a/b);
// }else {
// System.out.println("a/b b가 0으로 나눔 => 에러발생 ");
// }

// try {
// // 에러가 발생할 가능성이 높은 코드(명령)
// System.out.println("a/b = " + a/b);
//
// } catch (Exception e) {
// // 에러가 나면 잡아서 처리
// System.out.println("a/b b가 0으로 나눔 => 에러발생 ");
// // 에러메시지 출력
// e.printStackTrace();
// }finally {
// // 예외 발생 상관없이 마무리 작업
// System.out.println("예외 발생 상관없이 마무리 작업");
// }
// System.out.println("프로그램 종료");

try {
// 1단계 : 설치한 JDBC 프로그램 중에 Driver.class 자바실행 파일 불러오기
// 2단계 : 불러온 파일을 이용해서 데이터베이스 연결 => 연결정보를 저장
con = getConnection();
// 3단계 : 연결정보를 이용해서 sql구문을 만들고 실행할수 있는 객체생성
String sql = "insert into members(id,pw,name,date) values(?,?,?,?)";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, memberDTO.getId());
pstmt.setString(2, memberDTO.getpw());
pstmt.setString(3, memberDTO.getName());
pstmt.setTimestamp(4, memberDTO.getDate());
// 4단계 : sql구문 실행 (insert,update,delete)
pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
dbClose();
}
}//insertMember()

// MemberDAO에 리턴할형 boolean userCheck(String id,String pw) 메서드 정의
public boolean userCheck(String id,String pw) {
System.out.println("MemberDAO userCheck()");
// 아이디 비밀번호 일치하면 => true 리턴
// 아이디 비밀번호 틀리면 => false 리턴
boolean result = false;
try {
//예외(에러) 발생할 가능성이 높은 명령
// 1단계 : 설치한 JDBC 프로그램 중에 Driver.class 자바실행 파일 불러오기
// 2단계 : 불러온 파일을 이용해서 데이터베이스 연결 => 연결정보를 저장
con = getConnection();
// 3단계 : 연결정보를 이용해서 sql구문을 만들고 실행할수 있는 객체생성
// select * from 테이블이름 where 조건열=값 and 조건열=값;
String sql="select * from members where id=? and pw=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, pw);
// 4단계 : sql구문 실행 => 실행 후 결과 저장(select)=> ResultSet 내장객체 저장
rs = pstmt.executeQuery();
// 5단계 : 결과를 이용해서 출력, 다른곳에 저장(select)
// if else 커서를 다음행 이동 => 리턴값 데이터 있으면 true => "아이디 비밀번호 일치" 출력
// 데이터 없으면 false => "아이디 비밀번호 틀림" 출력
if(rs.next()){
System.out.println("아이디 비밀번호 일치");
result = true;
}else{
System.out.println("아이디 비밀번호 틀림");
result = false;
}
} catch (Exception e) {
// 에러가 발생하면 잡아서 처리하는 작업 (에러메시지 출력)
e.printStackTrace();
}finally {
dbClose();
}
return result;
}//userCheck()

// MemberDAO에 리턴할형 MemberDTO getMember(String id) 메서드 정의
public MemberDTO getMember(String id) {
System.out.println("MemberDAO getMember()");
// id,pw,name,date를 담은 => MemberDTO 하나를 리턴
// MemberDTO 변수 선언
MemberDTO memberDTO = null;
try {
// 1단계 : 설치한 JDBC 프로그램 중에 Driver.class 자바실행 파일 불러오기
// 2단계 : 불러온 파일을 이용해서 데이터베이스 연결 => 연결정보를 저장
con = getConnection();
// 3단계 : 연결정보를 이용해서 sql구문을 만들고 실행할수 있는 객체생성
// select * from members where id=?
String sql="select * from members where id=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
// 4단계 : sql구문 실행 => 실행 후 결과 저장(select)=> ResultSet 내장객체 저장
rs = pstmt.executeQuery();
// 5단계 : 결과를 이용해서 출력, 다른곳에 저장(select)
// if 커서를 다음행 이동 => 리턴값 데이터 있으면 true
// => id열,pw열,name열,date열 접근해서 출력
if(rs.next()) {
System.out.println("아이디 있음");
// MemberDTO memberDTO 객체생성(기억장소 할당)
memberDTO = new MemberDTO();
System.out.println("아이디 있음 MemberDTO 바구니 주소 : "+memberDTO);
memberDTO.setId(rs.getString("id"));
memberDTO.setpw(rs.getString("pw"));
memberDTO.setName(rs.getString("name"));
memberDTO.setDate(rs.getTimestamp("date"));
}else {
System.out.println("아이디 없음");
// MemberDTO memberDTO = null 설정
memberDTO = null;
System.out.println("아이디 없음 MemberDTO 바구니 주소 : "+memberDTO);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
dbClose();
}
return memberDTO;
}//getMember()

// 리턴값없음 updateMember(MemberDTO memberDTO) 메서드 정의
public void updateMember(MemberDTO memberDTO) {
try {
// 1단계 : 설치한 JDBC 프로그램 중에 Driver.class 자바실행 파일 불러오기
// 2단계 : 불러온 파일을 이용해서 데이터베이스 연결 => 연결정보를 저장
con = getConnection();
// => 3단계 연결정보를 이용해서 sql구문을 만들고 실행할수 있는 객체생성
// => update 테이블이름 set 수정할열이름=수정값 where 조건열이름=값;
String sql = "update members set name=? where id=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, memberDTO.getName());
pstmt.setString(2, memberDTO.getId());
// => 4단계 : sql구문 실행 (insert,update,delete)
pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
dbClose();
}
}//updateMember()

// 리턴값없음 deleteMember(String id) 메서드 정의
public void deleteMember(String id) {
try {
// 1단계 : 설치한 JDBC 프로그램 중에 Driver.class 자바실행 파일 불러오기
// 2단계 : 불러온 파일을 이용해서 데이터베이스 연결 => 연결정보를 저장
con = getConnection();
// => 3단계 연결정보를 이용해서 sql구문을 만들고 실행할수 있는 객체생성
// => delete from 테이블이름 where 조건열이름=값;
String sql = "delete from members where id=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
// => 4단계 : sql구문 실행 (insert,update,delete)
pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
dbClose();
}
}//deleteMember()

public ArrayList<MemberDTO> getMemberList() {
ArrayList<MemberDTO> memberList = new ArrayList<MemberDTO>();
try {
con = getConnection();
String sql = "select * from members";
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()) {
//한 사람의 정보를 저장할 바구니 MemberDTO 객체 생성
MemberDTO memberDTO = new MemberDTO();
System.out.println("memberDTO 주소 : " + memberDTO);
//MemberDTO 멤버변수에 열에 접근해서 가져온 데이터를 저장
memberDTO.setId(rs.getString("id"));
memberDTO.setpw(rs.getString("pw"));
memberDTO.setName(rs.getString("name"));
memberDTO.setDate(rs.getTimestamp("date"));
//배열 한 칸에 저장(0부터 순서대로 값이 저장)
memberList.add(memberDTO);
}
System.out.println("배열 " + memberList);
} catch (Exception e) {
e.printStackTrace();
} finally {
dbClose();
}
return memberList;
}
}//class MemberDAO

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>root/index.jsp</title>
</head>
<body>
<%
response.sendRedirect("insert.me");
%>
</body>
</html>

 

package com.itwillbs.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.itwillbs.service.MemberService;

public class MemberController extends HttpServlet {
(...생략...)

//MemberService 객체생성
MemberService memberService = new MemberService();
//insertMember(request) 메소드 호출
memberService.insertMember(request);

//로그인페이지로 이동
//가상주소 login.me 주소가 변경되면서 이동(하이퍼링크)
//주소가 바뀌고 화면이 바뀌는
response.sendRedirect("login.me");

}
//login.me 주소가 일치하면 member/login.jsp 이동 주소변경없이
if(sPath.equals("/login.me")) {
System.out.println("가상주소 비교 /login.me 일치");
RequestDispatcher dispatcher = request.getRequestDispatcher("member/login.jsp");
dispatcher.forward(request, response);
}
}
}

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>root/index.jsp</title>
</head>
<body>
<%
// response.sendRedirect("insert.me");
response.sendRedirect("login.me");
%>
</body>
</html>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>member/login.jsp</title>
</head>
<body>
<h1>member/login.jsp</h1>
<h1>로그인</h1>
<form action="loginPro.me" method="post">
아이디 : <input type="text" name="id"><br>
비밀번호 : <input type="password" name="pw"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>

 

package com.itwillbs.service;

import java.sql.Timestamp;

import javax.servlet.http.HttpServletRequest;

import com.itwill.dao.MemberDAO;
import com.itwillbs.domain.MemberDTO;

public class MemberService {
public void insertMember(HttpServletRequest request) {
System.out.println("MemberService insertMember(HttpServletRequest request)");
//insertPro.jsp 내용 넣기
try {
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
Timestamp date = new Timestamp(System.currentTimeMillis());

//MemberDTO 객체 생성 → 기억장소 할당
//패키지 com.itwillbs.domain.MemberDTO
MemberDTO memberDTO = new MemberDTO();
//멤버변수에 request에 가져온 값을 set 메서드 호출해서 저장
memberDTO.setId(id);
memberDTO.setpw(pw);
memberDTO.setName(name);
memberDTO.setDate(date);

// 패키지(폴더) member, 자바파일 MemberDAO 생성
//패키지 com.itwillbs.domain.MemberDAO
// insertMember() 메소드 정의
MemberDAO memberDAO = new MemberDAO();
memberDAO.insertMember(memberDTO);

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

//loginPro.me 주소가 일치하면 MemberService 객체 생성
//리턴할 형은 looean userCheck(request) 메소드 호출
public boolean userCheck(HttpServletRequest request) {
boolean result = false;
System.out.println("HttpServletRequest userCheck()");
try {
request.setCharacterEncoding("utf-8");
//request에서 id, pw 태그(파라미터)값 가져와서 변수에 저장
String id = request.getParameter("id");
String pw = request.getParameter("pw");
//MemberDAO 객체 생성
MemberDAO memberDAO = new MemberDAO();
//userCheck메소드 호출
result = memberDAO.userCheck(id, pw);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}

 

package com.itwillbs.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.itwillbs.service.MemberService;

public class MemberController extends HttpServlet {

//MemberController 파일을 servlet파일로 지정
//→ MemberController extends HttpServlet(자바내장객체(처리담당자) 상속
//→ 웹 애플리케이션 서버(처리담당서버)가 자동으로 서블릿 메소드 호출
//→ service(), doGet(), doPost(),... 자동으로 호출
//→ doGet(), doPost() 재정의(메소드 오버라이딩)해서 주소매핑 작업 처리

//메소드 오버라이딩(alt + shift + s → v)
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doGet()"); //get방식일 때
//doProcess() 메소드 호출
doProcess(request, response);
}

@Override
protected void doPost(HttpServletRequest requset, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doPost()"); //post방식일 때
//doProcess() 메소드 호출
doProcess(requset, response);
}

//주소 매핑을 위한 메소드 정의
protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("MemberController doProcess()");

//가상주소 http://localhost:8080/MVCProject/insert.me
//가상주소 뽑아보기 : /insert.me
String sPath = request.getServletPath();
System.out.println("가상주소 뽑아오기 : " + sPath);

//주소 매핑 → 가상주소 비교 → 실제 페이지 연결

if(sPath.equals("/insert.me")) {
System.out.println("가상주소 비교 /insert.me 일치");
//실제페이지 member/insert.jsp 웹 방식 주소가 변경되면서 웹 이동(하이퍼링크)
// response.sendRedirect("member/insert.jsp");

//1) 실제페이지 member/insert.jsp 주소 변경 없이 이동(특이한 이동방식) → 화면만 바뀜.
//액션태그 <jsp:forward> 같은 이동 방식
//2) 이동할 때 request, response 값을 들고 이동
RequestDispatcher dispatcher = request.getRequestDispatcher("member/insert.jsp"); //객체생성을 new로 하지 않음
dispatcher.forward(request, response);

}

if(sPath.equals("/insertPro.me")) {
System.out.println("가상주소 비교 /insertPro.me 일치");
//패키지.클래스 com.itwillbs.service.MemberService
//리턴할 형 없이 insertMember(HttpServletRequest request) 메소드 정의

//MemberService 객체생성
MemberService memberService = new MemberService();
//insertMember(request) 메소드 호출
memberService.insertMember(request);

//로그인페이지로 이동
//가상주소 login.me 주소가 변경되면서 이동(하이퍼링크)
//주소가 바뀌고 화면이 바뀌는
response.sendRedirect("login.me");

}
//login.me 주소가 일치하면 member/login.jsp 주소변경없이 이동
if(sPath.equals("/login.me")) {
System.out.println("가상주소 비교 /login.me 일치");
RequestDispatcher dispatcher = request.getRequestDispatcher("member/login.jsp");
dispatcher.forward(request, response);
}
//loginPro.me 주소가 일치하면 MemberService 객체 생성
//리턴할 형은 looean userCheck(request) 메소드 호출
if(sPath.equals("/loginPro.me")) {
System.out.println("가상주소 비교 /loginPro.me 일치");
MemberService memberService = new MemberService();
boolean result = memberService.userCheck(request);
String id = request.getParameter("id");
if(result==true) {
//true일 경우 로그인 표시(세션값 "id",id) -> main.me이동
HttpSession session = request.getSession();
session.setAttribute("id", id);
response.sendRedirect("main.me");
} else {
//false일 경우 login.me로 이동
response.sendRedirect("login.me");
}
}

//main.me 주소가 일치하면 member/main.jsp 주소변경없이 이동
if(sPath.equals("/main.me")) {
System.out.println("가상주소 비교 /main.me 일치");
RequestDispatcher dispatcher = request.getRequestDispatcher("member/main.jsp");
dispatcher.forward(request, response);
}
}
}

 

728x90

'KDT > WEB' 카테고리의 다른 글

240111 WEB - JSP21(MVC, JSTL)  (0) 2024.01.11
240109 WEB - JSP20(MVC)  (0) 2024.01.09
240102 WEB - JSP18(MVC, 커넥션풀)  (0) 2024.01.02
231228 WEB - JSP17(MVC)  (0) 2023.12.28
231226 WEB - JSP16(MVC)  (0) 2023.12.26