国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

request對象和response對象

2019-11-08 03:20:20
字體:
來源:轉載
供稿:網友

web服務器收到客戶端的HTTP請求,會針對每一次請求分別創建一個用于代表請求的request對象和代表響應的response對象。

1.要得到客戶機提交過來的數據,只需要找request對象就行了。

2、要向客戶機輸出數據,只需要找response對象就行了。

一、response對象

1.1向客戶端發送數據,以字節為單位(一定要先設置編碼方式,再輸出)

[java] view plain copy PRint?String data = “你好,中國1”;  OutputStream out = response.getOutputStream();  out.write(data.getBytes());//查找本機默認編碼進行編碼  
        String data = "你好,中國1";        OutputStream out = response.getOutputStream();        out.write(data.getBytes());//查找本機默認編碼進行編碼[java] view plain copy print?    String data = “你好,中國2”;  OutputStream out = response.getOutputStream();  out.write(data.getBytes(”UTF-8”));//以UTF-8進行編碼  //告訴瀏覽器編碼方式  response.setHeader(”Content-Type”,“text/html;charset=UTF-8” );  
           String data = "你好,中國2";        OutputStream out = response.getOutputStream();        out.write(data.getBytes("UTF-8"));//以UTF-8進行編碼        //告訴瀏覽器編碼方式        response.setHeader("Content-Type","text/html;charset=UTF-8" );[java] view plain copy print?String data = “你好,中國3”;  OutputStream out = response.getOutputStream();  out.write(”<meta http-equiv=’Content-Type’ content=’text/html;charset=UTF-8’>”.getBytes());////通過meta標簽模擬請求頭  out.write(data.getBytes(”UTF-8”));//以UTF-8進行編碼  
       String data = "你好,中國3";        OutputStream out = response.getOutputStream();        out.write("<meta http-equiv='Content-Type' content='text/html;charset=UTF-8'>".getBytes());////通過meta標簽模擬請求頭        out.write(data.getBytes("UTF-8"));//以UTF-8進行編碼[java] view plain copy print?String data = “你好,中國4”;      OutputStream out = response.getOutputStream();      response.setContentType(”text/html;charset=UTF-8”);      out.write(data.getBytes(”UTF-8”));//以UTF-8進行編碼  
      String data = "你好,中國4";        OutputStream out = response.getOutputStream();        response.setContentType("text/html;charset=UTF-8");        out.write(data.getBytes("UTF-8"));//以UTF-8進行編碼[java] view plain copy print?  

[java] view plain copy print?response.setContentType(“text/html;charset=UTF-8”);  
response.setContentType("text/html;charset=UTF-8");

等價于下面兩句代碼的效果:

response.setCharacterEncoding(“UTF-8”);//更改服務器發送數據的默認編碼response.setHeader(“Content-Type”,”text/html;charset=UTF-8”);//還要通知客戶端解碼方式

[java] view plain copy print?int x=97;  OutputStream out = response.getOutputStream();  out.write((x+”“).getBytes());////向客戶端發送數字  
       int x=97;          OutputStream out = response.getOutputStream();          out.write((x+"").getBytes());////向客戶端發送數字1.2 以字符為單位向客戶端發送數據

              String data = “你是誰?”;              response.setCharacterEncoding(“UTF-8”); //設置編碼為UTF-8              response.setHeader(“Content-Type”, “text/html;charset=UTF-8”);//告訴客戶端編碼方式                                         // 第二種方法:相當于以上兩句代碼              //response.setContentType(“text/html;charset=UTF-8”);              PrintWriter writer = response.getWriter();//默認編碼是iso-8859-1 創建該對象前必須設置好編碼方式                            writer.write(data);              System.out.println(response.getCharacterEncoding());             1.3 讓客戶端以下載方式打開文件,解決中文文件名亂碼問題(URLEncoder.encode(name, “UTF-8”))

