JSP 페이지 점프 관련(포워딩, 리디렉션, 세션 및 쿠키, 애플리케이션)

8588 단어 공부 노트


  • 페이지 점프를 위한 데이터 전송

  • 요청 전달
  • 응답 리디렉션
  • 중국어 깨짐 현상이 해결되었습니다.
  • 두 세션 세션
  • 3개 쿠키 캐시
  • 네 가지 응용 프로그램




  • 1. 페이지 점프 데이터 전송


    샘플 코드
    "welcome.jsp" method="post"> 用户名:type="text" name="username"> 密码:type="text" name="password"> type="checkbox" name="hobby" value="lanqiu">篮球的 type="checkbox" name="hobby" value="zuqiu">足球的 type="checkbox" name="hobby" value="paiqiu">排球的 type="checkbox" name="hobby" value="ymaoqiu">羽毛球的 type="submit" name="" value="提交">
    welcome.jsp
    .getParameter("username");
            String upwd=request.getParameter("password");
            String[] zu=request.getParameterValues("hobby");
    
            out.print(uname+"
    "
    ); out.print(upwd+"
    "
    ); for(String s:zu){ out.print(s+"
    "
    ); } %>

    1.요청(전달)



    포워딩은 서버 동작으로 주로 쿼리에 사용되며 일회성 요청이며 매개변수를 전달할 수 있으며 URL은 변경되지 않습니다.

    //转发的参数传递
    request.setAttribute("keyname", uname);
    request.setAttribute("keypwd", upwd);
    //转发的跳转语句
    request.getRequestDispatcher("login.jsp").forward(request, response);
    //在转发跳转后页面获取变量
        //通过html定义的id或name获取
        String n1=request.getParameter("username");
        String p1=request.getParameter("password");
        //通过设定属性值获取
        String n2=(String)request.getAttribute("keyname");
        String p2=(String)request.getAttribute("keypwd");

    2. 반응(리다이렉트)



    Redirection은 클라이언트의 동작으로 작업 추가, 삭제, 수정 후 새로 고침에 주로 사용 두 개의 요청으로 일반적으로 사용하지 않는 한 매개변수가 필요하지 않습니까? 스플라이싱, URL은 점프 후 변경되며 리디렉션은 한 번 요청한 것을 가져올 수 없습니다.

    //重定向的跳转语句
    response.sendRedirect("loginOk.jsp");

    3. 중국어 왜곡 솔루션



    방법 1 jsp 파일의 본문 위치에 문자 인코딩 설정

            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
    방법 2: 텍스트 내용을 바이트 데이터로 분할한 다음 인코딩 형식에 따라 접합
    String n2=(String)request.getAttribute("keyname").getByte[].setCharacterEncoding("utf-8")

    방법 3 주의할 점은 URI가 URL이 아니라 근본 원인이다. apache-tomcat-7.0.47\conf 아래 Server.xml

    >     port="8080" protocol="HTTP/1.1"
    >                connectionTimeout="20000"
    >                redirectPort="8443" URIEncoding="UTF-8"/>

    Two.session(세션)



    페이지 점프라면 세션이다 두 개의 창이 두 개의 세션이라면 session.setAttribute("key", value); session.getAttribute("key"); 한 세션에서 얻을 수 있다

    3. 쿠키(캐시)



    쿠키(때로는 복수형 쿠키)는 사용자를 식별하고 세션을 추적하기 위해 특정 웹사이트가 사용자의 로컬 터미널에 저장하는 데이터(보통 암호화됨)를 나타냅니다.

    //创建cookie对象
    Cookie cookie = new Cookie(column_name,column);
    respond.addCookie(cookie);
    
    //获取cookie对象
    if(cookie != null && cookies.length>0){
      for(int i=0;iif(cookies[i].getName().equals("column_name")){
    column_name = URLDecoder.decode(cookies[i].getValue,"UTF-8");
    }
    }
    }
    %>

    4. 신청



    Application 개체는 세션 개체와 유사하게 모든 페이지의 변수를 저장하고 액세스하는 데 사용됩니다. 차이점은 모든 사용자가 Application 개체를 공유하고 세션 개체와 사용자 간의 관계가 일대일이라는 점입니다. 응용 프로그램 개체는 프로젝트에 저장되며 서버 i의 내장 속성이며 수명 주기는 서버의 수명 주기와 같습니다.

    count = 0;
    Object object = application.getAttribute("count");
    if(object==null){
    count=1;
    }else{
    count = (Interger)object;
    count++;
    }
    
    application.setAttribute("count",count);
    out.print(count);
    %>

    좋은 웹페이지 즐겨찾기