复习:
HttpServletRequest
请求行:
* getMethod()
* getRquestURL()
* getRquestURI()
* getContextPath() --获取虚拟目录
* getServletPath()
* getQueryString --> get请求方式的参数
username=lucy&password=123
请求头:
* getHeader(name)
请求体: 输入流 post方式的参数
* getReader()
username=lucy&password=123
通用的获取请求参数的方法:
getParameter(name)
String[] getParameterValues(name)
Map<String,Stirng[]> getParameterMap()
中文乱码:
get的字符集: UTF-8
post的字符集: iso8859-1
request.setCharaterEncoding("utf-8")
____________________________________________
案例: 页面注册
步骤:
1.创建项目,导入html页面,配置文件,jar包
2.创建数据库,和所需要的表
3.创建和数据库对应的实体类
4.编写工具类DruidUtils
5.创建UserDao,提供注册方法
6.创建Servlet,使用BeanUtils工具类,简化数据的封装
BeanUtils - 封装对象的工具类
* 作用: 用于封装JavaBean的
* 使用:
1.导包
conmms-beanutils
conmms-collections
2.方法:
* populate(Object obj,Map map)
将map集合的键值对信息,封装到对应的JavaBean对象中
* setProperty()
* getProperty()
案例: 页面登录
____________________________________________
ServletContext对象:
生命周期:
服务期开启,服务器结束
service -> doGet/doPost
Servlet的生命周期:
创建:默认第一次接收请求
销毁:服务器关闭

request作为域对象使用:
特点:
* 地址栏路径不会发生改变
* 转发只能访问当前服务器下的资源
* 转发是一次请求,可以使用request域对象来共享数据
范围: 一次请求
* 创建: 接受请求
* 销毁: 请求结束
方法:
* setAttribute(String name,Object obj)
* getAttribute(String name)
* removeAttribute(String name)
作用:在请求转发是进行数据的传递
使用场景: 通常是Servlet转发到jsp时使用
一个Servlet事情做到一半时,需要转发到另一个资源继续完成这件事情 -> 使用转发
____________________________________________
Response:响应
1.Response的组成部分:
1)响应行:状态码 + http协议
* 状态码:
* 1xx: 信息状态码
* 返回服务器接收到的客户端信息,但是没有接收完成任务 --> 了解
* 2xx: 成功状态码
* 200: 正常显示
* 3xx: 重定向状态码
* 304: 访问缓存
* 302: 重定向
* 4xx: 客户端错误状态码
* 404:(请求路径没有对应的资源)
资源未找到,路径错误
* 405:请求方式没有对应的doxxx方法
服务方法出错(service/doGet/doPost)
* 5xx: 服务器端错误状态码
* 500: 服务器内容出现的异常,代码错误
2)响应头:Map存储的信息
* setHeader() -> 设置响应头信息
3)响应体:要显示的界面
* 常用API:
* 获取输出流:
* 字符输出流: getWriter()
* 字节输出流: getOutpuStream()
* 解决响应体乱码问题:
* setContentType("text/html;charset=UTF-8")
2.重定向: 资源跳转的方式
* 特定:
* 地址栏会发生变化
* 重定向可以访问其他服务器的资源
* 重定向是两次请求. 不能使用request域对象来共享数据
* 使用场景:
* 第一个资源已经做完了一件事情,需要做下一件事情
例如:注册完成之后马上进行登录操作
* 常用方法:
* 重定向的方法
sendRedirect("虚拟目录+跳转的资源路径")
面试题: 重定向和转发的区别?