[java] view plain copy print?//得到文件的真實路徑  String realPath = getServletContext().getRealPath(”/files/漂亮美眉.jpg”);  //獲取文件名  String name = realPath.substring(realPath.lastIndexOf(”//”));    //設置響應頭,通知客戶端以下載的方式打開文件  response.setHeader(”Content-Disposition”, “attachment;filename=”+URLEncoder.encode(name, “UTF-8”));    //構建輸入流     InputStream in = new FileInputStream(realPath);          //輸出到客戶端的流     OutputStream out = response.getOutputStream();     int len = -1;     byte buf[] = new byte[1024];     while((len=in.read(buf))!=-1)     {      out.write(buf, 0, len);     }          in.close();  
       //得到文件的真實路徑        String realPath = getServletContext().getRealPath("/files/漂亮美眉.jpg");        //獲取文件名        String name = realPath.substring(realPath.lastIndexOf("http://"));        //設置響應頭,通知客戶端以下載的方式打開文件        response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(name, "UTF-8"));        //構建輸入流        InputStream in = new FileInputStream(realPath);        //輸出到客戶端的流        OutputStream out = response.getOutputStream();        int len = -1;        byte buf[] = new byte[1024];        while((len=in.read(buf))!=-1)        {            out.write(buf, 0, len);        }        in.close();1.4 輸出隨機數字生成驗證碼圖片

