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创建cookieCookie 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);} %>

失败是什么?没有什么.只是更走近成功一步,

Servlet基础梳理(三)

相关文章:

你感兴趣的文章:

标签云: