JSP 에서 request 와 response 의 용법 에 대한 상세 한 설명

11810 단어 JSPrequestresponse
JSP 에서 request 와 response 의 용법 에 대한 상세 한 설명
개요:
이 두 대상 을 배우 기 전에 우 리 는 http 프로 토 콜 에 대한 기본 적 인 이 해 를 가지 고 있 을 것 입 니 다.http 프로 토 콜 을 잘 모 르 면 http 프로 토 콜 에 대한 소 개 를 볼 수 있 습 니 다.사실 request 와 response 의 사용 은 대부분 http 프로 토 콜 에 대한 작업 이기 때문이다.
요청 대상 소개
우 리 는 먼저 request 대상 에서 소개 합 니 다.
http 프로 토 콜 이 요청 서버 의 형식 을 정의 한 것 을 알 고 있 습 니 다:
요청 줄
요청 헤더
스페이스 바
요청 체(get 요청 체 없 음)
자,여기 서 우 리 는 상세 하 게 소개 하지 않 겠 습 니 다.우 리 는 몇 개의 응용 만 보면 됩 니 다.어렵 지 않 습 니 다.
응용 1 요청 헤더 가 져 오기

/** 
 *   HTTP    
 *   String getHeader(String name),       
 *   int getIntHeader(String name),     int       
 *   long getDateHeader(String name),              
 *    Enumeration<String> getHeaders(String name),         
 * 
 * 
 */ 
public class CServlet extends HttpServlet { 
 
  public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
 
    String ip = request.getRemoteAddr();//  IP   
    String method = request.getMethod();//       
    System.out.println(ip); 
    System.out.println(method); 
    getLiuLanQi(request); 
    protectMethod(request, response); 
  } 
//    
  public void protectMethod(HttpServletRequest request, 
      HttpServletResponse response) { 
    String url = request.getHeader("referer"); 
    System.out.println(url); 
    if(url != null && url.equalsIgnoreCase("http://localhost:8080/day10/MyHtml.html") ) { 
      System.out.println("hi"); 
    } 
    else { 
      response.setStatus(302); 
      response.setHeader("Location","/day10/MyHtml.html"); 
      System.out.println("   "); 
    } 
  } 
//         
  public void getLiuLanQi(HttpServletRequest request) { 
    String user = request.getHeader("User-Agent"); 
    if(user != null) { 
      String userNoC = user.toLowerCase(); 
      if(userNoC.contains("chrome")) { 
        System.out.println("     :  " ); 
      } 
      else if(userNoC.contains("firefox/")) { 
        System.out.println("     :  "); 
      } 
      else { 
        System.out.println("     :IE"); 
      } 
    } 
    else { 
      System.out.println("null"); 
    } 
  } 
} 
2 URL 가 져 오기 경로 적용

/** 
 *     URL 
  http://localhost:8080/day10_2/AServlet?username=xxx&password=yyy 
    > String getScheme():    ,http 
    > String getServerName():      ,localhost 
    > String getServerPort():       ,8080 
    > *****String getContextPath():     ,/day10_2 
    > String getServletPath():  Servlet  ,/AServlet 
    > String getQueryString():      ,        。username=xxx&password=yyy 
    > String getRequestURI():    URI,     +Servlet  。/day10_2/AServlet 
    > String getRequestURL():    URL,              。http://localhost:8080/day10_2/AServlet 
 * 
 * 
 */ 
public class DServlet extends HttpServlet { 
 
  public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
    System.out.println(request.getScheme()); 
    System.out.println(request.getServerName()); 
    System.out.println(request.getServerPort()); 
    System.out.println(request.getContextPath()); 
    System.out.println(request.getServletPath()); 
    System.out.println(request.getQueryString()); 
    System.out.println(request.getRequestURI()); 
    System.out.println(request.getRequestURL()); 
  } 
 
} 
응용 3 요청 매개 변수 가 져 오기

/** 
 * 
 *     :         ,         ! 
    > *****String getParameter(String name):            ,          
    > String[] getParameterValues(String name):            ,          
    > Enumeration<String> getParameterNames():           
    > *****Map<String,String[]> getParameterMap():        ,  key    ,value    。 
 * 
 */ 
public class EServlet extends HttpServlet { 
 
  public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
    doPost(request,response); 
  } 
 
  public void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
    request.setCharacterEncoding("utf-8");//           ,                  
    String name = request.getParameter("name"); 
    String password = request.getParameter("password"); 
    String[] aihao = request.getParameterValues("aihao"); 
    response.setHeader("content-type", "text/html;charset=utf-8"); 
    PrintWriter pw = response.getWriter(); 
    pw.println("name:" + name + "<br/>"); 
    pw.println("password:" + password + "<br/>"); 
    pw.print("aihao"); 
    for (int i = 0; i < aihao.length; i++) { 
      switch (i) { 
      case 1: 
        pw.print("  "); 
        break; 
      case 2: 
        pw.print("  "); 
        break; 
      case 3: 
        pw.print("   "); 
        break; 
 
      default: 
         
        break; 
      } 
    } 
    pw.close(); 
  } 
 
} 