[java] view plain copy print?        //設置不要緩存(3種方式,建議三種都設置,防止瀏覽器不支持)          response.addHeader(”Pragma”, “no-cache”);           response.setHeader(”Cache-Control”, “no-cache”);           response.setHeader(”Expires”, “0”);                    //1.內存圖像 BufferedImage          BufferedImage image = new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);                    //2.創建畫筆          Graphics g = image.getGraphics();                    //2.1畫邊框          g.setColor(Color.GRAY);//設置邊框顏色          g.drawRect(0, 0, WIDTH, HEIGHT);//畫矩形邊框          //2.2填充邊框          g.fillRect(1, 1, WIDTH-1, HEIGHT-1);                    //2.3輸出驗證隨機數字4個          Random r = new Random();          g.setColor(Color.BLUE);          int x = 5;          for(int i=0;i<4;i++)          {                        g.setFont(new Font(“宋體”,Font.BOLD,20));              g.drawString(r.nextInt(10)+“”, x, 20);              x+=30;          }                    //2.4畫干擾線          g.setColor(Color.YELLOW);          for(int i = 0;i<9;i++)          {                               g.drawLine(r.nextInt(WIDTH),r.nextInt(HEIGHT), r.nextInt(WIDTH), r.nextInt(HEIGHT));          }                    //3 利用response輸出流輸出image          ImageIO.write(image,”jpeg”,response.getOutputStream());<pre name=“code” class=“java”>       //response.setHeader(“Expires”, (System.currentTimeMillis()+24*3600*10*1000)+”“);//緩存10天          response.setDateHeader(”Expires”,System.currentTimeMillis()+10*24*1000*60*60);</pre><br>  <pre></pre>  <p></p>  <pre></pre>  1.5 控制客戶端刷新時間  <p></p>  <p></p>  <pre name=”code” class=“java”>       //response.setHeader(“Refresh”, “5;URL=/day05/default.html”);//5秒后跳轉,url是跳轉的鏈接           response.getOutputStream().write(”<meta http-equiv=/”Refresh/” content=/”3;URL=/day05/login.html/”>”.getBytes());</pre>1.6 控制客戶端緩存時間  <p></p>  <p></p>  <pre name=”code” class=“java”>      //response.setHeader(“Expires”, (System.currentTimeMillis()+24*3600*10*1000)+”“);//緩存10天          response.setDateHeader(”Expires”,System.currentTimeMillis()+10*24*1000*60*60);</pre><br>  1.7 用response實現請求重定向  <p></p>  <p><img src=”http://s1.VeVb.com/20170221/ngwujgzxrds53.gif” alt=“”></p>  <p>特點:地址欄會變,發送兩次請求,增加服務器負擔。</p>  <p>實現方式:response.sendRedirect()<br>  實現原理:302狀態碼和location頭即可實現重定向<br>  </p>  <pre name=”code” class=“java”>           //response.sendRedirect(“/day05/servlet/ResponseDemo5”);//絕對路徑   注意      // response.sendRedirect(“/servlet/ResponseDemo5”);//相對路徑這里用是錯誤的,因為重定向是由客戶端發起的            response.setStatus(307);//302 或者 307都可            response.setHeader(”location”, “http://localhost:8080/day05/servlet/ResponseDemo1”);</pre><br>  1.8 小細節  <p></p>  <p></p>  <pre name=”code” class=“java”>          String  s1 = “abc”;            String  s2 = ”def”;            response.getOutputStream().write(s1.getBytes());            //response.getWriter().write(s2);            //注:getOutputStream和getWriter這兩個方法互相排斥,            //調用了其中的任何一個方法后,就不能再調用另一方法,會拋異常。            //java.lang.IllegalStateException:             //getOutputStream() has already been called for this response</pre><br>  <p><br>  </p>  <p>二、request(HttpServletRequest)對象</p>  <p>2.1.get方法</p>  <p></p><pre name=”code” class=“java”>         String locale = request.getLocalName();//傳輸協議           String url = request.getRequestURL().toString();//請求的地址           String uri = request.getRequestURI();//沒有主機名的地址           String protocol = request.getProtocol();//獲取協議           String  add = request.getRemoteAddr();//客戶端ip           String host = request.getRemoteHost();//客戶端主機名           String port = request.getRemotePort()+”“;//客戶端端口號           String method = request.getMethod();//客戶端的請求方式           String localAddr = request.getLocalAddr();//獲取服務器地址           String username = request.getParameter(”username”);//地址后面?請求的參數           String serverPort = request.getServerPort()+”“;//服務器端口號           String serverName = request.getServerName();//服務器名</pre><br>  2.2 獲取客戶端請求頭<p></p>  <p></p><pre name=”code” class=“java”>           response.setContentType(“text/html;charset=UTF-8”);               PrintWriter out = response.getWriter();             //獲取單個請求頭的值             out.write(request.getHeader(”Accept-Language”)+“<br/>”);             //獲取單個請求頭多個值             Enumeration  headers = request.getHeaders(”user-agent”);             while(headers.hasMoreElements())             {                 out.println(headers.nextElement()+”<hr/>”);             }                          //獲取所有的請求頭名             Enumeration names = request.getHeaderNames();             while(names.hasMoreElements())             {   //根據請求頭名得到對應的值                 String name = (String)names.nextElement();                 out.println(name+”=”+request.getHeader(name)+“<br/>”);             }</pre><br>  2.3獲取請求參數<p></p>  <p>String usernameValue = request.getParameter(”username”);//參數不存在為null<br>  </p>  <p></p><pre name=”code” class=“java”>String names[] = request.getParameterValues(“username”);          for(String name:names)          {              System.out.println(name);////得到某個請求參數的所有值                        }</pre><pre name=”code” class=“java”>             //獲取所有的請求參數名            Enumeration names = request.getParameterNames();            while(names.hasMoreElements())            {  //根據參數名得到值                String name = (String)names.nextElement();                System.out.println(name+”——->”+request.getParameter(name));            }</pre><br>  2.4 封裝到bean<br>  <pre name=”code” class=“java”>public class Student {     private String[] username;     private String passWord;           public String[] getUsername() {          return username;      }      public void setUsername(String[] username) {          this.username = username;      }      public String getPassword() {          return password;      }      public void setPassword(String password) {          this.password = password;      }            }    </pre><pre name=”code” class=“java”>//利用BeanUtils和 getParameterMap()將對象封裝到bean      private void test5(HttpServletRequest request) {          // TODO Auto-generated method stub          Map map = request.getParameterMap();          Student s = new Student();          try {              BeanUtils.populate(s, map);          } catch (IllegalaccessException e) {              // TODO Auto-generated catch block              e.printStackTrace();          } catch (InvocationTargetException e) {              // TODO Auto-generated catch block              e.printStackTrace();          }          String[] names = s.getUsername();          System.out.println(names[0]);//aa          System.out.println(names[1]);//bb          System.out.println(s.getPassword());//123      }//從客戶端傳過來的值username兩個(假如是aa和bb) 和一個password值(假如是123)</pre><br>  2.5 得到請求正文<br>  <pre name=”code” class=“java”>      //獲取請求正文          InputStream in = request.getInputStream();          byte[] buf =new byte[1024];          int len = -1;          while((len=in.read(buf))!=-1)          {              System.out.println(new String(buf,0,len));          }</pre><br>  2.6解決請求參數的中文亂碼<p></p>  <p> get方式:先按照原編碼得到原始字節碼,然后再重新編碼。如:name = new String(name.getBytes(“ISO-8859-1”),“UTF-8”);</p>  <p>post方式:客戶端是什么編碼,發送的請求數據就是什么編碼,根據客戶端的編碼,告知服務器編碼方式。</p>  <p>如:request.setCharacterEncoding(”UTF-8”);// 只適合POST請求方式</p>  <p><br>  </p>  <p>2.7請求轉發 forward</p>  <p><span style=”white-space:pre”></span>RequestDispatcher rd = request.getRequestDispatcher(“path”);//得到轉發器,path可以是相對路徑或者絕對路徑(因為是服務器發起的)<br>  <span style=”white-space:pre”></span>rd.forward(request, response);<br>  </p>  <p><img src=”http://s1.VeVb.com/20170221/5nqhuq3ypfu53.gif” alt=“”><br>  </p>  <p>2.8 包含include</p>  <p><span style=”white-space:pre”></span>RequestDispatcher rd = request.getRequestDispatcher(“/servlet/RequestDemo9”);<br>  <span style=”white-space:pre”></span>rd.include(request, response);<br>  </p>  <p><img src=”http://s1.VeVb.com/20170221/wpjzchfijqx53.gif” alt=“”><br>  </p>  <p>三 、路徑的寫法:<br>  a、絕對路徑寫法:ServeltContext都必須用絕對路徑。“/”開始 (如ServletContext.getRequestDispatcher(”path”) path必須是絕對路徑)<br>  b、相對路徑:其他情況都可以使用相對路徑,也可以使用絕對路徑<br>  <br>  <br>  c、在使用絕對路徑時,要不要加”/”或者是項目名:如果是服務器調用的,不用加項目名,用“/”就可以代表了當前應用根目錄<br>  如果是客戶端調用的,必須加上項目名<br>  <br>  <br>  1、轉發:request.getRequestDispather(String url)<br>  絕對路徑:url    /servlet/ServletDemo<br>  2、重定向:response.sendRedirect(String url)<br>  絕對路徑:url    /day05/servlet/ServletDemo<br>  <br>  <br>  3、超鏈接:<a href=“url”/><br>  絕對路徑:url  /day05/servlet/ServletDemo<br>  4、類加載文件的路徑<br>  web應用中只能用相對路徑,相對于classes目錄的<br>  5、<fomr action=“url”/><br>  絕對路徑:/day05/servlet/ServletDemo<br>  6、頁面分幀(frame)<br>  絕對路徑:/day05/servlet/ServletDemo<br>  7、ServletContext.getRealPath(url)<br>  絕對路徑:url    /servlet/ServletDemo<br>  <br>  <br>  URLEncoder.encode(”name”, “UTF-8”)//解決文件下載名中文亂碼</p>  <p><br>  </p>  <p></p>       
      //設置不要緩存(3種方式,建議三種都設置,防止瀏覽器不支持)        response.addHeader("Pragma", "no-cache");         response.setHeader("Cache-Control", "no-cache");         response.setHeader("Expires", "0");        //1.內存圖像 BufferedImage        BufferedImage image = new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);        //2.創建畫筆        Graphics g = image.getGraphics();        //2.1畫邊框        g.setColor(Color.GRAY);//設置邊框顏色        g.drawRect(0, 0, WIDTH, HEIGHT);//畫矩形邊框        //2.2填充邊框        g.fillRect(1, 1, WIDTH-1, HEIGHT-1);        //2.3輸出驗證隨機數字4個        Random r = new Random();        g.setColor(Color.BLUE);        int x = 5;        for(int i=0;i<4;i++)        {            g.setFont(new Font("宋體",Font.BOLD,20));            g.drawString(r.nextInt(10)+"", x, 20);            x+=30;        }        //2.4畫干擾線        g.setColor(Color.YELLOW);        for(int i = 0;i<9;i++)        {               g.drawLine(r.nextInt(WIDTH),r.nextInt(HEIGHT), r.nextInt(WIDTH), r.nextInt(HEIGHT));        }        //3 利用response輸出流輸出image        ImageIO.write(image,"jpeg",response.getOutputStream());[java] view plain copy print?//response.setHeader("Expires", (System.currentTimeMillis()+24*3600*10*1000)+"");//緩存10天  response.setDateHeader("Expires",System.currentTimeMillis()+10*24*1000*60*60);  
       //response.setHeader("Expires", (System.currentTimeMillis()+24*3600*10*1000)+"");//緩存10天        response.setDateHeader("Expires",System.currentTimeMillis()+10*24*1000*60*60);

