リクエスト・オブジェクトとレスポンス・オブジェクト


一.応答オブジェクト
请求对象和响应对象_第1张图片
1.原理
   request  response           ,  ,  .  
          .
         :
   ServletRequest(  )

2.レスポンスラインの設定
       : HTTP/1.1   200   ok
		setStatus(int code);       
		     302
		   :1.    ,    
		         2.       
		        3.          ,        

		        :
		//       302    
		response.setStatus(302);
		//       location
		response.setHeader("location","http://127.0.0.1:8080/MyServlet/index.jsp");
		//               
		response.sendRedirect("http://www.baidu.com");
package org.westos.demo;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "ServletDemo1", value = "/demo")
public class ServletDemo1 extends HttpServlet {
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        //         ,      ,      。
        //    ,            。
        //    ,             。
        //    302:       ,location:        。
        //  :1.        。
        //2.        。
        //3.                 。
        response.setStatus(302);
        response.setHeader("location","http://www.baidu.com");
        //          
        //response.sendRedirect("http://www.baidu.com");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        this.doPost(request, response);
    }
}


3.応答ヘッダの設定
     :   :content-type:text/html;charset=utf-8
		setHeader(String headName,String headValue);           
		setDateHeader(String name,long date);      
		setIntHeader(String name,int count);      

(1)HTMLへの応答
package org.westos.demo;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "ServletDemo2", value = "/demo2")
public class ServletDemo2 extends HttpServlet {
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
       // Tomcat        ISO-8859-1,            ,          Tomcat             
        //          。HTML  JSON
        //         ?               。
        //Tomcat:        ISO-8859-1
        //             。
         response.setCharacterEncoding("utf-8");
        //     ,  utf-8      html     
        response.setHeader("content-type","text/html;charset=utf-8");

          //    ,         
        //response.setContentType("text/html;charset=utf-8");
        
        PrintWriter writer = response.getWriter();
        writer.write("   feike");
        writer.write("

"
); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }

(2)JSON応答
package org.westos.demo;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "ServletDemo3", value = "/demo3")
public class ServletDemo3 extends HttpServlet {
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        //  JSON         Content-Type 
        //response.setContentType("application/json;charset=utf-8");
        response.setContentType("text/json;charset=utf-8");
        //{"usrname":"  ","password":"123456"}
        PrintWriter writer = response.getWriter();
        writer.write("{\"usrname\":\"  \",\"password\":\"123456\"}");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        this.doPost(request, response);
    }
}


4.応答体の設定
                  
	            
		
		**PrintWriter getWriter();         

		//       ,                         ISO-8859-1
		//                   
		response.setCharacterEncoding("utf-8");
		//               ,              
		response.setHeader("content-type","text/html;charset=utf-8");
		//            
		response.setContentType("text/html;charset=utf-8");//  :            ,               
		
		**ServletOutputStream getOutputStream();          	
	  	
		//                   
		ServletOutputStream sos = response.getOutputStream();
		//          
		String realPath = this.getServletContext().getRealPath("WEB-INF/302.png");
		//          
		FileInputStream fis = new FileInputStream(new File(realPath));
		byte[] by = new byte[1024];
		int len = 0;
		while ((len = fis.read(by)) != -1) {
			sos.write(by, 0, len);
		}
package org.westos.demo;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

@WebServlet(name = "ServletDemo4", value = "/demo4")
public class ServletDemo4 extends HttpServlet {
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        //      
        //   /WEB-INF/   
        ServletOutputStream out = response.getOutputStream();
        String realPath = this.getServletContext().getRealPath("/WEB-INF/anli.png");
        FileInputStream in = new FileInputStream(new File(realPath));

        //      ,     ,     
        byte[] bytes = new byte[1024 * 8];
        int len=0;
        while ((len=in.read(bytes))!=-1){
     
            out.write(bytes);
        }
        in.close();
        out.close();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        this.doPost(request, response);
    }
}


二.検証コード
1.サーブレットに書く
package org.westos.demo2;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

@WebServlet(name = "CheckCodeServlet", value = "/code")
public class CheckCodeServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //   
        int width = 200;
        int height = 100;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        //    
        //    
        Graphics graphics = image.getGraphics();
        //       
        graphics.setColor(Color.PINK);
        //    
        graphics.fillRect(0, 0, width, height);
        //    
        graphics.setColor(Color.BLUE);
        //    
        graphics.drawRect(0, 0, width - 1, height - 1);
        //        
        String str = "abdefaghJKLABCEDFEIOBBHF                  0123456789";
        graphics.setColor(Color.GREEN);
        graphics.setFont(new Font("  ", Font.PLAIN, 30));
        Random random = new Random();
        for (int i = 1; i <= 4; i++) {
            int index = random.nextInt(str.length());
            char ch = str.charAt(index);
            graphics.drawString(String.valueOf(ch), width / 5 * i, height / 2);
        }
        //    
        graphics.setColor(Color.BLACK);
        for (int i = 0; i < 10; i++) {
            int x1 = random.nextInt(width);
            int x2 = random.nextInt(width);
            int y1 = random.nextInt(height);
            int y2 = random.nextInt(height);
            graphics.drawLine(x1,y1,x2,y2);
        }

        //    
        ImageIO.write(image, "png", response.getOutputStream());
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}


