请求与响应

1.响应行

常见状态码:

    1.200——表示一切正常;

    2.302(307):页面重新指定向;

    3.304:表示文件未修改,使用内存中获取页面资源;

    4.404:表示找不到网页;

    5.500:服务端出错,可能为代码错误;

在Servlet APl中,定义了一个HttpServletResponse接口,它继承自ServletResponse 接口,专门用来封装HTTP响应消息。由于HTTP响应消息分为状态行、响应消息头、消息体三部分。因此,在HttpServletResponse 接口中定义了向客户端发送响应状态码、响应消息头、响应消息体的方法。

request对象的学习:
作用:

获得request对象中封存了当前请求的所有信息
使用:

获取请求头数据:

req.
        getMethod();//获取请求方式
        req.getRequestURL();//获取请求URL信息
        req.getRequestURI();//获取请求URL信息
        req.getScheme();//获取协议版本

获取请求行数据:

req.getHeader("键名");//返回指定的请求头信息
        req.getHeaderNames();//返回请求头得键名枚举集合

获取用户数据:

req.getParameter("键名");//返回指定的用户健名对应的值,如果没有这个键,不会报错,只会返回null值。
        req.getParameterValues("键名");//返回指定的键名对应的多个值,例如返回多选的多个值,如果利用上面的方法,那么只会返回第一个值
        req.getParameterNames();//返回所有用户请求数据的键的枚举集合

response对象的学习:
作用:用来响应数据到浏览器的一个对象
使用:
设置响应头:

resp.setHeader(String name,String value);//在响应头中增加响应信息,如果键名相同,会覆盖之前的信息
resp.addHeader(String name,String value);//在响应头中增加响应信息,不会覆盖之前的信息

 设置响应状态:

resp.sendError(int code,String name);//自定义错误状态;

设置响应实体:

resp.getWriter().write(Strin str);//响应具体的数据给浏览器

发送响应消息体相关方法

getOutStream()方法获取输出流

getWriter()方法发送消息体

package cn.itcast.chapter04.response;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class PrintServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, 
        HttpServletResponse response)throws ServletException, IOException {
		    String data = "dashuj2004chenjie";
		    // 获取字节输出流对象
//			OutputStream out = response.getOutputStream();
//			out.write(data.getBytes());// 输出信息
            PrintWriter print = response.getWriter(); 
			print.write(data); // 输出信息
			
		}
		public void doPost(HttpServletRequest request, 
	        HttpServletResponse response)throws ServletException, IOException {
			doGet(request, response);
		}
	}

getOutStream()方法获取输出流对象

虽然response对象的getOutputStreamO和getWriter(O方法都可以发送响应消息体,但是,它们之间互相排斥,不可同时使用,否则会发生IllegalStateException异常

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("收到前端请求");
        //设置响应行
        //response.sendError(404,"大数据2004--项目请求的资源不存在");
        
        //设置响应行
        //response.setstatus(302);//设置响应行
        //response.setHeader("Location","/firstservlet/login.html");设置响应头

 

实现重定向:
一个web资源收到客户端请求后,他会通知客户端去访问另外一个web资源,这个过程就是重定向。

常见场景:

用户登录

void sendRedirect(String var1) throws IOException;

代码:

@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*
        resp.setHeader("Location","/r/img");
        resp.setStatus(302);
         */
        
        resp.sendRedirect("/r/img"); //重定向
    }

 结果在浏览器中访问效果:路径从 /red 自动跳转到 /img

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值