响应 Response和请求 Request

40 篇文章 0 订阅
23 篇文章 0 订阅
响应一共分为3部分
  	响应行
  	响应头
  	响应主体
  	
  	响应行:  协议 版本号 | 状态码
  	
  	状态码
  	100-199:请求已经到达服务器,但是没有完成,需要再次请求才能完成。
  	200-299:请求已到达服务器,并且处理完成。(200)
  	300-399:资源重定向。服务器中发生资料重定向。(302)
  	400-499:资源找不到 (404)
  	500-599:服务器同部异常。(500)
         
请求 request

   请求体
  获取方法  Map集合  String[] 枚举
      
  1.解析xml  dom4j  xpath
  2.了解http协议  基于TCP
  3.request   行   头   体
  4.response  行  头   体

request
   	 请求行  http 1.1 连接地址 提交方式
   	 	getMethod getProtocal() getUrl()....
   	 请求头
   	 	getHeader() 
   	 请求体
   	    getParamter()  getParamterMap()  getParamterNames/values()
response 响应
   		响应行
   			协议 版本号 状态码    200:响应成功   302:重定向  404:未找到资源  500:服务器异常 代码
   		响应头
   			response.setHeader(,);  response.setContentType()  response.setContentLength()
   		响应体
   			response.getOutputStream()  response.getWriter()

login.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<center>
	<form action="login" method="get">
		用户名:<input name="username"/><br/>
		密码:<input name="password"/><br/>
		<input type="submit" value="登录"/>
	</form>
</center>

</body>
</html>

LoginServlet.java:

package text.web.servlet;

import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class LoginServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String name = request.getParameter("username");
		System.out.println(name);
		//response.sendError(404);  设置状态码
		//response.setStatus(int sc);   设置状态码
		//response.sendError(404, "过时了...");   设置状态码和返回的信息
		//response.setContentLength(1000);  修改响应长度
		//response.setContentType("text/html;charset=gbk");  输出格式
		//response.setContentLength(800);   修改响应长度
		//response.setHeader("Content-Language", "En,zh");   设置响应体的语言
		//加上状态码
		//response.setStatus(302);
		//response.setHeader("Location", "welcom.html");    跳转到页面,需要提前设置好状态码为300-399
		//response.setHeader("refresh", "2;url=http://www.baidu.com");   过2秒跳转到网站(定时刷新)
		//-------------------------请求行-------------------------------
		//获取请求方式
		String method = request.getMethod();
		//获取项目路径(一般用第二个,从http开始,比较全)
		String uri = request.getRequestURI();
		StringBuffer sb = request.getRequestURL();
		//获取get方式请求行参数
		String str = request.getQueryString();
		//获取协议
		String protocol = request.getProtocol();
		
		System.out.println("请求方式:"+method);
		System.out.println("uri:"+uri);
		System.out.println("url:"+sb.toString());
		System.out.println("请求行参数:"+str);
		System.out.println("请求协议:"+protocol);
		//zhangsan
		//请求方式:GET
		//uri:/day12/login
		//url:http://localhost:8080/day12/login
		//请求行参数:username=zhangsan&password=123
		//请求协议:HTTP/1.1
		//--------------------请求头---------------------------
		String connVale = request.getHeader("Connection");
		System.out.println(connVale);
		//keep-alive
		Enumeration<String> names = request.getHeaderNames();
		//遍历
		while(names.hasMoreElements()) {
			String na = names.nextElement();
			String value = request.getHeader(na);
			System.out.println(na+"...."+value);
		}
//host....10.10.92.183:8080   (主机地址)
//connection....keep-alive
//upgrade-insecure-requests....1
//user-agent....Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36    (内核)
//accept....text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
//referer....http://10.10.92.183:8080/day12/login.html
//accept-encoding....gzip, deflate    (编码格式)
//accept-language....zh-CN,zh;q=0.9
		//-------------------------请求体--------------------------
		//request.getParameter(name)
		Map<String, String[]> map = request.getParameterMap();
		Set<Entry<String, String[]>> entrySet = map.entrySet();
		for(Entry<String, String[]> entry : entrySet) {
			String key = entry.getKey();
			String value = entry.getValue()[0];
			System.out.println(key+"..."+value);
		}
		//username...aaa
		//password...12
		
		//request.getParameterNames();
		
		
	}

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

}

 案例:通过Header显示服务器的图片
         IO流(客户端浏览器以流的形式的显示图片或者文件)
                           要求:告诉浏览器一个文件类型
         response.setHeader("Content-Type","jpg");         
        案例:通过Header下载服务器的图片
        Content-Disposition  下载
     响应主体的应最多一共是两个
   response.getOutputStream()  :字节  字符
   response.getWriter() :字符

image.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="img">获取童梦的图片</a>
</body>
</html>

ImageServlet.java:

package text.web.servlet;

import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ImageServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		//response.setHeader("Content-Type", "text/html;charset=utf-8");
		//浏览器默认支持一些能解析的类型 图片 文档
		//response.setHeader("Content-Type", "jpg");
		//response.setHeader("Content-Type", "t");
		//告诉浏览器不要解析了,下载(不能显示)
		response.setHeader("Content-Disposition", "attachment;filename=mv.jpg");
		//1.输入流
		InputStream is = ImageServlet.class.getClassLoader().getResourceAsStream("meinv.jpg");
		//2.输出流
		ServletOutputStream sos = response.getOutputStream();
		//3.通过输出流一点点将流传递给浏览器
		//定义一个容器
		byte[] buf = new byte[1024];
		//定义一个长度
		int len = 0;
		while((len=is.read(buf))!=-1) {
			sos.write(buf, 0, len);
		}
		is.close();
		sos.close();
		
	}

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

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值