HttpServletResponse和HttpServletRequest常见应用

来源:互联网 发布:淘宝买家花呗开通条件 编辑:程序博客网 时间:2024/06/05 14:51

HttpServletResponse

  • 向客户端输出数据
//文本文件(字符)PrintWriter out = response.getWriter();out.println("hello world");//二进制文件(字节/字符)OutputStream os=response.getOutputStream();os.write("hello world".getBytes());

两个流不能同时使用,当回送字符时,PrintWriter效率更高一些,回送字节用OutputStream。
- 请求重定向

response.sendRedirect("/UserManager/LoginServlet");//"资源"//向下一个资源传递参数response.sendRedirect("/UserManager/MainFrame?uname="+username+"&pwd="+password);

注意当用sendRedirect传递参数时,只能传String,不能传object。此重定向会回到浏览器。
- 发送http响应头

response.setHeader("报头名","内容")//来设置回送response.setContentType("text/html;charset=utf-8")//设置回送内容样式response.setStatus()//设置状态码response.setCharacterEncoding("utf-8")

具体内容见上一篇文章 HTTP协议详解
Github地址:设置响应报头
- 文件下载
具体内容见上一篇文章 HTTP协议详解
Github地址:文件下载

HttpServletRequest

  • 获取客户机请求头信息
//获取URLString URL=request.getRequestURL().toString();//获取URI,web名+资源名String URI=request.getRequestURI();//获取请求数据 URL?username=aa&pwd=123String queryString=request.getQueryString();//获取请求客户端IP地址String remoteAddr=request.getRemoteAddr();//获取web服务器IP地址String localAddr=request.getLocalAddr();//获取请求主机名(DNS注册),若无注册为IP地址String remoteHost=request.getRemoteHost();//获取web服务器主机名String localName=request.getLocalName();//获取客户机端口号int remotePort=request.getRemotePort();//获取web服务器端口号int localPort=request.getLocalPort();

具体代码请参考:
Github地址:获取客户机信息
request.getHeader("请求头名")
request.getHeaderNames()可以获取所有Header头的名字
具体代码请参考:
Github地址:获取客户机信息
- 获取客户机请求参数(表单)

//接收参数String u=request.getParameter("username");//接收复选框String[] hobbies=request.getParameterValues("hobby");

具体代码请参考:
Github地址:获取请求参数
- 请求转向

//将参数传递给下一个页面request.setAttribute("u", username);request.getRequestDispatcher("/Servlet2").forward(request, response);//第二页面获取参数String username=(String) request.getAttribute("u");

请求转向和请求重定向的区别
1.请求重定向传递参数为response.sendRedirect("/UserManager/MainFrame?uname="+username+"&pwd="+password);,只能传递String,请求转向传递参数为request.setAttribute("u", username),key为String,value为object。
2.请求重定向可以转向该web应用之外的URL,而请求转向不能访问此web应用,因为其发生在服务器端,没有回到浏览器端。
3.请求转向地址栏显示第一次forward的URL,但数据为第二次的。
4.request.setAttribute("u", username)把数据放在request域对象中,属性在一次请求中有效(请求未回到浏览器成为一次请求)。

具体代码请参考:
Github地址:登陆表单
Github地址:servlet1请求转向
Github地址:servlet2接收

0 0
原创粉丝点击