笔记来源教材和网络仅供参考,主要是为了总结学习
学习目标:
掌握HttpServletRequest对象的使用
掌握HttpServletResponse对象的使用
掌握如何解决请求和响应过程的中文乱码问题
掌握如何实现请求转发与请求重定向
Servlet最主要的作用就是处理客户端请求,并向客户做出响应。为此,针对Servlet的每次请求,Web服务器在调用servlet ()方法之前都会创建两个对象分别是HttpServletRequest和HttpServletResponse。其中,HttpServletRequest用于封装HTTP请求消息,简称request对象。HttpServletResponse用于封装HTTP响应消息,简称reponse对象。这两个对象在Servlet过程至关重要。如图
需要注意的是,在Web服务器运行阶段,每个Servlet都只会创建一个实例。然而,每次HTTP请求,Web服务器都会调用所请求的Servlet实例的servlet(HttpServletRequest request,HttpServletResponse response)方法,重新创建一个request对象和一个response对象。
案例:
一、浏览器通过 localhost:8080 连接服务器;
二、服务器在 webapps 目录下寻找 web01 目录,找到后进入web01 目录内寻找 WEB-INF 目录,在进入 WEB-INF 目录内寻找 web.xml 文件;
三、再进入 web.xml 文件中找到 greeting,从而找到对应的 servlet-name,再找到某个 servlet 的子类,并创建该类的实例对象;
四、再调用该对象的 service 方法,并传入 request 和 response 两个对象参数,service 方法会从 request 对象中获取到 name=zs,然后执行 service 方法中的业务逻辑语句,并把结果写入到 response 中;
五、而后 server 会从response 中获得结果传送给浏览器显示出来。
在Servlet API中,定义了一个HttpServletResponse接口,它继承自ServletResonse接口,专门用来封装HTTP响应消息。由于HTTP响应消息分为状态行、响应消息头、消息体三部分。因此在HttpServletResponse接口中定义了向客户端发送响应状态码、响应消息头、响应消息体的方法。
示例:
当Servlet向客户端回送响应消息时,需要在响应消息中设置状态码。为此在HttpServletResponse接口中,定义了两个发送状态码。
该方法用于设置HTTP响应消息的状态码,并生成响应状态行。由于在响应状态行中的状态描述信息直接与状态码相关,而HTTP版本由服务器确定,由此,只要通过setStatus(int status) 方法设置了状态码,即可实现状态行的发送。需要注意的是,正常情况下,Web服务器会默认产生一个状态码为200的状态行。
该方法用于发送表示错误消息的状态码,例如,404状态码表示找不到客户端请求的资源在response对象中,提供了两个重载的sendError(int sc)方法,具体如下。
public void sendError(int code) throws java.io.IOException public void sendError(int cide, String message) throws java.io.IOException
上面重载方法中,第一个只是发送错误信息状态码,第二个方法除了发送状态码外,还可以增加一条用于提示说明的文本信息,该文本信息将出现在发送给客户端的正文内容中
但是这两个方法互斥不能同时使用,否则会发生illegalStateException异常
解决中文乱码
实现网页定时刷新并跳转
实现重定向
解决请求参数的中文乱码问题