1.5 控制客戶端刷新時間

[java] view plain copy print?//response.setHeader(“Refresh”, “5;URL=/day05/default.html”);//5秒后跳轉,url是跳轉的鏈接    response.getOutputStream().write(”<meta http-equiv=/”Refresh/” content=/”3;URL=/day05/login.html/”>”.getBytes());  
       //response.setHeader("Refresh", "5;URL=/day05/default.html");//5秒后跳轉,url是跳轉的鏈接         response.getOutputStream().write("<meta http-equiv=/"Refresh/" content=/"3;URL=/day05/login.html/">".getBytes());1.6 控制客戶端緩存時間

[java] view plain copy print?//response.setHeader(“Expires”, (System.currentTimeMillis()+24*3600*10*1000)+”“);//緩存10天  response.setDateHeader(”Expires”,System.currentTimeMillis()+10*24*1000*60*60);  
      //response.setHeader("Expires", (System.currentTimeMillis()+24*3600*10*1000)+"");//緩存10天        response.setDateHeader("Expires",System.currentTimeMillis()+10*24*1000*60*60);1.7 用response實現請求重定向

特點:地址欄會變,發送兩次請求,增加服務器負擔。

實現方式:response.sendRedirect()實現原理:302狀態碼和location頭即可實現重定向

