Servlet基础梳理(三)

   这一篇说一下HTTP的请求和响应外加cookie。

   HTTP请求:

    由一个请求行,若干个请求头加一个空行,加请求体组成。一般分为两种,一种是get请求,一种是post请求。

  •    get请求:
      在url中输入地址一定是get请求,单击超链接一定是get请求
      form中method=get一定是get请求
     参数会在url中显示, get请求的数据量在1K以下。
  • post请求:
     只有向服务器提交form表单并把method设置为post时为post请求,其余皆不是
     因为是将参数数据放在消息实体内容中发送,所以数据量大的多
  关于请求ServletRequest:封装请求信息,可以获取任何请求信息

    String user=request.getParameter("user");//获取参数的值
    String[] aihao=request.getParameterValues("aihao");//获取checkbox这种多个值的参数值数组
    Enumeration<String> names=request.getParameterNames();//获取所以请求参数名称
    Map<String,String[]> map=request.getParameterMap();//key参数名 value:值,用数组类型
    获取请求参数(httpServletRequest)
             获取请求URI和请求方式(httpServletRequest)
              获取url中请求字符串(get请求)

HTTP响应:

    一个响应行,若干个响应头加空行加向应体。

    ServletResponse:封装响应信息,给用户响应都可以用该接口的方法实现
                      直接打印给浏览器数据:PrintWriter out=response.getWriter();
                      设置响应的内容类型:response.setContentType("application/msword");
关于请求和响应的一个重要应用就是转发和重定向,第一篇已经说过了,不再赘述。

以上内容归纳的基本方法代码如下:

  String user=request.getParameter("user");
	     String[] aihao=request.getParameterValues("aihao");
         Enumeration<String> names=request.getParameterNames();
         while(names.hasMoreElements())
         {
        	 String name=names.nextElement();
        	 String value=request.getParameter(name);
         }
         Map<String,String[]> map=request.getParameterMap();
         for(Map.Entry<String, String[]> entry:map.entrySet())
         {
        	 String name=entry.getKey();
        	 String[] values=entry.getValue();
         }
         HttpServletRequest httpServletRequest=(HttpServletRequest) request;
         String sq=httpServletRequest.getQueryString();
         PrintWriter out=response.getWriter();
         out.println("helloKitty");
         response.setContentType("application/msword");
         HttpServletResponse httpServletResponse=(HttpServletResponse) response;
         httpServletResponse.sendRedirect("index.jsp");

  Cookie:

    由于http是无状态的链接。所以需要有东西来建立会话间的关联,cookie就是一种。Cookie的机制: 服务器HTTP响应的消息头中附带传送给浏览器一个小文本文件, 再次访问服务器时,HTTP请求头里会将这个cookie回传给服务器。默认创建会话级别的cookie,关闭浏览器即消失。

  以下是创建cookie和获取cookie的一些方法步骤:

        //1创建cookie
        Cookie cookie=new Cookie("hello","hellokitty");
    	//给cookie设置最大生命时间,持久化cookie。0立即删除,负数不存储
    	cookie.setMaxAge(300);
        //2调用response发送给浏览器
        response.addCookie(cookie);
    //获取cookie
    Cookie[] cookies=request.getCookies();
    if(cookies!=null&&cookies.length>0)
    {
    <span style="white-space:pre">	</span>//获取cookie的name和value
    <span style="white-space:pre">	</span>for(Cookie ck:cookies)
    <span style="white-space:pre">	</span>{
    <span style="white-space:pre">		</span>out.println(ck.getName()+":"+ck.getValue());
    <span style="white-space:pre">	</span>}
    } 
最后用一个自动登录的小案例来结束cookie的练习:

   login.jsp:

<form action="welcome.jsp" method="post">
  <input type="text" name="user"/>
  <input type="submit" value="submit"/>
</form>
  welcome.jsp:

 <%
     String cookieName=null;
     String name=request.getParameter("user");
     //第一种情况,从login.jsp登陆进来的
     if(name!=null&&!name.trim().equals(""))
     {
    	 cookieName=name;
    	 Cookie cookie=new Cookie("user",name);
    	 cookie.setMaxAge(30);
     }
     //第二种情况,cookie保存了状态
     else 
     {
    	 Cookie[] cookies=request.getCookies();
    	 if(cookies!=null&&cookies.length>0)
    	 {
    		 for(Cookie c:cookies)
    		 {
    			 String s=c.getName();
    			 if(s.equals("user")){
    				 cookieName=c.getValue();
    			 }
    		 }
    	 }
     }
     if(cookieName!=null&&!cookieName.trim().equals(""))
     {
    	 out.println("welcome"+cookieName);
     }
     else{
    	 request.getRequestDispatcher("login.jsp").forward(request, response);
     }
   %>

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值