JavaWeb-04请求与响应

目录

一、Http响应

二、实现重定向


一、Http响应


1.1 响应行
(1).【Http版本号    状态码     原因叙述】

(2)常见状态码:

    <1>.200——表示一切正常

    <2>.302(307):页面重新指定向(可用在付款前必须登录、联网前必须登录)

    <3>.304:表示文件未修改,使用内存中获取页面资源

    <4>.404:表示找不到网页

    <5>.500:服务端出错,可能是代码错误

Servlet最主要的作用就是处理客户端的请求,并向客户端作出响应。
URI:统一资源标志符
URL:统一资源定位符,具体的URI,是URI的一个子集,不仅唯一标识资源,而且还提供了定位该资源的信息。

在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);//响应具体的数据给浏览器

1.2发送响应消息体相关方法

1.getOutStream()方法获取输出流

2.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 = "dashuj2004Lily";
		    // 获取字节输出流对象
//			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

猜你喜欢

转载自blog.csdn.net/qq_55694317/article/details/121063955