[java] view plain copy print?       //response.sendRedirect(“/day05/servlet/ResponseDemo5”);//絕對路徑       // response.sendRedirect(“/servlet/ResponseDemo5”);//相對路徑這里用是錯誤的,因為重定向是由客戶端發起的  response.setStatus(307);//302 或者 307都可  response.setHeader(”location”, “http://localhost:8080/day05/servlet/ResponseDemo1”);  
           //response.sendRedirect("/day05/servlet/ResponseDemo5");//絕對路徑 注意      // response.sendRedirect("/servlet/ResponseDemo5");//相對路徑這里用是錯誤的,因為重定向是由客戶端發起的          response.setStatus(307);//302 或者 307都可          response.setHeader("location", "http://localhost:8080/day05/servlet/ResponseDemo1");1.8 小細節

[java] view plain copy print?String  s1 = “abc”;  String  s2 = ”def”;  response.getOutputStream().write(s1.getBytes());  //response.getWriter().write(s2);  //注:getOutputStream和getWriter這兩個方法互相排斥,  //調用了其中的任何一個方法后,就不能再調用另一方法,會拋異常。  //java.lang.IllegalStateException:   //getOutputStream() has already been called for this response  
          String  s1 = "abc";          String  s2 = "def";          response.getOutputStream().write(s1.getBytes());          //response.getWriter().write(s2);          //注:getOutputStream和getWriter這兩個方法互相排斥,          //調用了其中的任何一個方法后,就不能再調用另一方法,會拋異常。          //java.lang.IllegalStateException:           //getOutputStream() has already been called for this response

二、request(HttpServletRequest)對象

2.1.get方法

