request与response
来源:互联网 发布:云大附中名师网络课程 编辑:程序博客网 时间:2024/06/03 18:45
img1.src = “/day00/servlet?”+new Date().getTime();这就是自动执行访问的代码
response
#
response的简介
1.1 HttpServletResponse,是一个接口,父接口是ServletResponse,代表响应对象1.2 http的响应包含三部分组成第一部分:响应行(1)状态码(2)主要的方法= setStatus(int sc) :设置状态码的方法== response.setStatus(302) 第二部分:响应头(1)是key-value结构,一个key可以有一个value,一个key也可以有多个value(2)方法= setHeader(java.lang.String name, java.lang.String value) :设置响应头== 两个参数:第一个参数是响应名称;第二个参数值== 针对一个key和一个value情况== setHeader("aa","11"); setHeader("aa","22"); 结果:名称 aa ,值 22= 针对特殊的类型,设置头的方法= setIntHeader(java.lang.String name, int value) :针对int类型值的方法= setDateHeader(java.lang.String name, long date) :值long类型,是毫秒数(1970 1 1至今的毫秒数)= addHeader(java.lang.String name, java.lang.String value) :设置响应头== 两个参数:第一个参数是响应名称;第二个参数值== 针对一个key和多个value的情况== addHeader("bb","55"); addHeader("bb","66"); 结果:名称 bb ,值 55,66= 针对特殊的类型,设置头的方法= addIntHeader(java.lang.String name, int value) :针对int类型值的方法= addDateHeader(java.lang.String name, long date) :值long类型,是毫秒数第三部分:响应体(1)向页面显示的内容(2)方法= getWriter():使用字符流向页面输出内容= getOutputStream():使用字节流向页面输出内容
重定向
1.1重定向到登录页面的普通代码
//设置状态码 response.setStatus(302); //使用头Location完成重定向 response.setHeader("Location", "/day08-1/login.html");
1.2重定向的代码简写的方式
response.sendRedirect("要重定向到的页面的路径");
定时跳转
1.1定时跳转的普通代码
创建servlet,在servlet实现,在五秒之后跳转到一个页面 response.setHeader("Refresh", "5;url=/day08-1/login.html");
1.2直接在html页面中实现
<meta http-equiv="Refresh" content="3;url=/day08-1/login.html">
中文乱码解决
1.1使用字节流向页面输出内容
//设置浏览器的编码 使用头信息 Content-Type response.setHeader("Content-Type", "text/html;charset=utf-8");//设置字节数组的编码 response.getOutputStream().write("字节流中文".getBytes("utf-8"));
1.2 使用字符流向页面输出内容
//设置response缓冲区的编码 response.setCharacterEncoding("utf-8");//设置浏览器的编码 response.setHeader("Content-Type", "text/html;charset=utf-8");
1.3使用字符流向页面输出中文乱码问题解决,简写方式
response.setContentType("text/html;charset=utf-8");
验证码案例
1.1实现验证码的步骤(画图分析)
第一步:生成图片第二步:生成随机的数字和字母第三步:把数字和字母画到图片上第四步:把图片显示到页面上
1.2显示验证码
(1)把验证码显示到登录的页面中 <img src="验证码的servlet的路径"/>(2)实现看不清换一张 //实现看不清换一张 function loadCode() { //得到img标签 var img1 = document.getElementById("img1"); img1.src = "/day08-5/code?"+new Date().getTime(); }
文件下载的案例
1.1 文件下载的基本实现的步骤
(0)设置头信息 Content-Disposition,无论是什么格式的文件都以下载方式打开(1)在服务器上面有一个可以下载的文件(2)从服务器上拿到这个文件(使用文件输入流得到文件)(3)使用输出流把文件写到浏览器
1.2代码实现文件的下载
//得到要下载文件的路径 String path = getServletContext().getRealPath("/down/a.zip"); //得到文件的名称 //得到最后一个\位置,根据位置进行截取 int lens = path.lastIndexOf("\\"); String filename = path.substring(lens+1); //设置头信息 response.setHeader("Content-Disposition", "attachment;filename="+filename); //得到文件的输入流 InputStream in = new FileInputStream(path); //使用输出流操作 OutputStream out = response.getOutputStream(); //流对接 int len = 0; byte[] b = new byte[1024]; while((len=in.read(b))!=-1) { out.write(b, 0, len); } //关闭流 in.close();
request对象
#
request的简介
1.1代表请求的对象,HttpServletRequest接口,父接口是ServletRequest
常用方法
获取请求行的信息(1)getMethod() :得到http请求方式(2)getRequestURI() :得到请求地址(不包含ip+端口号)(3)getProtocol() :得到http的版本获取请求头的信息(1)getHeader(java.lang.String name) :根据名称得到请求头的值= 头信息 User-Agent:获取当前请求的浏览器的类型= String agent = request.getHeader("User-Agent");获取客户机的信息(1)getContextPath() :请求项目的名称(2)getRequestURL() :客户端发送的请求的路径(3)getRemoteAddr() :获取当前客户端的ip地址获取表单提交的数据(1)String getParameter(java.lang.String name) :参数是表单输入项name属性的值,根据名称得到输入的值= 代码 String username = request.getParameter("username"); String password = request.getParameter("password");(2)String[] getParameterValues(java.lang.String name) :参数是表单输入项name的值,针对复选框的情况= 代码 String[] loves = request.getParameterValues("love");(3)Map<java.lang.String,java.lang.String[]> getParameterMap() := 返回的是map集合,key是表单输入项name属性的值,value是输入的值= 代码 Map<String,String[]> map = request.getParameterMap(); //得到map集合里面的key和value,遍历map Set<String> keys = map.keySet(); //遍历set集合 for (String key : keys) { //根据key得到value String[] values = map.get(key); //key和对应的value输出(表单输入项name的属性值和输入的值) System.out.println(key+" :: "+Arrays.toString(values)); }(4)Enumeration<java.lang.String> getParameterNames()
获取表单提交的中文数据乱码问题的解决
(1)post提交方式解决方法
request.setCharacterEncoding("utf-8");
(2)get提交中文乱码解决
username = new String(username.getBytes("iso8859-1"),"utf-8");
request是域对象
(1)域对象:在一定的范围内,可以存值和取值(2)servletContext域对象:范围是整个web项目,存值 setAttribute方法 和取值 getAttribute方法(3)request也是一个域对象:范围是一次请求,存值和取值= 向request域里面存值的方法:setAttribute(java.lang.String name, java.lang.Object o)= 从request域里面取值的方法:getAttribute(java.lang.String name) (4)request域对象范围是一次请求,经常和转发一起使用= 代码 request.getRequestDispatcher("转发的路径 不带项目名称").forward(..);(5)举例演示request域对象= 创建servlet1,在servlet1里面向request域里面设置一个值,最后转发到servlet2里面== //向request域里面设置一个值 request.setAttribute("msg", "itcast100"); //转发到servlet2 request.getRequestDispatcher("/servlet2").forward(request, response);= 创建servlet2,在servlet2里面获取通过servlet1向request域里面设置的那个值== //获取通过servlet1向request里面设置的值 response.getWriter().write(""+request.getAttribute("msg"));
重定向和转发的区别
(1)重定向= 重定向请求两次,请求的地址带项目名称= 302+Location实现重定向的操作= response.sendRedirect("路径 带项目名称");(2)转发= 转发请求一次,路径不需要带项目名称(在服务器内部进行操作)= request.getRequestDispatcher("转发的路径 不带项目名称").forward(request, response);(3)重定向:从一个网站到另外的一个网站 转发:请求的过程中需要携带数据操作
转发的案例
request.setAttribute(“msg”, “用户名或者密码错误”);
request.getRequestDispatcher(“/login.jsp”).forward(request, response);
}
0 0
- request与response
- request与response
- Request与Response
- Request与Response
- response与request
- request与response
- @Response与@Request
- request与response对象.
- request与response
- Request与response对象
- response与request
- request与response
- request与response
- Request与Response
- request与response方法
- request对象与response对象
- response.sendRedirect 与 request.getRequestDispatc
- request与response的作用
- Trie树——java
- 关于syn泛洪攻击的交换机端口安全
- 求组合数模板
- Neutron总结-linuxbridge-agent换为openvswitch-agent
- 【NOI2011】bzoj2434 阿狸的打字机
- request与response
- 为什么Chrome比其他浏览器快?
- Android Theme.AppCompat 中,你应该熟悉的颜色属性
- QtChart编译经过
- Unity3D学习笔记(4)——获取单帧中函数耗时
- CCF NOI1018 打电话
- Java synchronized详解
- Text Reverse
- Angular2 依赖注入之装饰器