这一篇说一下HTTP的请求和响应外加cookie。
HTTP请求:
由一个请求行,若干个请求头加一个空行,加请求体组成。一般分为两种,一种是get请求,一种是post请求。
- get请求:
在url中输入地址一定是get请求,单击超链接一定是get请求
form中method=get一定是get请求
参数会在url中显示, get请求的数据量在1K以下。 - post请求:
只有向服务器提交form表单并把method设置为post时为post请求,其余皆不是
因为是将参数数据放在消息实体内容中发送,所以数据量大的多
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);
}
%>