JavaWeb---Servlet的请求和响应
来源:互联网 发布:电子数据交换的意思 编辑:程序博客网 时间:2024/06/04 19:11
Request 和Response 对象都是由服务器创建,管理,销毁. 由我们来使用.
继承体系结构:
ServletRequest(接口)<--------继承<-------HttpServletRequest(接口)<--------实现 org.apache.catalina.connector.RequestFacade@6049a827
ServletResponse(接口)<---------继承--- HttpServletResponse(接口)<-------------实现------org.apache.catalina.connector.ResponseFacade@3bec9d4
1.请求对象:获取请求的消息
1)为了防止编码格式的错误,首先应该设置请求编码和响应编码.
//设置请求编码和响应编码request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");2)/获取请求头
String name = request.getHeader("username");//获取请求头的值long date = request.getDateHeader(name);//获取日期头int i = request.getIntHeader(name);//获取数字头
3)获取请求行
String method = request.getMethod();//获取请求的方式:get/postString uri = request.getRequestURI();//获取UriStringBuffer url = request.getRequestURL();//获取URLString addr = request.getRemoteAddr();//获取IP地址String queryString = request.getQueryString();//获取请求的参数String protocol = request.getProtocol();//获取访问的版本,浏览器的信息4)获取请求体:封装post请求的请求参数
//获取请求体:封装post请求的请求参数BufferedReader reader = request.getReader();String line = reader.readLine();
5)获取请求的参数
//获取请求参数的不同方式String na = request.getParameter("username");//通过参数名称获取值String[] strings = request.getParameterValues("hobby");//通常用于复选框Map<String,String[]> map = request.getParameterMap();//遍历map集合Set<String> keySet = map.keySet();for(String key:keySet){System.out.println(key);//遍历参数名String[] ss = map.get(key);//获取参数的值for(String v:ss){System.out.println(key+"="+v);}}Enumeration names = request.getParameterNames();//通过枚举的方式获取6)中文乱码的解决:post请求
//处理post请求中文乱码的问题String n = request.getParameter("name");//服务器使用ISO-8859-1 的方式解码byte[] bys = n.getBytes("ISO-8859-1");n = new String(bys,"utf-8");
7)重定向和请求转发
重定向特点:两次请求,两次转发;既可以访问内部资源,也可以访问外部资源,地址栏内的地址发生变化
请求转发:一次请求,一次响应;只可以访问项目内部的资源;地址栏的地址不发生改变.
//重定向//1.设置302状态response.setStatus(302);response.setHeader("location", "http:baidu.com");//重定向:合二为一response.sendRedirect("http:baidu.com");//请求转发request.getRequestDispatcher("/demo1").forward(request, response);
重定向和请求转发的区别:
1.一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理,称之为请求转发。
2.一个web资源收到客户端请求后,通知浏览器去访问另外一个web资源,称之为请求重定向。
3.RequestDispatcher.forward方法只能将请求转发给同一个WEB应用中的组件;而HttpServletResponse.sendRedirect 方法还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。
如果传递给HttpServletResponse.sendRedirect 方法的相对URL以“/”开头,它是相对于整个WEB站点的根目录;如果创建RequestDispatcher对象时指定的相对URL以“/”开头,它是相对于当前WEB应用程序的根目录。
调用HttpServletResponse.sendRedirect方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;调用RequestDispatcher.forward 方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。
4.HttpServletResponse.sendRedirect方法对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的访问请求;RequestDispatcher.forward方法在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。
5.RequestDispatcher.forward方法的调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程;而HttpServletResponse.sendRedirect方法调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。
2.响应对象:封装响应的数据,当真正的响应之前,取出里面的数据,给浏览器响应.
1)为了防止编码格式的错误,首先应该设置请求编码和响应编码.
//设置请求编码和响应编码request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");
2)响应字符串:
//响应一个字符串'PrintWriter writer = response.getWriter();writer.write("正在请求");
3)响应一个图片
//响应一个图片String path = this.getServletContext().getRealPath("xxx.jpg");//获取图片的真是路径//读取文件FileInputStream fis=new FileInputStream(new File(path));//获取要读的文件ServletOutputStream fos = response.getOutputStream();byte[] by=new byte[1024];int len=0;while((len=fis.read(by))!=-1){fos.write(by,0,len);fos.flush();}//关闭资源fis.close();fos.close();
- JavaWeb---Servlet的请求和响应
- Servlet的请求和响应
- servlet的请求和响应
- Servlet之请求和响应
- Servlet处理请求和响应
- Servlet之请求和响应
- 《JavaWeb---Servlet的简单例子》---响应浏览器的请求,向浏览器输出数据
- Servlet中的Request和Response的请求和响应概述
- Servlet请求响应的模式
- JavaWeb(三) ----Servlet处理HTTP响应,请求
- J2EE HTTP的请求和响应原理,servlet处理原理
- JavaWeb 响应请求
- Servlet一次请求和响应过程
- Servlet Http请求和响应头格式
- Servlet处理用户请求和响应(二)
- jquery的ajax请求servlet与响应
- jquery的ajax请求servlet与响应
- Servlet-请求与响应
- 四大组件--ContentProvider
- oracle对约束的一些操作
- C++中将链表转换为数组描述的线性表
- 不说技术,不说潜规则, 说说职场上的小细节
- Linux Shell 基础(二)
- JavaWeb---Servlet的请求和响应
- Android 属性动画和添加图片
- 洛谷P1512 伊甸园日历游戏
- bzoj4027: [HEOI2015]兔子与樱花
- 作为一个运维工程师中的一员,现在开始我的博客之路.
- 设置idea
- 【读书总结】《三体》—— 生存是文明的第一需要
- drawerlayout+tablelayout+fragment+轮播
- 2017年Android最流行框架大全