<!--        html --> 
<html> 
 <head> 
  <title>denglu.html</title> 
  <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
 </head> 
  
 <body> 
  <form action="/day10/EServlet" method="post"><!--   post     --> 
      :<input type="text" name="name"/><br/> 
      :<input type="password" name="password"><br/> 
      :<input type="checkbox" name="aihao" value="1"/>   
    <input type="checkbox" name="aihao" value="2"/>   
    <input type="checkbox" name="aihao" value="3"/>    
    <input type="submit" value="  "> 
  </form> 
 </body> 
</html> 

응용 4 설정 request 대상 속성
같은 응용 프로그램 servlet 간 에 전달 할 만 한 가치 가 있 고 퍼 가기 도 사 용 했 습 니 다.

/** 
 * 
 ** request  
    Servlet      :request、session、application,        : 
    > void setAttribute(String name, Object value) 
    > Object getAttribute(String name) 
   > void removeAttribute(String name); 
    >          request.setAttribute()、request.getAttribute()   !   Servlet  setAttribute()   ,   Servlet  getAttribute()   。 
 
 * 
 */ 
public class FServlet extends HttpServlet { 
 
  public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
    request.setAttribute("name","weijinhao"); 
    request.setAttribute("password", "123"); 
    RequestDispatcher rd = request.getRequestDispatcher("/GServlet"); 
    rd.forward(request, response); 
  } 
 
} 


public class GServlet extends HttpServlet { 
 
  public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
    String name = (String)request.getAttribute("name"); 
    String password = (String)request.getAttribute("password"); 
    response.setHeader("content-type", "text/html;charset=utf-8"); 
    PrintWriter pw = response.getWriter(); 
    pw.println("name:" + name + "<br/>"); 
    pw.println("password:" + password + "<br/>"); 
    pw.close(); 
  } 
 
} 
자,request 의 용법 은 대체로 이것 입 니 다.
response 대상 을 살 펴 봅 시다.
response 대상 사용
http 프로 토 콜 은 응답 브 라 우 저의 형식 을 정의 합 니 다:
응답 줄
응답 헤드
스페이스 바
호응 체
response 대상 의 대체적인 응용 은 응답 코드 를 설정 하고 응답 헤드 를 설정 하 며 응답 본문 을 설정 하 는 데 사 용 됩 니 다.
응용 1 설정 응답 본문

/** 
   * response    
   * 1,    
   * 2,    
   */ 
  public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
    //String n = "hello javaweb"; 
    //byte[] b = n.getBytes(); 
    //       
    /*ServletOutputStream outputStream = response.getOutputStream(); 
    outputStream.write(b); 
    outputStream.close();*/ 
     
     
    //       
    /*PrintWriter p = response.getWriter(); 
    p.write(n); 
    p.close();*/ 
     
    //commoms       
    FileInputStream fileInputStream = new FileInputStream("C:/Users/74087/Desktop/6226354_994604.jpg"); 
    byte[] b = IOUtils.toByteArray(fileInputStream); 
    ServletOutputStream outputStream = response.getOutputStream(); 
    outputStream.write(b); 
    outputStream.close(); 
  } 
 
} 
응용 2 응답 코드 와 응답 헤드 설정

/** 
   *response      
   *1, sendError(int sc)//       
   *2, sendError(int sc, java.lang.String msg) //          
   *3, setStatus(int sc) //         
   *response      
   *1, setDateHeader(java.lang.String name, long date) 
   *2, setHeader(java.lang.String name, java.lang.String value) 
   *3, setIntHeader(java.lang.String name, int value) 
   *                          
   *  addDateHeader(java.lang.String name, long date) 
   *  addHeader(java.lang.String name, java.lang.String value) 
   *  addIntHeader(java.lang.String name, int value) 
   */ 
  public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
    //sendNum(response); 
    //sendRe(response); 
    //refresh(response); 
    //noCache(response); 
  } 
  //        
  public void noCache(HttpServletResponse response) { 
    response.setHeader("Cache-Control","no-cache"); 
    response.setHeader("pragma","0"); 
    response.setHeader("expires","no-cache"); 
  } 
  //     
  public void refresh(HttpServletResponse response) { 
    response.setHeader("refresh", "5;url=http://www.baidu.com"); 
  } 
  //       
  public void sendRe(HttpServletResponse response) { 
    response.setStatus(302); 
    response.setHeader("Location", "http://www.baidu.com"); 
  } 
 
  public void sendNum(HttpServletResponse response) throws IOException { 
    response.setStatus(200); 
    response.sendError(404); 
    response.sendError( 404, "ser accept your request but i don't want to you see my web page"); 
  } 
 
} 
궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기