请求对象和响应对象_第2张图片
上記のように検証コード機能を完成させることができ、コード付き多重性が高すぎる.
2.クラス別の方法でカプセル化
ツールクラス:
package org.westos.demo3;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Random;

public class VerifyCode {
     
    // https://blog.csdn.net/piaoyinluo2316/article/details/83754145
    public static String drawRandomText(int width, int height, BufferedImage verifyImg) {
     

        Graphics2D graphics = (Graphics2D) verifyImg.getGraphics();

        graphics.setColor(Color.WHITE);//      -      

        graphics.fillRect(0, 0, width, height);//    

        graphics.setFont(new Font("    ", Font.BOLD, 40));

        //        

        String baseNumLetter = "123456789abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";

        StringBuffer sBuffer = new StringBuffer();

        int x = 10;  //      x   

        String ch = "";

        Random random = new Random();

        for (int i = 0; i < 4; i++) {
     

            graphics.setColor(getRandomColor());

            //        

            int degree = random.nextInt() % 30;  //    30 

            int dot = random.nextInt(baseNumLetter.length());

            ch = baseNumLetter.charAt(dot) + "";

            sBuffer.append(ch);

            //    

            graphics.rotate(degree * Math.PI / 180, x, 45);

            graphics.drawString(ch, x, 45);

            //    

            graphics.rotate(-degree * Math.PI / 180, x, 45);

            x += 48;

        }

        //    

        for (int i = 0; i < 6; i++) {
     

            //       

            graphics.setColor(getRandomColor());

            //     

            graphics.drawLine(random.nextInt(width), random.nextInt(height),

                    random.nextInt(width), random.nextInt(height));

        }

        //    

        for (int i = 0; i < 30; i++) {
     

            int x1 = random.nextInt(width);

            int y1 = random.nextInt(height);

            graphics.setColor(getRandomColor());

            graphics.fillRect(x1, y1, 2, 2);

        }
        return sBuffer.toString();
    }

    /**
     *     
     */

    private static Color getRandomColor() {
     
        Random ran = new Random();
        Color color = new Color(ran.nextInt(256),
                ran.nextInt(256), ran.nextInt(256));
        return color;
    }
}


Servlet:
package org.westos.demo3;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;

@WebServlet(name = "ServletCode", value = "/code2")
public class ServletCode extends HttpServlet {
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        //   
        int width = 200;
        int height = 100;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

        //           
       // String randomText = VerifyCode.drawRandomText(width, height, verifyImg);

        //           
        String randomText = VerifyCode.drawRandomText(width, height, image);
        //        ,        ,     。
        //               ,   ,         
        request.getSession().setAttribute("verifyCode", randomText);
        response.setContentType("image/png");//             ,       
        OutputStream os = response.getOutputStream(); //       
        ImageIO.write(image, "png", os);//     
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        this.doPost(request, response);
    }
}


请求对象和响应对象_第3张图片
三.リクエストオブジェクトRequest
1.要求ラインの取得
1.     : GET     /MyServlet/index.jsp?name=zhangsan&age=23  HTTP/1.1
		
			request.getMethod();//      
			request.getContextPath();//      
			request.getRequestURI();//  URI
			request.getRequestURL();//  URL
			request.getRemoteAddr();//  IP  
			request.getQueryString();//      
			request.getProtocol();//      
package org.westos.demo4;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLDecoder;

@WebServlet(name = "ServletDemo5", value = "/demo5")
public class ServletDemo5 extends HttpServlet {
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        //      
        String method = request.getMethod();
        System.out.println("    :"+method);//    :GET
        //         
        String path = request.getContextPath();
        System.out.println("       "+path);//        /20200819___war_exploded
        //               
        String uri = request.getRequestURI();
        System.out.println("       "+uri);//        /20200819___war_exploded/demo5
        //         
        StringBuffer url = request.getRequestURL();
        System.out.println("       :"+url); //        :http://localhost:8080/20200819___war_exploded/demo5
        //  ip  
        String ip = request.getRemoteAddr();
        System.out.println("ip   :"+ip);// ip   :0:0:0:0:0:0:0:1
        //      
        String string = request.getQueryString();
        System.out.println("     :"+string);//        :username=%22%E5%BC%A0%E4%B8%89%22&password=%22123456%22
        /*
        *  GET        ,POST        
                   URL    
        * */
        System.out.println("==============================");
        //       URL    
        String s = URLDecoder.decode("%22%E5%BC%A0%E4%B8%89%22", "utf-8");
        System.out.println(s);//"  "
        //      
        String protocol = request.getProtocol();
        System.out.println(protocol);//HTTP/1.1

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        this.doPost(request, response);
    }
}