[java] view plain copy print?String locale = request.getLocalName();//傳輸協議  String url = request.getRequestURL().toString();//請求的地址  String uri = request.getRequestURI();//沒有主機名的地址  String protocol = request.getProtocol();//獲取協議  String  add = request.getRemoteAddr();//客戶端IP  String host = request.getRemoteHost();//客戶端主機名  String port = request.getRemotePort()+”“;//客戶端端口號  String method = request.getMethod();//客戶端的請求方式  String localAddr = request.getLocalAddr();//獲取服務器地址  String username = request.getParameter(”username”);//地址后面?請求的參數  String serverPort = request.getServerPort()+”“;//服務器端口號  String serverName = request.getServerName();//服務器名  
         String locale = request.getLocalName();//傳輸協議         String url = request.getRequestURL().toString();//請求的地址         String uri = request.getRequestURI();//沒有主機名的地址         String protocol = request.getProtocol();//獲取協議         String  add = request.getRemoteAddr();//客戶端IP         String host = request.getRemoteHost();//客戶端主機名         String port = request.getRemotePort()+"";//客戶端端口號         String method = request.getMethod();//客戶端的請求方式         String localAddr = request.getLocalAddr();//獲取服務器地址         String username = request.getParameter("username");//地址后面?請求的參數         String serverPort = request.getServerPort()+"";//服務器端口號         String serverName = request.getServerName();//服務器名2.2 獲取客戶端請求頭

[java] view plain copy print?response.setContentType(“text/html;charset=UTF-8”);    PrintWriter out = response.getWriter();  //獲取單個請求頭的值  out.write(request.getHeader(”Accept-Language”)+“<br/>”);  //獲取單個請求頭多個值  Enumeration  headers = request.getHeaders(”user-agent”);  while(headers.hasMoreElements())  {   out.println(headers.nextElement()+”<hr/>”);  }    //獲取所有的請求頭名  Enumeration names = request.getHeaderNames();  while(names.hasMoreElements())  {   //根據請求頭名得到對應的值   String name = (String)names.nextElement();   out.println(name+”=”+request.getHeader(name)+“<br/>”);  }  
           response.setContentType("text/html;charset=UTF-8");           PrintWriter out = response.getWriter();           //獲取單個請求頭的值           out.write(request.getHeader("Accept-Language")+"<br/>");           //獲取單個請求頭多個值           Enumeration  headers = request.getHeaders("user-agent");           while(headers.hasMoreElements())           {               out.println(headers.nextElement()+"<hr/>");           }           //獲取所有的請求頭名           Enumeration names = request.getHeaderNames();           while(names.hasMoreElements())           {   //根據請求頭名得到對應的值               String name = (String)names.nextElement();               out.println(name+"="+request.getHeader(name)+"<br/>");           }2.3獲取請求參數

String usernameValue = request.getParameter(“username”);//參數不存在為null

