码迷,mamicode.com
首页 > 其他好文 > 详细

response以及request概述

时间:2017-12-30 23:36:12      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:response   request   

一、HttpServletResponse response————响应对象

1、重定向

1)格式

//设置重定向响应状态码302

response.setStatus(302); 

//设置响应头 location

response.setHeader("location","http://127.0.0.1:8080/MyServlet/index.jsp");

//上两部合成一步

response.sendRedirect("http://www.baidu.com");

2)重定向特点

a:两次请求,两次响应。存在请求域中信息不可再用;

b:地址栏发生变化

c:可以跳转到外表站点的资源,也可以跳转到内部站点的资源(如上)

2、设置响应头

setHeader(String headName,String headValue); 设置响应头的名称和值

setDateHeader(String name,long date); 设置日期头

setIntHeader(String name,int count); 设置数字头

3、设置响应体————响应的是数据

PrintWriter getWriter();发送字符数据的对象

ServletOutputStream getOutputStream();发送字节数据的对象

4、设置服务器对字符流的编码

//作用:设置字符打印输出流的编码,并告诉浏览器用相应的编码去解码

response.setCharacterEncoding("utf-8");

response.setHeader("content-type","text/html;charset=utf-8");

//以上两个方法可以合二为一

response.setContentType("text/html;charset=utf-8");

egg:简易验证码

int width = 100;
		int height = 50;
		//1.创建图片
		BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		//2.修饰图片
		//2.1设置背景色
		Graphics g = image.getGraphics();//获取画笔
		g.setColor(Color.PINK);//设置颜色
		g.fillRect(0, 0, width, height);//填充背景色
		//2.2画边框
		g.setColor(Color.BLUE);
		g.drawRect(0, 0, width - 1, height - 1);
		//2.3写入验证码
		g.setColor(Color.RED);
		String msg = "abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ0123456789";
		Random ran = new Random();
		for (int i = 1; i <= 4; i++) {
			int index = ran.nextInt(msg.length());//获取msg的随机角标
			g.drawString(String.valueOf(msg.charAt(index)), width/5 * i, height/2);
		}
		//2.4画干扰线
		g.setColor(Color.GREEN);
		//g.drawLine(0, 0, width, height);
		for (int i = 0; i < 5; i++) {
			int x1 = ran.nextInt(width);
			int x2 = ran.nextInt(width);
			int y1 = ran.nextInt(height);
			int y2 = ran.nextInt(height);
			g.drawLine(x1, y1, x2, y2);
		}
		//3.将图片数据写入response输出流中
		ImageIO.write(image, "jpg", response.getOutputStream());
		//jsp:<img src="/MyServlet/mydemo"></img>   //页面上的路径和重定向需要加上项目名称


二、HttpServletRequest request————请求对象

1、请求转发

request.getRequestDispatcher("/虚拟路径").forward(request, response);//服务器内部跳转路径,不需要加项目名称

特点

1)一次请求一次响应

2)地址栏不发生变化

3)只能访问内部站点资源

2、获取请求行

//请求行:请求方式 访问的资源 协议/版本 egg:GET /myhtml.html HTTP/1.1

request.getMethod();//获取请求方式

request.getContextPath();//获取项目名称

request.getRequestURI();//获取URI

request.getRequestURL();//获取URL

request.getRemoteAddr();//获取IP地址

request.getQueryString();//获取请求参数

request.getProtocol();//获取协议版本

3、获取请求头

request.getHeader("user-agent");//获取请求头的值

request.getDateHeader(name);//获取日期头

request.getIntHeader(name)//获取数字头

4、获取请求体

只有post才有请求体:放请求参数

获取字符数据: getReader(); 返回一个高效的字符流 我们通过一次读取一行的 方法来获取请求参数数据  然后 拆分字符串获取我们想要的数据

获取字节数据: getInputStream();用于上传文件

//一般获取请求参数的方法:

request.getParameter("key");  通过请求参数的名称来获取值

request.getParameterValues("hobby"); 通过请求参数的名称,来获取值的数组 一般用于复选框

request.getParameterMap();  获取所有参数的map集合

//有两个beanutils的jar包可以之间把map集合封装成Javabean对象

Map map = request.getParameterMap();

User user = new User();

BeanUtils.populate(user, map);

request.getParameterNames(); 获取所有参数的名称 枚举 不常用

5、处理中文乱码问题

request.setCharacterEncoding("utf-8");

6、操作请求域对象内数据

request 是一个请求对象,用来封装请求消息;

还是一个域对象 既然是域对象 就可以在他的范围内共享数据

request.setAttribute("name","zhangsan");

request.getAttribute("name");

request.removeAttribute("name");

//ServletContext()在一个资源间共享数据

this.getServletContext().setAttribute(key,value);


response以及request概述

标签:response   request   

原文地址:http://blog.51cto.com/378213986/2056146

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!