请求对象和响应对象_第4张图片
2.URIとURIの違い
    java,             ,  url uri      ,       ,          ,        ,      ,        ,          ,          ,             ,      ,            ,            ,        ?          ,           ,                     ,    !

            ,         ,  ,       ,        ,  XXX        ,         ,         35   XXX        ,  ,          ,     XXX        ,         XXX              ,  ,             ,         ,          ,       ,       URI,       URI,          ,  ,http://www.sina.com.cn      ,[email protected]        qq  ,  qq     URI(              QQ  ),URI         ,  URI                           。

     ,         ,       XXX        ,“  XXX     ”        URI,  ,            ,     ?      ,          ,      URI  ,      ,            ,        ,             ,  “         35   XXX        ”    ,       。       ,                    ,        ,    ,  ,        ,  ,               ,       URL。

          ,    ,URI           ,URL         ,      ,URL   URI      ,   URL           ,           ,                               ,           ,      ,  ,URL    WWW     URI   ,    URI      ,         ,        。           URL,                   ,       URI     ,  URL  URI。

まとめ:URIはネットワークリソースをマークしています.それだけです.URLにはWWWインターネットリソース(アドレスでマーク)がマークされており、彼のアクセスアドレスが与えられている.(URIはUniform Resource Identifierであり、リソースであることを示している.URLはUniform Resource Locatorであり、アドレスであることを示しており、英語の略語を読むだけでは確かに分かりにくい)
这里写图片描述URLはURIのサブセットであり、すべてのURLはURIであるが、各URIがURLであるわけではなく、URNである可能性もある
3.取得要求ヘッダ
2.     :

			request.getHeader("user-agent");//       
			request.getDateHeader(name);//     
			request.getIntHeader(name)//     
package org.westos.demo4;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "ServletDemo7", value = "/demo7")
public class ServletDemo7 extends HttpServlet {
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        //     
        String header = request.getHeader("user-agent");
        String referer = request.getHeader("Referer");
        System.out.println(header);
        /*
        * Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
        * */
        System.out.println(referer);
       

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        this.doPost(request, response);
    }
}


4.取得要求体
3.     :    :      Post        

		      : getReader();                                                      


		      :getInputStream();          

package org.westos.demo4;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;

@WebServlet(name = "ServletDemo8", value = "/demo8")
public class ServletDemo8 extends HttpServlet {
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        BufferedReader reader = request.getReader();
        System.out.println(reader.readLine());
        
        //username=%E5%BC%A0%E4%B8%89&password=123456
           String line = reader.readLine();
        String[] split = line.split("&");
        String[] split1 = split[0].split("=");
        System.out.println(split1[0] + "=" + split1[1]);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        this.doPost(request, response);
    }
}


请求对象和响应对象_第5张图片
5.要求パラメータを取得するための一般的な方法
4.              
			request.getParameter(name);               
			request.getParameterValues("hobby");          ,               
			request.getParameterMap();         map  
			request.getParameterNames();                    

index.jsp



<html>
<head>
  <title>Titletitle>
head>
<body>
<div align="center">
  <form action="/20200819___war_exploded/demo9" method="get"><input type="text" name="username" id="" value="" placeholder="      " maxlength="5" />
    <br><input type="password" name="password" placeholder="     " />
    <br>
    <input type="radio" name="sex" value="1" checked="checked" />
     
    <input type="radio" name="sex" value="0" />
     
    <input type="radio" name="sex" id="y" value="2" />
    <label for="y"> label>
    <br><input type="checkbox" name="hobby" value="lanqiu" checked="checked" />
      
    <input type="checkbox" name="hobby" value="zuqiu" checked="checked" />
      
    <input type="checkbox" name="hobby" id="pp" value="pingpang" />
    <label for="pp">   label>
    <br><select name="xueli">
      <option value="babySchool">   option>
      <option value="xiaoxue">  option>
      <option value="zhongxue">  option>
      <option value="daxue" selected="selected">  option>
    select>
    <br><input type="email" name="user_email" />
    <br><input type="number" name="points" min="1" max="10" value="1" />
    <br><input type="date" name="birthday" />
    <br><textarea rows="10" cols="20" name="desc">

					textarea>
    <br>
    <input type="submit" value="    " />
    <input type="reset" value="  " />
  form>
div>

body>
html>



servlet
package org.westos.demo4;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;

