수업/jQuery

230711 forward , redirect , JSP

보더96 2023. 7. 11. 17:59

페이지 이동방식

1. redirect 리다이렉트 (ex 

응답이 이루어지면 request, response 객체가 사라진다.

제일밑에서 요청이 다시 되면 request, response 객체가 다시 생성된다.

 

 

 

2. forward (

request, response 객체를 전달해준다. (계속 가져감)

요청이 들어오면 request, response객체는 계속 이동되며 사용된다.

 

서블릿은 요청, 제어만 하고 직접 응답은 하지 않는다.

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

request

move url을 sendRedirect을 사용하면 네이버로 이동하게 된다.

http://localhost:8888/backstudy/move

 

 

 

 

 

http://localhost:8888/backstudy/move?t=abc

move에 t값 abc를 보낸다는 url을 적으면

값이 나타나게 된다.

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

 

forward

 

http://localhost:8888/backstudy/move

를 들어가면 404가 뜬다

 

forward는 naver로 들어가지 못하고 패키지 안(/backstudy )에 있는 a , life 서 파일로만 경로 설정이 가능하다.

ex)  http://localhost:8888/backstudy/move  -->  http://localhost:8888/backstudy/life 으로 이동가능

 

 

 

http://localhost:8888/backstudy/move?t=abc

move에 t값 abc를 보낸다는 url을 적으면

값이 나타나게 된다.

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

http://localhost:8888/backstudy/productlistmvc

 

url뒤에

?cp=1   ->1페이지
?cp=2   ->2페이지
?cp=3   ->3페이지

적으면 다음 페이지가 나오게 한다.

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

setParameter, setAttribute 차이점


request.setAttribute("list", list);
=>


request.setParameter();
=>세팅할 메서드가 따로 없다.

 

 

setParameter, setAttribute 차이점

 

 

이클립스 productlistmvc, productlistview 참고!

 

productlistmvc (요청할controller) 에서 리스트, 요청전달 데이터, 어떻게 보여줄것인지를 적어서
String path = "/productlistview";
rd.forward(request, response);했으니

productlistview에서는 응답해준다.

 

뷰어로 사이트를 이동하는 이유

속도는 1번이 빠르다. (다이렉트로 정보를 주기때문에)

 

2번처럼 만드는 이유

단점 속도가 느리다. 그러나 응답사이트가 깔끔하고 세련되보이게된다.

1번처럼 하게 되면 응답내용이 많아져 controller(코드)가 너무 길어져 유지보수가 힘들어진다

2번처럼 하게 되면 응답내용이 많아도 코드를 따로 분리하기 때문에 유지보수가 쉬워진다.

 

자바코드와 html코드를 분리하는 목적이 jsp를 사용하는것이다 (3번처럼 하는것!!)

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

jspinit()  ->  자동호출

_jspService(요청,응답) => 호출된다.

 

 

jsp가 변경이 되는 경우(코드가 바뀐경우)

기존 객체는 메모리에서 소멸된다!  => jspDestroy()호출

 

first_jsp 파일과 비교 해보기

파일위치 : C:\SW\apache-tomcat-9.0.75\work\Catalina\localhost\backstudy\org\apache\jsp

 

 

 

jsp코드 => out.write() 가 들어가진다. (html 코드가 많이 들어간다!)

 

JSP 구성요소

-HTML 요소 : _jspService()내부의 out.write()의 인자값

-JS요소

  -Scripting element

      -scriptlet :  _jspService()내부에 들어갈 구문

                         < % (자바구문을 적어준다) % > <% int i;%>

      -expression : <% = 변수값 또는 함수 반환값% > <%out.print(변수값);%>

                               또는 <%out.print(m());%>

                               <%=i%>는 <%out.print(i);%)와 같음

      -desclaration : _jspService()외부에 들어갈 구문

                                < % ! % >     ->        <%! 멤버변수선언,메서드선언%>

                                 <%! int i; %>

 

 

-Directive element

 -page directive          <%@page %>

 -include directive      <%@ include %>

 -taglib directive         <%@taglib %>

          %@는 붙여서 사용해야한다.

 

 

-Action Tag element

 

 

 

 

 

 

<body> 안에 <% int i;%>를 넣으면

 

<body> 안에 <% int i;%> int j;를 넣으면

<>를 안하면 문자열로 out.write()으로 만들어진다.

 

 

i변수를 사용할때 ;는 사용하면 안된다!!!!!!

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

 

language는 기본으로 java 이고

pageEncoding="UTF-8"인데 contentType에 이미 적혀있으니 삭제해도 상관없다.

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

999까지 적혀있다.

div대신 span사용할 경우 띄어쓰기 없이 999까지 적힌다.

 

 

FileInputStream객체를 만들때 맨 위에 page import를 만들어준다.

 

 

 

 

controller, viewer(JSP)을 분리를 해야한다.

MVC 구조 - control :백개발자,&nbsp; &nbsp;view : 디자인 으로 나누기위해
응답을 html으로 하면 웹브라우저 형태이고, 웹이 아닌 다양한 클라이언트이면 json, xml형태로 응답해야한다!!!