Servlet服务器 HTTP 响应
2016-01-30 14:38
405 查看
上一篇博客《Servlet处理客户端HTTP请求》中简单介绍了如何使用Servlet处理客户端的请求,只处理请求,我们的工作其实只做了一半,请求处理完后,我们要对客户端的请求进行响应,这一篇博文将介绍Servlet如何响应。
同样的,我们在之前的工程上进行修改。
这样服务端就像客户端输出了一个网页,显示效果如下:
![](http://img.blog.csdn.net/20160130142928573)
查看页面源代码如下:
这正是我们输出内容。
在上面的例子中,我们直接的向客户端输出了HTML,我们还可以控制跳转到指定的页面,代码如下:
这样可以将页面重定向到
重定向和请求转发都可以控制页面的跳转,二者的区别在于重定向是由客户端重新请求,而请求转发是服务端进行跳转,在浏览器上现实的地址还是原请求地址,重定向显示新的地址。
同样的,我们在之前的工程上进行修改。
[code]package com.gujin.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Test extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); // 获得请求头信息 System.out.println("======HEAD INFO======"); Enumeration enumeration = request.getHeaderNames(); while (enumeration.hasMoreElements()) { String name = (String) enumeration.nextElement(); Enumeration headers = request.getHeaders(name); while (headers.hasMoreElements()) { System.out.println(name + ":" + headers.nextElement()); } } // 获得请求参数 System.out.println("======REQUEST PARAM======"); // 获得指定参数 // request.getParameter("userId"); // 获得所有请求参数名称 // request.getParameterNames(); // 获得请求参数集合 // request.getParameterMap(); Enumeration names = request.getParameterNames(); while (names.hasMoreElements()) { String name = (String) names.nextElement(); System.out.println(name + ":" + request.getParameter(name)); } // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter writer = response.getWriter(); // 想输出流写的内容就是客户端接收到的内容 writer.print("<html>"); writer.print("<head>"); writer.print("<meta charset='UTF-8'>"); writer.print("</head>"); writer.print("<body>"); writer.print("<h1>Hello!</h1>"); writer.print("</body>"); writer.print("<html>"); writer.flush(); writer.close(); } }
这样服务端就像客户端输出了一个网页,显示效果如下:
查看页面源代码如下:
[code]<html><head><meta charset='UTF-8'></head><body><h1>Hello!</h1></body><html>
这正是我们输出内容。
在上面的例子中,我们直接的向客户端输出了HTML,我们还可以控制跳转到指定的页面,代码如下:
[code]response.sendRedirect("index.html");
这样可以将页面重定向到
index.html页面,除了重定向外,我们还可以实现请求转发,代码如下:
[code]request.getRequestDispatcher("index.html").forward(request, response);
重定向和请求转发都可以控制页面的跳转,二者的区别在于重定向是由客户端重新请求,而请求转发是服务端进行跳转,在浏览器上现实的地址还是原请求地址,重定向显示新的地址。
相关文章推荐
- 神经网络 --学习之路,资料汇编
- 抓包分析TCP的三次握手和四次握手
- ios http请求
- QT加载网络图片
- 嵌入式Linux之相关网络环境的搭建
- JAVA网络爬虫WebCollector深度解析——爬虫内核
- 如何对Android设备进行网络抓包
- VMware 网络连接的几种方式
- Android-AndroidFlux-异步请求和网络
- XenServer部署系列——网络配置
- android-async-http cancelRequests
- 使用命令行查看网络连接情况
- http://my.oschina.net/chihz/blog/56256
- Unity3d 网络编程(二)(Unity3d内建网络各项參数介绍)
- 使用clumsy模拟网络延迟
- Java——网络编程
- Network 【HTTP通信过程/请求】
- 网线的两种线序
- poj 1459 最大流增广路算法
- UNIX网络编程 卷2:进程间通信