Servlet学习笔记(三)之HttpServletResponse
2016-11-22 15:13
411 查看
init() 方法中参数 ServletConfig 对象使用
通过ServletConfig 获得 ServletContext对象 使用
HttpServletRequest 与HttpServletResponse
HttpServletResponse 继承 ServletResponse 接口 ,ServletResponse 并没有提供与HTTP协议相关API ,HttpServletResponse 添加了与协议相关 API,上一篇中也提过,JavaEE API 中并没有提供 HttpServletResponse 实现类 —- 实现类由tomcat服务器提供的
service方法 含有两个参数对象 ServletRequest ServletResponse
在实际开发Servlet过程中 不需要覆盖service —- HttpServlet 根据请求方式自动调用doGet 或者 doPost ,doGet和doPost参数 HttpServletRequest 和 HttpServletResponse
客户端每次请求 都会创建request对象和response对象 —— 被传递service / doGet /doPost
HttpServletRequest封装 客户端相关信息,服务器Servlet程序可以通过request对象 操作客户端信息
HttpServletResponse 封装服务器 向客户端发送响应数据信息,Servlet程序 通过response对象 向客户端发送响应
response常用 API
setStatus 设置响应行 当中 状态码
setHeader 设置响应头信息
getOutputStream 获得字节流 —- 输出响应体内容
getWriter 获得字符流 —- 输出响应体内容
Response指定状态吗&头信息
200 请求处理成功
302 客户端重定向
304 客户端访问资源没有被修改,客户端访问本地缓存
404 访问资源不存在
500 服务器内部出错
通过如上设置浏览器上打开url将显示“404”,因此通过setStatus可以向客户端设置不同的状态码。
通过302 + Location 头信息实现页面重定向效果 (请求重定向指一个web资源收到客户端请求后,通知客户端去访问另外一个web资源)
为了更简便的重定向,可以使用response.sendRedirect
接下来,进行一个重定向的例子:
项目名:ResponseTest
用户登录界面
Servlet程序
Servlet配置
welcome页面
其中Http的部分可以详见之前的博客http://blog.csdn.net/megustas_jjc/article/details/52804767
通过ServletConfig 获得 ServletContext对象 使用
HttpServletRequest 与HttpServletResponse
HttpServletResponse 继承 ServletResponse 接口 ,ServletResponse 并没有提供与HTTP协议相关API ,HttpServletResponse 添加了与协议相关 API,上一篇中也提过,JavaEE API 中并没有提供 HttpServletResponse 实现类 —- 实现类由tomcat服务器提供的
service方法 含有两个参数对象 ServletRequest ServletResponse
在实际开发Servlet过程中 不需要覆盖service —- HttpServlet 根据请求方式自动调用doGet 或者 doPost ,doGet和doPost参数 HttpServletRequest 和 HttpServletResponse
客户端每次请求 都会创建request对象和response对象 —— 被传递service / doGet /doPost
HttpServletRequest封装 客户端相关信息,服务器Servlet程序可以通过request对象 操作客户端信息
HttpServletResponse 封装服务器 向客户端发送响应数据信息,Servlet程序 通过response对象 向客户端发送响应
response常用 API
setStatus 设置响应行 当中 状态码
setHeader 设置响应头信息
getOutputStream 获得字节流 —- 输出响应体内容
getWriter 获得字符流 —- 输出响应体内容
Response指定状态吗&头信息
200 请求处理成功
302 客户端重定向
304 客户端访问资源没有被修改,客户端访问本地缓存
404 访问资源不存在
500 服务器内部出错
response.setStatus(404);//即可设置状态码,需要重启服务器
通过如上设置浏览器上打开url将显示“404”,因此通过setStatus可以向客户端设置不同的状态码。
通过302 + Location 头信息实现页面重定向效果 (请求重定向指一个web资源收到客户端请求后,通知客户端去访问另外一个web资源)
response.setStatus(302); response.setHeader("Location","/```/````");//相对路径和绝对路径,注意这里的路径是由客户端定向服务器,代表客户端 / , 必须添加工程虚拟目录
为了更简便的重定向,可以使用response.sendRedirect
接下来,进行一个重定向的例子:
项目名:ResponseTest
用户登录界面
<!--用户登录页面 ,通过action的URL跳到Servlet --> <form action="/ResponseTest/response2" method="post"> 用户名 <input type="text" name="username" /><br/> 密码 <input type="password" name="password" /> <br/> <input type="submit" value="登录" /> </form>
Servlet程序
cn.servlet.response.demo2.ResponseServlet2 import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 通过这个程序 完成用户登陆 * * @author Megustas * */ public class ResponseServlet2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 1. 获得客户端提交用户名和密码 String username = request.getParameter("username"); String password = request.getParameter("password"); // 2、判断是否正确 ,假设 admin / admin if ("admin".equals(username) && "admin".equals(password)) { // 用户名 和 密码正确 // response.setStatus(302); // response.setHeader("Location", "/ResponseTest/welcome.html"); // 使用response.sendRedirect完成重定向 response.sendRedirect("/ResponseTest/welcome.html"); } else { // 不正确 // response.setStatus(302); // response.setHeader("Location", // "/ResponseTest/response/demo2/login.html"); response.sendRedirect("/ResponseTest/response/demo2/login.html"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
Servlet配置
<servlet> <servlet-name>ResponseServlet2</servlet-name> <servlet-class> cn.servlet.response.demo2.ResponseServlet2 </servlet-class> <servlet-mapping> <servlet-name>ResponseServlet2</servlet-name> <url-pattern>/response2</url-pattern> </servlet-mapping>
welcome页面
<body> <h1>Welcome!</h1> <!-- 因此可以通过 http://localhost:8080//ResponseTest/welcome.html 对此界面进行访问 --> </body>
其中Http的部分可以详见之前的博客http://blog.csdn.net/megustas_jjc/article/details/52804767
相关文章推荐
- struts2学习笔记---获得HttpServletResponse或HttpServletRequest对象的几种方法
- servlet学习笔记---HttpServletResponse输出中文的问题和缓存问题
- JSP网络编程-请求和响应-HttpServletRequest-HttpServletResponse-学习笔记
- [原创]java WEB学习笔记09:ServletResponse & HttpServletResponse
- Servlet 学习笔记7:HttpSession
- jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
- 【Struts2学习笔记(8)】访问或添加request/session/application属性获取HttpServletRequest / HttpSession / ServletContex
- Servlet与Jsp学习笔记--2、POST HTTP Request
- 【Head First Servlets and JSP】笔记5:HttpServletResponse resp
- Java for Web学习笔记(六):Servlet(4)HttpServletResponse
- Servlet学习笔记(HTTP请求详细了解以及文件下载示例)
- Servlet 学习笔记5:HTTP应答头
- servlet学习笔记---response防盗链
- JSP&&SERVLET学习笔记(四):关于HttpServletRequest
- Spring学习笔记(二十三):关于STS提示"javax.servlet.http.HttpServletRequest cant be resolved"的问题
- java WEB学习笔记32:HttpSession 接口常用方法 及 HttpServletRequest接口中的Session方法 Demo
- HttpServletResponse进一步学习
- 20160324servlet学习笔记HttpServletRequest对象中文乱码解决方法
- 跟学韩老师学习java-servlet篇之四httpServletResponse的各种函数应用
- java Web Servlet学习笔记-1 HttpServletQequest对象的学习