Servlet Java Web开发(3.1) request response

0.Servlet get 如何发送流

a.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.getWriter.print(yourString);}

b

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    byte [] tosend="good king".getBytes();
    response.getOutputStream().write(tosend);}

注意:两者只能用一个,不可混用。

1.重定向。

关键点:2次请求。

client请求A资源,A资源返回302,还有B的地址。client请求B。

BServlet中的代码

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setHeader("Location", "/HelloWorld/CServlet");
        response.setStatus(302);
注意:或者使用response.sendRedirect("/HelloWorld/CServlet");

注意重定向位置是相对于主机的,比如localhost:8080,当然也可以不加/,response.sendRedirect("http://www.baidu.com");直接重定向到百度。

BServlet回复内容:

HTTP/1.1 302 Found

Server: Apache-Coyote/1.1

Location: /HelloWorld/CServlet

Content-Length: 0

Date: Fri, 08 Jun 2018 12:43:09 GMT

 然后客户端就按照地址直接访问CServlet去了。

1.1延时重定向

访问后,客户端等待几秒后再重定向。BServlet代码如下

PrintWriter w=response.getWriter();
w.print("welcome to this page..Redirect in 5 seconds.?");
response.setHeader("Refresh", "5;URL=/HelloWorld/CServlet");

客户端访问BServlet,BServlet返回

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Refresh: 5;URL=/HelloWorld/CServlet

Content-Length: 50

Date: Fri, 08 Jun 2018 13:19:37 GMT

 

welcome to this page..Redirect in 5 seconds.

客户端5秒后访问CServlet

2.请求URL的含义

 3.Referer

String referer=request.getHeader("Referer");
System.out.println(referer);

a,如果使用浏览器直接访问,或者直接链接BServlet,referer值为null

 b项目新建一个html文件,位置是项目(HelloWorld)下的hi.html,主要内容

<a href="/HelloWorld/BServlet">I am a Link</a>此时,点击链接访问BServlet,http协议中的referer就会是:

 

4.请求转发和请求包含

和重定向不同的是,对于客户端来说,只有一个请求。

 

 相关代码request.getRequestDispatcher("/anotherServlet").forward(request,response);

请求转发的例子:

创建BServlet,get方法中代码,BServlet中不应该设置响应体。

创建CServlet,get方法中代码

用户访问BServlet,地址栏不会变化,浏览器输出you're now at CServlet

控制台输出

i am BServlet
i am CSerlet

请求包含的例子

和请求转发的区别:BServlet中可以设置响应体。

浏览器输出something in BServletyou're now at CServlet

 

转载于:https://www.cnblogs.com/legion/p/9157581.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值