<๊ฐ์>
์ ๋ฒ ์๊ฐ์ ํ๋ ๋ด์ฉ์ ๋ณต๊ธฐ ํด๋ณด๊ฒ ๋ค.
๋จผ์ ํํ๋ฉด์์ ๊ฒ์ํ ํ๋ฉด์ผ๋ก ๋ค์ด๊ฐ๋ ค ํ๋๋ฐ, ์ด๋ ํด๋ผ์ด์ธํธ๋ก ๋ก๊ทธ์ธ ์ํ์ธ์ง ์๋์ง ์ฒดํฌํ๋ค.
๋ก๊ทธ์ธ ์ํ๋ผ๋ฉด ๋ฐ๋ก ๊ฒ์ํ ํ๋ฉด์ผ๋ก ๋์ด๊ฐ๋ค. ๋ก๊ทธ์ธ ์ ํ ์ํ๋ฉด, ๋ก๊ทธ์ธ ์ฐฝ์ ๋์ด๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ๋ก๊ทธ์ธ์ ํ๋ฉด ๋ค์ ํ ํ๋ฉด์ผ๋ก ์ด๋ํ๋ค.
๋ก์ง์ ๋ฐ๊ณผ ๊ฐ๋ค.
์ฐ๋ฆฌ๊ฐ ์ด๋ฒ์ ํ๋ ค๋ ๊ฒ์ ๋ก๊ทธ์ธ ์ฑ๊ณตํ๋ฉด ๋ค์ ์๊ธฐ๊ฐ ๊ฐ๋ ค๊ณ ํ๋ ํ์ด์ง๋ก ๋ค์ ํด๋ผ์ด์ธํธ๋ฅผ ๋ณด๋ด๋ ๊ฒ์ด๋ค.
๋ ๋ฌด์ ์ฌ์์ ์ท์ ์ด๋ ค๊ณ ํ๋๋ฐ, ๋ก๊ทธ์ธ ์ํ๊ฐ ์๋ ๊ฒ์ ๊น๋จน์ ์ ์ด ์๋ค. ๋ก๊ทธ์ธ์ ํ๋ ๋ค์ ํ ํ๋ฉด์ผ๋ก ๊ฐ์ ๋ด๊ฐ ์ด๋ ค ํ๋ ์ท์ ๋ค์ ์ฐพ์์ผ ํด ์ง์ฆ ๋ฌ๋ ์ ์ด ์๋ค.
์ด๋ฒ ์นํ์ด์ง ์์๋ ๊ทธ๋ฐ ์ ๋ก์ฌํญ์ด ์๋๋ก ๊ฒ์ํ์ ๋ค์ด๊ฐ๋ ค ํ๋ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ํ ์ ๊ทธ๋๋ก ๊ฒ์ํ ํ์ด์ง๋ก ๋ค์ ๊ฐ๋๋ก ๋ง๋ค๋ ค๊ณ ํ๋ค.
1. ๊ฒ์ํ ๋ค์ด๊ฐ๋ ค ํ๋ ๋น ๋ก๊ทธ์ธ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ์ ์๋์ผ๋ก ๊ฒ์ํ์ผ๋ก ๊ฐ๊ฒ ํ๋ ๋ก์ง
(1) ๋ก์ง ์ค๊ณ
from์ ์์ฒญ์ด ์จ ์ฃผ์๋ฅผ ๋ํ๋ธ๋ค. to๋ ์์ฒญ์ด ๊ฐ๋ ค๊ณ ํ๋ ๋ชฉ์ ์ง๋ฅผ ๋ํ๋ธ๋ค.
์ฐ๋ฆฌ๋ id/pwd๊ฐ DB์ ์๋์ง ํ์ธํ๋ ๋ก๊ทธ์ธ controller์์, ๋ง์ฝ ์ฒซ ์์ฒญ ๋ชฉ์ ์ง(to)๊ฐ ๊ฒ์ํ์ด๋ฉด ๋ก๊ทธ์ธ ์ฑ๊ณต ํ ๋ฐ๋ก ๊ฒ์ํ์ผ๋ก ๊ฐ๊ณ , ์ฒซ ์์ฒญ ๋ชฉ์ ์ง๊ฐ ์์ผ๋ฉด (๊ทธ๋ฅ ๋ก๊ทธ์ธ ํ ๊ฒฝ์ฐ) ํํ๋ฉด์ผ๋ก ๊ฐ๋๋ก ์ค์ ํด์ผํ๋ค.
์ด๋ป๊ฒ ํ ์ ์์๊น?
(2) ๊ตฌํ ๋ฐฉ๋ฒ
์ด ๋ก์ง์์ ์ฒ์์ ๊ฐ๋ ค๊ณ ํ๋ ๋ชฉ์ ์ง(to)๊ฐ board/list (๊ฒ์ํ) ์ด์๋ค๋ ๊ฒ์ ์์์ฐจ๋ฆด ์ ์๋ ๋ฐฉ๋ฒ์ ์ฒซ ์์ฒญ์ ๋ชฉ์ ์ง๊ฐ ch2/board/list ์๋ค๋ ๊ฒ์ ์๋ ๊ฒ ๋ฟ์ด๋ค.
ํ์ง๋ง ์๋ฒ๋ ํ์ฌ ์จ ์์ฒญ์ from๊ณผ to ๋ฐ์ ๊ธฐ์ตํ์ง ๋ชปํ๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ฒซ ์์ฒญ์ ํ ๋์ ์์ฒญ ๋ชฉ์ ์ง(to)๋ฅผ ๊ฐ์ผ๋ก ๋ฐ์์ id/pwd ํ์ธํ๋ ๋ก๊ทธ์ธ ์ปจํธ๋กค๋ฌํํ ๊น์ง ์ ๋ฌ ํด์ผํ๋ค.
์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ง์ฝ ๊ฒ์ํ GET ์์ฒญ์ ํ ํด๋ผ์ด์ธํธ๊ฐ ๋ก๊ทธ์ธ ํ์ง ์์ ์ํ๋ผ๋ฉด,(sessionScope์ id ๊ฐ null)
redirect๋ก login ํ๋ฉด์ผ๋ก ๊ฐ ๋, ์คํธ๋ง ์ฟผ๋ฆฌ๋ก ์ฒ์ ๋ชฉ์ ์ง๋ฅผ ์ง์ด๋ฃ๋๋ค.
ํ์ฌ ์จ ์์ฒญ์ from๊ณผ to๋ฅผ ํ๋ผ๋ฏธํฐ ๊ฐ์ผ๋ก ๋ฐ๋ ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ๋ค.
//ํ์ฌ ์๋ฒ์ ์จ ์์ฒญ์ from์ ๋ณด(์์ฒญ์ด ์ด๋์๋ถํฐ ์๋์ง)๋ฅผ ๋ฝ์๋ด๋ ๋ช
๋ น์ด
// ์ฌ๊ธฐ์ referer๊ฐ ์ด๋์ ์์ฒญํ๋์ง๋ฅผ ๋ปํ๋ค.
request.getHeader("referer");
//ํ์ฌ ์๋ฒ์ ์จ ์์ฒญ์ to์ ๋ณด(์์ฒญ์ด ๊ฐ๋ ค๊ณ ํ๋ ๋ชฉ์ ์ง๊ฐ ์ด๋์ธ์ง)๋ฅผ ๋ฝ์๋ด๋ ๋ช
๋ น์ด
request.getRequestURI();
์ฌ๊ธฐ์ request.getRequestURI()๋ฅผ ์ฌ์ฉํด ์์ฒญ์ ๋ชฉ์ ์ง๋ฅผ ๋ณ์๋ก ๋ฐ์ ๋ค, ์ด๊ฑธ ๋ก๊ทธ์ธ ์ปจํธ๋กค๋ฌ๊น์ง ๋ณด๋ด๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ก๊ทธ์ธ ์ปจํธ๋กค๋ฌ์์ ๊ฐ์ด ์จ URL์ด ์์ผ๋ฉด ๋ก๊ทธ์ธ ํ ๊ทธ URL๋ก, ์์ผ๋ฉด ๊ทธ๋ฅ Default์ธ ํ ํ๋ฉด์ GET ํ๋๋ก ์ค๊ณํ๋ฉด ๋๋ค.
์ด์ ์ฝ๋๋ฅผ ๋ฏ์ด๋ณด๋ฉฐ ๊ตฌํํด๋ณด๊ฒ ๋ค.
(3) ๊ตฌํ(์ฝ๋๋ฆฌ๋ทฐ)
x. ์์ฒญ๋ค์ from๊ณผ to๊ฐ ์ด๋์ง ์ ์ ์๋๋ก ์์ ์ ์ ์ฒ๋ฆฌ๊ธฐ filter ์์
// ํํฐ๋ฅผ ์ ์ฉํ ์์ฒญ์ URL ์ง์ - ๋ชจ๋ ์์ฒญ์ ๋ํด ์ด ํํฐ๋ฅผ ์ ์ฉ.
@WebFilter(urlPatterns="/*")
public class PerformanceFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// ์ด๊ธฐํ ์์
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// 1. ์ ์ฒ๋ฆฌ ์์
//2. ์๋ธ๋ฆฟ ๋๋ ๋ค์ ํํฐ ํธ์ถ
chain.doFilter(request, response);
// 3. ํ์ฒ๋ฆฌ ์์
(์์ฒญ์ from, to ์ถ๋ ฅ )
// 3-1 ๊ทธ๋ฅ Servlet์ผ๋ก ๋ฐ์ ๊ฑฐ Http๋ก ํ๋ณํ
HttpServletRequest req = (HttpServletRequest)request;
// 3-1 ์์ฒญ ๋ณด๋ธ ์ฃผ์, ์์ฒญ์ ๋ชฉ์ ์ง, ์์ฒญ์ ์ข
๋ฅ ๋ณ์๋ก ๋ฐ๊ธฐ
String referer = req.getHeader("referer");
// ์์ฒญ์ ์ข
๋ฅ ๋ฝ๊ธฐ (GET์ธ์ง, POST์ธ์ง)
String method = req.getMethod();
// 3-1 ์์ฒญ ๋๋๊ณ from, to๋ ๋ฌด์จ ์์ฒญ์ธ์ง ๋ฝ๊ธฐ
System.out.println("["+referer+"] ->"+ method+"["+req.getRequestURI()+"]");
}
@Override
public void destroy() {
// ์ ๋ฆฌ ์์
}
}
์ด๊ธฐํ์ ์ ์ฒ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ์ง์ง ํํ๋ ค๋ ์ํ ์ ์ ์ผ์ด๋๋ ๊ฒ์ด๋ค.
ํ์ฒ๋ฆฌ์ ์ ๋ฆฌ ์์ ์ ๋ณธ ์์ ์ ํํ๊ณ ๋ ๋ค ์ผ์ด๋๋ ๊ฒ์ด๋ค. ๋ณธ ์์ ์ dofilter ๋ถ๋ถ์์ ์ฐ๋ฆฌ๊ฐ ์๋ ์ํค๋ ค๋ servlet ๊ฐ์ ์งํ๋๋ค. (์ฌ๊ธฐ์ ๋ค๋ฅธ ํํฐ๋ก ํ๋ฒ ๋ ๊ฐ์ ํํฐ๋ง ์์ ์ n๋ฒ ๋ ํ ์๋ ์๋ค.)
ํ์ฒ๋ฆฌ ์์ ์์ ์ฐ๋ฆฌ๋ ์์ฒญ์ ์ข ๋ฅ, from,to๋ฅผ ์ถ๋ ฅํ๋ฏ๋ก์ ์ด๋ค ์์ ์ด ์ด๋ฃจ์ด์ก๊ณ , ์์ฒญ์ ํ๋ฆ์ด ์ด๋ป๊ฒ ๋๋์ง ํ ๋์ ์ ์ ์๋ค.
๊ทธ๋ฌ๋ฉด ์ง์ ์ ์์ ๋ก์ง๋๋ก ์น ํ์ด์ง๋ฅผ ์์ง์ฌ ๋ณด๊ฒ ๋ค.
ํด๋น ํ๋ฆ์ ์ค๋ช ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
ใฑ. ํ ํ๋ฉด์์ ๊ฒ์ํ์ผ๋ก ์กฐํ ์์ฒญ์ ํ์ง๋ง, ๋ก๊ทธ์ธ์ด ์๋์ด ์๋ ์ํ๋ผ, BoarderController๊ฐ ๋ก๊ทธ์ธ ํ๋ฉด์ผ๋ก URL ์ฌ์กฐ์ ์ ํ๊ณ , ๋ธ๋ผ์ฐ์ ๋ ์๋์ผ๋ก /ch2/login/login์ผ๋ก Get ์์ฒญ์ ํ๋ค.
ใด. ํด๋ผ์ด์ธํธ๊ฐ ๋ก๊ทธ์ธ ํ๋ฉด์์ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ์น๊ณ ๋ก๊ทธ์ธ ๋ฒํผ์ ๋๋ ๋ค. (์๋ฒ ์ชฝ์ ๋ด์ฉ ์ฐ๋ POST ์์ฒญ)
ใท. LoginController์ ์ํด ํด๋ผ์ด์ธํธ๊ฐ ์น ๋ก๊ทธ์ธ ๋น๋ฒ์ DB ์ผ์น์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ , ์ผ์นํด์ Homeํ๋ฉด์ผ๋ก redirect ํ๋ค.
์์ง ๋ก์ง ๊ตฌํ์ ์ ํ๊ธฐ์ ์ต์ข ์ ์ผ๋ก HOME์ผ๋ก ๊ฐ๋ค.
a. ๋จผ์ ๊ฒ์ํ ์กฐํ(GET) ์์ฒญ์ด ์์ ์ ๋ก๊ทธ์ธ ์ฌ๋ถ๋ฅผ checkํ๋ BoardController ๋ฐ๊พธ๊ธฐ
@Controller
@RequestMapping("/board")
public class BoardController{
//1. /board/list mapping
@GetMapping("/list")
public String list(HttpServletRequest request) {
//2. ๋ก๊ทธ์ธ์ฒดํฌ - ์ํ์ผ๋ฉด ๋ก๊ทธ์ธ ํ๋ฉด์ผ๋ก ์ด๋,
// ํ์ผ๋ฉด ๊ฒ์ํ JSP View ๋ณด์ฌ์ฃผ๊ธฐ
// ** ์ถ๊ฐ: StringQuery๋ก ์ ์์ฒญ์ด ์ํ๋ ๋ชฉ์ ์ง URL๋ redirect URL์ ์ถ๊ฐํด์ค๋ค.
if(!(logincheck(request))) {
return "redirect:/login/login?toURL="+request.getRequestURL();
}
return "boardList";
}
//3. ๋ก๊ทธ์ธ ์ฒดํฌํ๋ ๋งค์๋ ๊ตฌํ
// request์ ์ ํ ์๋ Session id๋ฅผ ํตํด ์ฐ๋ฆฌ๊ฐ ์ฐ๋ ์ธ์
๊ฐ์ฒด๋ฅผ ์ฐพ์ ๋งตํ
// ๊ทธ ์ธ์
๊ฐ์ฒด์์ id ๊ฐ์ด ์๋์ง ํ์ธ. ์์ผ๋ฉด ๋ก๊ทธ์ธ ์ํ ๊ฒ, ์์ผ๋ฉด ๋ก๊ทธ์ธ ํ ๊ฒ.
private boolean logincheck(HttpServletRequest request) {
// ์ธ์
์ ์ป์ด์
HttpSession session = request.getSession();
// ์ธ์
์ id๊ฐ ์๋์ง ํ์ธ, ์์ผ๋ฉด true๋ฅผ ๋ฐํ
return session.getAttribute("id") != null;
}
}
์คํธ๋ง ์ฟผ๋ฆฌ๋ก ์ ์์ฒญ์ด ๊ฐ๊ณ ์ ํ ๋ชฉ์ ์ง URL์ ๋ณด๋์ผ๋, JSP์์ ์ด ๋ด์ฉ์ ๋ฐ์์ ์ด๋๊ฐ์ ์ ์ฅํด๋ฌ์ผ ํ๋ค.
ํ์ง๋ง ์ด ์ ๋ณด๋ ๊ตณ์ด ํด๋ผ์ด์ธํธํํ ๋ณด์ฌ์ค ํ์๊ฐ ์๋ค. ๋ฐ๋ผ์ hidden์ผ๋ก ์ค์ ํด ๋ก๊ทธ์ธ ์ปจํธ๋กค๋ฌ๋ก ์ ๋ฌ์ ๋์ง๋ง ๋ณด์ด์ง๋ ์๊ฒ ๋ง๋ ๋ค.
b. ๋ก๊ทธ์ธ ํ๋ฉด์์ URL ๊ฐ์ ๋ฐ์์ post ์ ๋ค๋ฅธ ๊ฐ๋ค๊ณผ ๊ฐ์ด ์ ๋ฌํ๋๋ก, loginForm ๋ฐ๊พธ๊ธฐ
<input type="hidden" name ="toURL" value ="${param.toURL}">
<!-- loginFOrm.jsp์ ์ด ์ค์ ์ถ๊ฐํ๋ฉด ๋๋ค.
input์ด toURL ์ด๋ผ๋ ์ด๋ฆ์ ๋ณ์๋ฅผ request๊ฐ์ฒด์ ๊ฐ๊ณผ ํจ๊ป ๋งต ํํ๋ก ์จ์ค๋ค.
*์ฒ์์ type = "text"๋ก ๋๊ณ ์ปจํธ๋กค๋ฌ์์ ์ ๋๋ก ๋์ฐฉํ๋์ง ์ฒดํฌํด๋ณด๊ณ ,
๋๋ค๋ฉด hidden ์ผ๋ก ๋ฐ๊พธ์.
param.A ์ ์์ฒญ์ body ํน์ ์คํธ๋ง์ฟผ๋ฆฌ์ ์ ํ A๋ผ๋ ์ด๋ฆ์ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ด๋ค. -->
c. ๋ก๊ทธ์ธ ์ ์ฒ์์ ๊ฐ๋ ค๊ณ ํ๋ ํ๋ฉด์ผ๋ก ๊ฐ๋๋ก (๊ฐ๋ ค๊ณ ํ๋ฐ ์์ผ๋ฉด HOME ํ๋ฉด) LoginCotroller ๋ฐ๊พธ๊ธฐ
@Controller
@RequestMapping("/login")
public class LoginController {
//์กฐํ๋ง ํ ์์ ๋ก๊ทธ์ธ ์
๋ ฅ์ฐฝ์ ๋ณด์ฌ์ค๋ผ
@GetMapping("/login")
public String loginform() {
return "loginForm";
}
//๋ก๊ทธ์์ ์ ์ธ์
์ข
๋ฃํ๊ณ ํ ํ๋ฉด์ผ๋ก URL ์ฌ์กฐ์
@GetMapping("/logout")
public String logout(HttpSession session) {
// 1. ์ธ์
์ ์ข
๋ฃ
session.invalidate();
// 2. ํ์ผ๋ก ์ด๋
return "redirect:/";
}
// ๋ด์ฉ์ ์ฐ๊ณ ๋ก๊ทธ์ธ ์์ฒญ(POST)๋ฅผ ํ์์,
@PostMapping("/login")
public String login(String id, String pwd, String toURL, boolean rememberId,
HttpServletRequest request ,HttpServletResponse response ) throws Exception {
// 1. id์ pwd๋ฅผ ํ์ธ
if(!loginCheck(id,pwd)) {
String msg = URLEncoder.encode("id ํน์ ํจ์ค์๋๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค.", "utf-8");
// 2-1 ์ผ์นํ์ง ์์ผ๋ฉด loginform ์ผ๋ก redirect
// ์คํธ๋ง ์ฟผ๋ฆฌ๋ก ์ ์ด์ ํ๋ฉด์ ๋ณด์ผ ๋ฉ์ธ์ง๋ ๊ฐ์ด ๋ณด๋.
return "redirect:/login/login?msg="+msg;
}
// 2-2 id์ pwd๊ฐ ์ผ์นํ๋ฉด ์ธ์
๊ฐ์ฒด ์ป์ด์์ ๊ทธ ์์ id๋ฅผ ์ ์ฅ.
// ์ธ์
๊ฐ์ฒด ์ป์ด์ค๊ธฐ
HttpSession session = request.getSession();
// ์ธ์
๊ฐ์ฒด์ id๋ฅผ ์ ์ฅ
session.setAttribute("id", id);
// 2-3 rememberId ํด๋ผ์ด์ธํธ๊ฐ ์ฒดํฌ ํ์ ์ id ์ด๋ฆ๊ณผ ๊ฐ์ ์ฟ ํค์ ๋ฃ๊ธฐ
// ์ฒดํฌ ํ์์ ์ ์ฟ ํค์ ์๋ id ์ง์ฐ๊ธฐ
if(rememberId) {
// 1. ์ฟ ํค๋ฅผ ์์ฑ
Cookie cookie = new Cookie("id", id);
// 2. ์๋ต์ ์ ์ฅ
response.addCookie(cookie);
}else {
// 1. ์ฟ ํค๋ฅผ ์ญ์
Cookie cookie = new Cookie("id", id );
cookie.setMaxAge(0);
// 2. ์๋ต์ ์ ์ฅ
response.addCookie(cookie);
}
// 3. ํ์ผ๋ก ์ด๋
// 3-1 toURL์ด ์์ผ๋ฉด ํ ์ฃผ์๋ฅผ, ์์ผ๋ฉด toURL ์ฃผ์๋ฅผ URL ๋ฃ๋ ๋ณ์์ ๋์
.
toURL = toURL==null || toURL.equals("")? "/" : toURL;
// 3-2 id/pwd ์ผ์นํ๋ ๊ฒฝ์ฐ์ redirect
return "redirect:"+toURL;
}
2. ์ธ์ ์์ฑ ์ ์ด ๊ตฌ๋ฌธ
(1) ํ์์ฑ
์ฌ์ค ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ ํ๋ฉด์ด๋ ์ฒซ Login ํ๋ฉด ์์ฒด์์๋ Session์ด ํ์ ์๋ค.
์๋ํ๋ฉด ํด๋น ๋ธ๋ผ์ฐ์ ์ ๋์๋๋ Session์ id๊ฐ ์๋ ์๋(๋ก๊ทธ์ธ ํ๋์ง ์ฒดํฌ)๋ boarderController ๋จ๊ณ์์๋ถํฐ ์งํํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ ์ ์ ๋ก๊ทธ์ธ ํ๋ฉด์ผ๋ก ๋ฐ๋ก ๋ค์ด์ค๊ฑฐ๋, ํ ํ๋ฉด์ผ๋ก ๋ฐ๋ก ๋ค์ด์จ ๊ฒฝ์ฐ๋ Session์ ์ฐ์ง ์๋๋ค.
ํ์ง๋ง ์ธ์ ์ default๋ก ์ด๋ค ๋ธ๋ผ์ฐ์ ๋ก ๋ถํฐ ์ฒซ ์์ฒญ์ด ์จ ์๊ฐ์ ์์ฑ๋๋ค.
์๋ฒ์๋ ํด๋ผ์ด์ธํธ ๋ณ๋ก ์ธ์ ์ด ํ๋์ฉ ์กด์ฌํ๊ณ , ํด๋ผ์ด์ธํธ๊ฐ ๋ง์์ง์๋ก ์ธ์ ์ด ์ฐจ์งํ๋ ์ฉ๋์ด ์ฆ๊ฐํด ๋ถ๋ด์ด ์ปค์ง๋ค. ๊ทธ๋์ ์๋ฒ๊ฐ ๊ฑด๊ฐํ๋ ค๋ฉด, ์ธ์ ์ ์๋ช ์ ์ต๋ํ์ผ๋ก ์ค์ด๋ ๊ฒ์ด ์ข๋ค.
์ด๋ฅผ ์ํด์ Session์ด ํ์ ์๋ jsp์์๋ ์์ฒญ์ด ๋ค์ด์๋ Session์ด ์๊ธฐ์ง ์๋๋ก ํ๋ ์ ์ด๋ฌธ์ ์จ์ผํ๋ค.
(2) ๋ฌธ๋ฒ
<%@ page session="false" %>
<!-- Session์ ์๋ก ๋ง๋ค์ง ์๋ ๋ช
๋ น์ด
๊ธฐ์กด์ ์กด์ฌํ๋ Session์ ์์ ๋ ๋ช
๋ น์ด๋ ์๋๋ค. -->
ํด๋น ์ ์ด๋ฌธ์ ์ธ์ ์ด ํ์์๋ jsp์ ์ฐ๋ฉด, ํด๋น jsp๋ฅผ view ์ฌ์ฉํ๋ ์์ฒญ์ด ๋ค์ด์๋ ์ธ์ ์ ๋ง๋ค์ง ์๋๋ค.
ํ์ง๋ง ์ฌ๊ธฐ์ ์ฃผ์ํด์ผํ ๊ฒ์ด ์๋ค. ํด๋น ์ ์ด๋ฌธ์ ํน์ ๋ธ๋ผ์ฐ์ ์ ๋์ํ๋ ์ธ์ ์ด ์์ ๋ '์๋ก' ๋ง๋ค์ง ์๋๋ค. ๋ ๊ฒ์ด๋ค. ์ด๋ฏธ ์ธ์ ์ด ์๋ ์ํ์์ ์ ์ ์ด๋ฌธ์ด ์ ํ jsp๋ฅผ ์ด์ฉํ๋ค๊ณ ํด์ ๊ธฐ์กด ์ธ์ ์ด ์ญ์ ๋๋ ๊ฒ์ ์๋๋ค.
๋ฐ๋ผ์ ์์ ํ๋ฉด์์ ์์ ๋ ๊ฒฝ์ฐ (๋ฐ๋ก ํ์ผ๋ก ๋ค์ด์ค๋ ์์ฒญ , ๋ฐ๋ก ๋ก๊ทธ์ธ ํ๋ฉด ๋ค์ด์ค๋ ์์ฒญ)์๋ ์ธ์ ์ด ๋ง๋ค์ด์ง์ง ์๋๋ค. ํ์ง๋ง BoarderController๋ฅผ ์ด์ฉํ๋ ์์ ๋ถํฐ ๋ก๊ทธ์ธ ํ๋์ง ์ฌ๋ถ๋ฅผ ๋ฐ์ง๊ธฐ ์ํด ์ธ์ ์ด ๋ง๋ค์ด์ง๋ฏ๋ก, ๊ทธ ๋ค๋ก๋ถํฐ๋ ์ธ์ ์ด ์ญ ์กด์ฌํ๋ค.
4. ์ค์ค๋ก ํด๋ณด๊ธฐ (BoardController, loginForm, LoginController)
request.getRequestURL();์ type์ด Stringbuffer๋ก์ String์ผ๋ก ์ฐ๋ ค๋ฉด toString ํ๋ณํ์ ํด์ค์ผ ํ๋ค.
๋งค๊ฐ๋ณ์๋ก String toURL๋ก ๋ฐ๊ธธ๋ ์ฒจ๋ถํฐ String์ธ ์ค ์์๋๋ SpringFrameWork๊ฐ ์๋ ํ๋ณํ ํด์ค ๊ฒ ์ด์๋ค.
StringBuffer sb = new StringBuffer();
String result = sb.toString();
input์ value ์์ฑ์ ์จ์ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ฐ์์ค์ผ์ง, ์คํธ๋ง ์ฟผ๋ฆฌ์ ๋ด์ฉ์ input์ด ๋ฐ์์ request ๊ฐ์ฒด์ ๊ฐ์ด ๋ฃ์ด์ค๋ค.
์์๋ type ์์ฑ์ "hidden"์ด ์๋๋ผ "text"๋ฅผ ํด์ ๋ด์ฉ์ด ๋ณด์ธ๋ค. test ํ ๋๋ "text"๋ฅผ ํด์ ๋ณด์ด๊ฒ ํ๊ณ ๋ง์ง๋ง์ ์ ๋ณด์ด๊ฒ "hidden"์ผ๋ก ๋ฐ๊ฟ์ค๋ค.
toURL ํํ๊ฐ http๋ถํฐ ๋ค ์ ํ์๋๋ฐ๋ ๋๋๊ตฌ๋ ์ฒ์ ์์๋ค.