request对象和response对象原理:
request和response对象是由服务器创建的。我们来使用他们
request和response对象是来获取请求消息,response对象是来设置相应消息
request对象继承体系结构
ServletRequest-----接口
| 继承
HttpServletRequest---接口
| 实现
org.apache.catalina.connector.RequestFacade类(Tomcat)
request 功能:获取请求消息数据
获取请求消息
获取请求行数据
获取请求方式
String getMethod()
(*)获取虚拟目录
String getContextPath()
获取Servlet路径
String getServletPath()
获取get方式请求参数
getQueryString
(*)获取请求URI:
String getRequestURI()
StringBuffer getRequestURL()
URL:统一资源定位符
URI:统一资源标识符 比URL范围大
获取协议及版本
String getProtocol()
获取客户机的IP地址
String getRemoteAddr()
获取请求头数据
String getHeader(String name):通过请求头的名称获取值
user-agent浏览器版本 referer获取URL地址
获取请求体数据
只有POST请求方式才有请求体,在请求中封装了POST请求的请求参数
步骤
获取流对象
BufferedRreader getReader():获取字符输入流,只能操作字符数据
ServletInputStream getInputStream:获取字节输入流,可操作任何类型数据
其他功能(重要)
1.获取请求参数通用方式
get Parameter(String name):根据参数名称获取参数值
getParameterValues(String name)根据参数名称获取参数值的数组
getParameterNames():获取所有请求的参数名称 ----迭代器原理
getParameterMap():获取所有参数的map集合 ---常用
中文乱码问题
解决方式:在获取参数前,设置request的编码方式。request.setChracterEncoding("utf-8")
2.请求转发:一种在服务器内部的资源跳转方式
步骤:
通过request对象获取请求转发其对象:getRequestDispatcher(资源地址)
通过请求转发器对象进行转发:forward
特点:
浏览器路径不发生变化
只能转发到当前的服务器内部资源中
转发是一次请求
3.共享数据
域对象:一个有作用范围的对象,可以在范围内共享数据
request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
方法:
setAttribute 储存数据
getAttribute:通过键获取值
removeAttribute 通过键移除键值对
4.获取ServletContext
getservletContext()
用户登录案例:
需求:
编写login.html 登录页面
username&password两个输入框
使用Druid数据库连接池技术,操作mysql,数据库中的user表
使用JdbcTemplate技术封装JDBC
登陆成功跳转到SuccessServlet展示:登陆成功!用户名,欢迎您
登陆失败跳转到FailServlet展示:登陆失败,用户名或密码错误
需求分析:先写一个登录页面,
创建一个HTTPServlet 的实现类,调用getParameterMap方法获取用户名和密码
将用户名和密码封装为一个对象
操作数据库创建一个查询方法,返回user对象
判断user是否为null
开发步骤:
创建项目,导入HTML页面,配置文件,jar包
创建数据库环境
创建操作数据库的类
BeanUtils使用方法
调用getParameterMap()获取所有请求参数
创建User对象,调用populate(Object obj,map)
JavaBean :标准的Java类
要求:
类必须被public修饰必须提供
HTTP协议:响应消息
请求消息:客户端发送给服务器端的数据
数据格式
请求行
请求头
请求空行
请求体
响应消息:服务器端发送给客户端的数据
数据格式
响应行
组成:协议/版本 响应状态吗 状态码描述
响应状态码:服务器告诉客户端本次请求和响应的一个状态
状态码都是三位数字
分类:
1xx:服务器接收客户端消息,但没有接收完成,等待一段时间后发送1xx状态码
2xx:成功。代表200
3xx:重定向。代表:302(重定向),304(访问缓存)
4xx:客户端错误。
代表
404(请求路径没有对应的资源)
405:请求方式没有对应的doxxx方法
5xx:服务器端错误。代表500(服务器内部出现的异常)
响应头
格式:头名称:值
常见的响应头
Content-type:服务器告诉客户端本次响应体数据格式以及编码格式
Content-disposition:服务器告诉客户端以什么形式打开响应体数据
响应空行
响应体