@WebServlet(name = "ServletDemo9", value = "/demo9")
public class ServletDemo9 extends HttpServlet {
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        //      
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String sex = request.getParameter("sex");
        //               getParameterValues()
        String[] hobbies = request.getParameterValues("hobby");
        Arrays.toString(hobbies);

        //                    
        Enumeration<String> parameterNames = request.getParameterNames();
        while (parameterNames.hasMoreElements()){
     
            String key = parameterNames.nextElement();
            String value = request.getParameter(key);
            System.out.println(key+"=="+value);

            /*
        *   username=======  
            password=======123456
            sex=======1
            hobby=======lanqiu
            xueli=======daxue
            [email protected]
            points=======1
            birthday=======2020-08-12
            desc=======aaaaa		
        * */
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        this.doPost(request, response);
    }
}


6.中国語の文字化けし問題の処理
//      :  get post             
			tomcat 8.0    GET            tomcat            	
			
			post               
				request.setCharacterEncoding("utf-8");
package org.westos.demo;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "MyServlet3", value = "/myServlet3")
public class MyServlet3 extends HttpServlet {
     
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        System.out.println(username);
        String password = request.getParameter("password");
        System.out.println(password);
        //  
        //123456
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
        String username = request.getParameter("username");
        System.out.println(username);
        String password = request.getParameter("password");
        System.out.println(password);
        //  
        //123456
    }
}


四.リクエスト転送
1.内部転送の特徴
      :
			1.        
			2.        
			3.          
		  :
			request.getRequestDispatcher("/myservlet2").forward(request, response);

  • package org.westos.demo5;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet(name = "MyServlet1", value = "/myServlet1")
    public class MyServlet extends HttpServlet {
         
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         
            //    (    )
            System.out.println("    myServlet1");
            System.out.println("    ");
            System.out.println("   MyServlet2");
            request.getRequestDispatcher("/myServlet2").forward(request,response);
            System.out.println("    myServlet1");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         
            this.doPost(request, response);
        }
    }
    
    

  • package org.westos.demo5;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet(name = "MyServlet2", value = "/myServlet2")
    public class MyServlet2 extends HttpServlet {
         
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         
            System.out.println("    myServlet2");
            System.out.println("    ");
            System.out.println("   MyServlet3");
            request.getRequestDispatcher("/myServlet3").forward(request,response);
            System.out.println("    myServlet2");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         
            this.doPost(request, response);
        }
    }
    
    

  • package org.westos.demo5;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet(name = "MyServlet3", value = "/myServlet3")
    public class MyServlet3 extends HttpServlet {
         
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         
            System.out.println("myServlet3");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         
            this.doPost(request, response);
        }
    }
    
    

    请求对象和响应对象_第6张图片
    2.内部転送の原理
    请求对象和响应对象_第7张图片
    3.リダイレクトの原理
    请求对象和响应对象_第8张图片
    4.内部転送とリダイレクトの違い
    1、         url   ,        WEB-INF      ;        WEB-INF      ;
    
        :
    			1.        
    			2.        
    			3.          
       :
    				1.    ,    
    		         2.       
    		        3.          ,        
    

    五.ドメインオブジェクト
                
    
               
    		                
    				request.setAttribute("name","zhangsan");
    				request.getAttribute("name");
    				request.removeAttribute("name");
    		         ?        ?
    			1.                 ,     
    			2.             ,            ,      。
    			3.               ,             ,            ,     。
    

    servlet1
    package org.westos.demo5;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet(name = "Servlet1", value = "/servlet1")
    public class Servlet1 extends HttpServlet {
         
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         
            //req      ,        ,           ,       。
            //   :                。
            System.out.println("servlet1     ,    ,   servlet2");
            /*     servlet2*/
           /* request.setAttribute("username","   ");
            request.getRequestDispatcher("/servlet2").forward(request,response);
            */
            /*    servlet2*/
            this.getServletContext().setAttribute("username", "    ");
            response.sendRedirect(request.getContextPath()+"/servlet2");
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         
            this.doPost(request, response);
        }
    }
    
    
    

    servlet2
    package org.westos.demo5;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet(name = "Servlet2", value = "/servlet2")
    public class Servlet2 extends HttpServlet {
         
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         
            System.out.println("servlet2     ,    ");
           /* String username = (String) request.getAttribute("username");
            System.out.println(username);//   */
            Object username = this.getServletContext().getAttribute("username");
            System.out.println(username);
            //      
            this.getServletContext().removeAttribute("username");
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         
            this.doPost(request, response);
        }
    }
    
    

    六.パスの書き方
    //       :    /   。
            //1.    ,            。
            //2.html,jsp       ,             ,                。
    
       /  
    		                       request.getRequestDispatcher("/myservlet2").forward(request, response);