今日内容:
1.Servlet
2.HTTP协议
3.Request
##Servlet:
6.Servlet体系结构
Servlet--接口
|
1.GenericServlet--抽象类
|
2.HttpServlet--抽象类
*GenericServlet:将Servlet接口中其他的方法做了默认的空实现,只将service抽象方法复写
*将来定义Servlet时,可以继承GenericServlet,实现service即可
*HttpServlet对HTTP协议的一种封装,简化操作
1.定义类继承HttpServlet
2.复写doGet方法/doPost方法
7.Servlet相关配置
1.urlpartten:Servlet访问路径
*一个Servlet可以定义多个访问路径
*路径定义规则
1./xxx
2./xxx/xxx -- /xx/*多层路径
3.*.do
##HTTP
*概念:超文本传输协议
*传输协议:定义了,客户端和服务端通信时,发送数据的格式
*特点: 1.基于TCP/IP的高级协议
2.默认端口号:80
3.一次请求对应一次响应
4.每次请求之间是相互独立的,不能交互数据
*历史版本
*1.0版本
*1.1版本:复用连接
*请求消息数据格式:
1.请求行
请求方式 请求uri 请求协议/版本
Get /login.html HTTP/1.1
*请求方式
*HTTP协议有7种请求方式,常用两种
*get
1.请求参数在请求行中
2.请求的url长度有限制
3.不太安全
*post
1.请求参数在请求体中
2.请求的url长度无限制
3.相对安全
2.请求头
请求头名称:请求头值
*常见的请求头:
1.User-Agent
*可以在服务器端获取该头的信息,解决浏览器兼容性问题
2.Referer:
*告诉服务器,当前请求从哪来?
*作用:
1.防盗链
2.统计工作
3.请求空行
空行--用于分割POST请求的请求头和请求体
4.请求体(正文)
*封装POST请求消息的请求参数
*响应消息数据格式
##Request:
1.request对象和response对象的原理
1.request和response对象是由服务器创建的。使用它们
2.request对象是来获取请求消息的,response对象是来设置响应消息的
2.request对象继承体系结构
ServletRequest--接口
HTTPServletRequest--接口
RequestFacade类(Tomcat)
/8*9
3.request:
1.获取请求行消息
*String getMethod--获取请求方式
*String getContextPath--获取虚拟目录
*String getServletPath--获取Servlet路径
*String getQueryString--获取get方式请求参数
*String getRequestURI--获取请求URI
*StringBuffer get RequestURL--获取URL
*String getProtocol--获取协议及版本
*String getRemoteAddr--获取客户机的IP地址
2.获取请求头消息
*String getHeader(String name)--通过请求头的名称获取请求头的值
*Enumeration <String>getHeaderNames--获取所有的请求头名称
3.获取请求体数据:
7 *请求体:只有POST方式才有请求体
*步骤:
1.获取流对象
*BufferReader getReader():获取字符输入流只操作字符数据
2.再从流对象中拿数据
2.其他功能:
1.获取请求参数通用方式
*String getParameter(String name)--根据参数名称获取参数值
*String[] getParameterValues(String name)--根据参数名称获取参数值的数组
*
*中文乱码问题:request.setCharacterEncoding("")
2.请求转发:一种在服务器内部的资源跳转方式
1.步骤
1.RequestDispatcher("path")
2.RequestDispatcher.forward
总:request.RequestDispatcher.forward(request,response)
2.特点:
1.浏览器地址栏路径不发生变化
2.只能转发到当前服务器内部资源中
3.转发是一次请求
3.共享数据
*域对象:一个有作用范围的对象,可以在范围内共享数据
*request域:代表一次请求的范围
*方法:setAttribute(String,Object o)
getAttribute()
romoveAttribute()
4.获取ServletContext:
*getServletContext()
#案例 用户登录
*分析
*开发步骤
1.创建项目,导入html页面,配置文件导入jar包
2.创建User数据库
3.创建包cn.itcast.domain 用户的实体类User
4.创建包cn.itcast.dao,创建UserDao类(登录方法),操作数据库中User表的类
5Jdbc工具类 使用Druid连接池
6.编写Servlet类
7.login.html中Form中 action方法
*虚拟目录+servlet路径
//设置编码
//获取请求参数
//封装User对象
//调用UserDao的login方法
//判断user
if(user==null){
//登录失败
}else{
//登录成功
//存储数据
//转发
}
*登录失败
//设置编码
//输出 response.getWriter().write("")
*登录成功
//获取request域中共享的user对象
//设置编码
//输出
9.BeanUtils工具类,简化数据封装
1.类必须被public修饰
2.必须提供空参构造器
3.成员变量必须使用private修饰
4.提供公共的setter和getter方法
方法:set/getPorperty
populate
|
|