[java] view plain copy print?String names[] = request.getParameterValues(“username”);          for(String name:names)          {              System.out.println(name);////得到某個請求參數的所有值                        }  
String names[] = request.getParameterValues("username");        for(String name:names)        {            System.out.println(name);////得到某個請求參數的所有值        }[java] view plain copy print?   //獲取所有的請求參數名    ion names = request.getParameterNames();  while(names.hasMoreElements())  {  //根據參數名得到值   String name = (String)names.nextElement();   System.out.println(name+”——->”+request.getParameter(name));  }  
             //獲取所有的請求參數名        Enumeration names = request.getParameterNames();          while(names.hasMoreElements())          {  //根據參數名得到值              String name = (String)names.nextElement();              System.out.println(name+"------->"+request.getParameter(name));          }2.4 封裝到bean[java] view plain copy print?public class Student {     private String[] username;     private String password;           public String[] getUsername() {          return username;      }      public void setUsername(String[] username) {          this.username = username;      }      public String getPassword() {          return password;      }      public void setPassword(String password) {          this.password = password;      }            }  
public class Student {   private String[] username;   private String password;   public String[] getUsername() {        return username;    }    public void setUsername(String[] username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }}[java] view plain copy print?//利用BeanUtils和 getParameterMap()將對象封裝到bean      private void test5(HttpServletRequest request) {          // TODO Auto-generated method stub          Map map = request.getParameterMap();          Student s = new Student();          try {              BeanUtils.populate(s, map);          } catch (IllegalAccessException e) {              // TODO Auto-generated catch block              e.printStackTrace();          } catch (InvocationTargetException e) {              // TODO Auto-generated catch block              e.printStackTrace();          }          String[] names = s.getUsername();          System.out.println(names[0]);//aa          System.out.println(names[1]);//bb          System.out.println(s.getPassword());//123      }//從客戶端傳過來的值username兩個(假如是aa和bb) 和一個password值(假如是123)  
//利用BeanUtils和 getParameterMap()將對象封裝到bean    private void test5(HttpServletRequest request) {        // TODO Auto-generated method stub        Map map = request.getParameterMap();        Student s = new Student();        try {            BeanUtils.populate(s, map);        } catch (IllegalAccessException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (InvocationTargetException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        String[] names = s.getUsername();        System.out.println(names[0]);//aa        System.out.println(names[1]);//bb        System.out.println(s.getPassword());//123    }//從客戶端傳過來的值username兩個(假如是aa和bb) 和一個password值(假如是123)2.5 得到請求正文[java] view plain copy print?//獲取請求正文  InputStream in = request.getInputStream();  byte[] buf =new byte[1024];  int len = -1;  while((len=in.read(buf))!=-1)  {      System.out.println(new String(buf,0,len));  }  
       //獲取請求正文        InputStream in = request.getInputStream();        byte[] buf =new byte[1024];        int len = -1;        while((len=in.read(buf))!=-1)        {            System.out.println(new String(buf,0,len));        }2.6解決請求參數的中文亂碼

 get方式:先按照原編碼得到原始字節碼,然后再重新編碼。如:name = new String(name.getBytes(“ISO-8859-1”),”UTF-8”);

post方式:客戶端是什么編碼,發送的請求數據就是什么編碼,根據客戶端的編碼,告知服務器編碼方式。

如:request.setCharacterEncoding(“UTF-8”);// 只適合POST請求方式

2.7請求轉發 forward

RequestDispatcher rd = request.getRequestDispatcher(“path”);//得到轉發器,path可以是相對路徑或者絕對路徑(因為是服務器發起的)rd.forward(request, response);

2.8 包含include

RequestDispatcher rd = request.getRequestDispatcher(“/servlet/RequestDemo9”);rd.include(request, response);

三 、路徑的寫法:a、絕對路徑寫法:ServeltContext都必須用絕對路徑?!?”開始 (如ServletContext.getRequestDispatcher(“path”) path必須是絕對路徑)b、相對路徑:其他情況都可以使用相對路徑,也可以使用絕對路徑c、在使用絕對路徑時,要不要加”/”或者是項目名:如果是服務器調用的,不用加項目名,用“/”就可以代表了當前應用根目錄如果是客戶端調用的,必須加上項目名1、轉發:request.getRequestDispather(String url)絕對路徑:url    /servlet/ServletDemo2、重定向:response.sendRedirect(String url)絕對路徑:url    /day05/servlet/ServletDemo3、超鏈接:<a href=”url”/>絕對路徑:url  /day05/servlet/ServletDemo4、類加載文件的路徑web應用中只能用相對路徑,相對于classes目錄的5、<fomr action=”url”/>絕對路徑:/day05/servlet/ServletDemo6、頁面分幀(frame)絕對路徑:/day05/servlet/ServletDemo7、ServletContext.getRealPath(url)絕對路徑:url    /servlet/ServletDemoURLEncoder.encode(“name”, “UTF-8”)//解決文件下載名中文亂碼


上一篇:決策樹-ID3算法

下一篇:遞歸實現二叉樹

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东台市| 五常市| 宜州市| 随州市| 鄄城县| 临沧市| 万年县| 平度市| 库尔勒市| 黄山市| 新津县| 黄陵县| 肥城市| 涟源市| 玉山县| 松阳县| 肃北| 奉化市| 同心县| 紫阳县| 张家界市| 和林格尔县| 光泽县| 慈溪市| 五寨县| 舟山市| 邓州市| 惠来县| 蕉岭县| 玛曲县| 富顺县| 庆安县| 萨迦县| 开原市| 清丰县| 吐鲁番市| 莱西市| 安徽省| 林口县| 和林格尔县| 台中市|