JSP request.setAttribute() 상세 정보 및 인스턴스
4265 단어 JSPrequest.setAttribute()
request.setAttribute()는 어떻게 사용합니까?
JSP1 코드
String [] test=new String[2];
test[0]="1";
test[1]="2";
request.setAttribute("test",test) ;
response.sendRedirect("jsp2.jsp");
JSP2 코드
String test[]=(String[])request.getAttribute("test");
out.print(test);
왜 JS P2에서 test를 찾을 수 없습니까?같은 Request 주기에 변수를 저장하는 데 사용됩니다.예를 들어 servlet을 호출한 후에 JSP 페이지를 내놓는다. 이것은 Request 주기이다. 만약에 Jsp 페이지에서 servlet의 처리 구조가 필요하다면 Request에서.getAttribute에서 가져옵니다.
sendRedirect () 방법은 브라우저를 통해 방향을 바꾸기 때문에 두 번째 JSP 페이지에서 얻은 리퀘스트는 이전 페이지의 리퀘스트가 아닙니다.
RequestDispatcher 인터페이스의 forward() 방법을 사용해 보십시오.
다 같이 쓰고 있어요.
List list = new CommonsDao().getAllCommons();
request.setAttribute("CommonsList", list);
request.getRequestDispatcher("View.jsp").forward(request, response);
request.getAttribute() request.setAttribute()
request.getAttribute("nameOfObj")
JSP 페이지 양식의 컨트롤에 대한 Value를 사용할 수 있습니다.사실 폼 컨트롤에 있는 Object의name과value는 해시 테이블에 저장되어 있기 때문에 여기서 Object의name를 제시하면 해시 테이블에 대응하는value를 찾을 수 있습니다.서로 다른 페이지 간 전송값은request를 사용합니다.setAttribute(position,name OfObj)일 때 a.jsp에서 b.jsp로 한 번만 전달됩니다. 그 후에 이 리퀘스트는 그 작용 범위를 잃게 됩니다. 리퀘스트를 다시 설정해야 합니다.setAttribute().세션을 사용합니다.setAttribute() 는 이 값을 한 과정에서 항상 보유합니다.
P.S:JavaScript와 JSP는 서로 값을 전달할 수 없습니다. 왜냐하면 JavaScript는 클라이언트에서 실행되고 JSP는 서버에서 실행되기 때문입니다.매개 변수를 서로 전달할 수 있도록 하려면 JSP에 hidden 컨트롤러를 설정하여 위에서 말한 용법과 결합하여 필요한 수치를 전달할 수 있습니다.
오늘 Servlet 프로그램을 디버깅할 때 다음과 같은 오류가 발생했습니다!
java.lang.IllegalStateException: Cannot forward after response has been committed
글자 그대로 이해하면 의식은response가 제출된 후 프로그램이 다시 움직일 수 없다는 것입니다!코드를 연구한 후에 발견한 것은 앞에서 이미 Request를 한 번 실행했기 때문이다.request.getRequestDispatcher().forward()
하지만 뒤에 있는 리퀘스트.request.getRequestDispatcher().forward () 는 여전히 실행되었습니다!
그럼 요청을 믿을 이유가 있겠네요.request.getRequestDispatcher().forward () 점프 자체는 아무것도 되돌려주지 않고 프로그램의 실행을 종료하지 않습니다!
프로그램 뒤에 실행할 것은 실행할 것입니다!
sendRedirect () 는 요청의 방향을 정하고 초연결을 의미합니다. 예를 들어 A 페이지에request를 쓰십시오.setAtribute,sendRedirect에서 B페이지로 서버가 A페이지에서response를 주고 브라우저가 다시 request에서 B페이지로 갑니다. 두 번의 request와response가 있기 때문에 B페이지에서 request를 찾을 수 없습니다.setAtribute의 값, 주소 표시줄에서 url의 변화를 볼 수 있습니다
request.getRequestDispatcher().forward(request,response)는 요청 배달기입니다. 예를 들어 A 페이지에 request를 쓰십시오.setAtribute,request.getRequestDispatcher().forward(request,response)에서 B 페이지로 가면 서버가 당신에게 주는response는 B 페이지이고 Request와response가 한 번밖에 없기 때문에 B 페이지에서 request를 찾을 수 있습니다.setAtribute의 값, 주소 표시줄의 URL은 여전히 A 페이지의
request.sendRedirect 및 request.getRequestDispatcher.forward의 차이
1. forward 리디렉션은 용기 내부에서 이루어진 같은 웹 응용 프로그램의 리디렉션이기 때문에 forward 방법은 같은 웹 응용 프로그램의 자원으로만 리디렉션할 수 있습니다. 리디렉션된 브라우저 주소 표시줄의 URL은 변하지 않습니다.sendRedirect 방법은 모든 URL로 리디렉션할 수 있습니다. 이런 방법은 http 헤더를 수정하여 이루어진 것이기 때문에 URL은 제한이 없습니다. 리디렉션된 브라우저 주소 표시줄의 URL은 변경됩니다.
2. forward는 원본 HTTP 요청 대상(request)을 한 servlet 실례에서 다른 실례로 전달하고sendRedirect 방식으로 같은 응용 프로그램이 아닙니다.즉, 매개 변수의 전달 방식이 다르다는 것이다. forward의form 매개 변수는 따라 전달되기 때문에 두 번째 실례에서 HTTP가 요청한 매개 변수를 얻을 수 있다.sendRedirect는 링크를 통해서만 매개 변수,response를 전달할 수 있습니다.sendRedirect(“login.jsp?param1=a”).
3.sendRedirect는 상대 URL을 처리하여 자동으로 절대 URL로 변환할 수 있습니다. 만약에 주소가 상대적이고'/'가 없다면 웹 container는 현재 요청 URI에 대한 것이라고 생각합니다.예를 들어,response라면.sendRedirect ("login.jsp") 는 현재 servlet의 URL 경로에서 login을 찾습니다.jsp: http://localhost:8081/dms/servlet/Servlet리디렉션된 URL:http://localhost:8081/dms/servlet/login.jsp, 만약response.sendRedirect ("/login.jsp") 는 현재 응용 프로그램에서 URL을 찾습니다.http://localhost:8081/login.jsp.forward는 상대 경로를 이렇게 처리할 수 없습니다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
검색 사이트를 만들었으므로 정리해 보았습니다 1■목차 · 처음에 · 사이트 구성 · DB 구성 ・테이블 내용 ・급제점 ■ 처음에 Jsp·서블릿을 학습해, 뭔가 만들려고 생각했기 때문에 스포츠 짐의 검색 사이트를 만들어 보았다. 현재의 스포츠 체육관 검색 사이트는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.