黑马程序员技术交流社区
标题:
学习让我快乐
[打印本页]
作者:
胡金超
时间:
2019-8-30 15:35
标题:
学习让我快乐
1.servlet的收尾
a)继承体系
extends HttpServlet
重写doGet或者doPost
b)路径写法
1. /user/login
2. /info
3. *.do
4. /hello.do
5. /*.do(报错)
2.request
Http
格式
请求行
请求头
请求体
注意:
get没有请求体.数据在url处拼接
post有请求体
get和post去别
1.安全
2.地址栏
3.数据长度
4.上传只能时post
request的原理
一次访问对应一次请求和一次响应
一次访问到服务器,服务器针对这次访问创建一个request和response对象把参数传给servlet的service方法
request的作用
1.获取请求参数
getMethod(0
getContextPath()
getRequestUri()
getRequestUrl()
getHeader()
getParameter()
getParameterValues()
getParameterMap()
setCharacterEncoding()
2.作为域对象进行数据共享(只能请求转发时使用!!!!)
setAttribute()
getAttribute()
removeAttribute()
3.进行页面的请求转发
request.getRequestDispatcher("路径").forward(request,response)
请求转发的特点
1.地址栏不发生改变
2.只能访问服务器内部资源(包括/WEB-INF)
3.只有一次请求
注意事项:
a->b a是post b是post
a->web-inf中内容
req.getRequestDispatcher("/WEB-INF/hehe.jsp").forward(req,resp);
注意:/WEB-INF/只能通过请求转发访问
路径写法
相对路径
要把当前路径和目标路径写出来,以当前路径作为参考系,写目标路径
./ 当前路径
../ 上一级
./可以省略
绝对路径
基于浏览器的绝对路径
/虚拟路径/访问路径
BeanUtils
把服务器接收的数据自动封装到一个实体类中
1.获取浏览器传到后台请求参数
Map<String,String[]> map = request.getParameterMap();
2.创建一个空的对象
User u = new User();
3.使用BeanUtils进行封装
BeanUtils.populate(u,map)
属性和成员变量
User
name --> 成员变量
setUsername(String name){ 属性是username
this.name = name;
}
属性时根据set和get方法来的!!!!!!!
反射 -> 内省
############################################################################
响应
状态码
200 成功
302 重定向
304 缓存 get请求 图片 js css
400 坏的请求(框架!!!)
403 权限不足
404 页面无法访问 最常出现问题之一
405 方法不支持
500 服务器内部资源错误 最常出现的问题之一
404 -> 路径写错
500 -> 代码写错
重定向和请求转发的区别!!
请:一次请求 重:二次请求
请:地址栏不变 重:地址栏改变
请:访问服务器内部资源 重:访问外部和服务器内部资源(不能访问/web-inf下的资源)
请:在request域中数据共享 重:不能在request域中谁共享
常见的相应头
content-type 设置响应编码,设置内容mime类型
content-disposition 场景:下载
响应头和请求头的区别
请求头: 发送请求时浏览器携带到服务器的数据
响应头: 服务器处理完请求后,将数据回写时携带回浏览器的数据
response
1.往浏览器回写数据
response.getWriter().write()
response.getOutputStream().write()
2.控制页面跳转
response.sendRedirect()
3.解决响应乱码
字符流
response.setContentType("text/html;charset=utf-8");
字节流
response.setContentType("text/html;charset=utf-8");
response.getOutputStream().write(字符串.getBytes("utf-8"))
response.setContentType("text/html;charset=utf-8")作用?
1.告诉浏览器以utf-8的形式去接收数据
2.把数据写回到浏览器的时候用utf-8的格式输出
路径
绝对路径
找根路径!!!
基于服务器端的绝对路径(请求转发中使用)
/访问路径
注意:!!!!不加虚拟路径
基于浏览器端的绝对路径
/虚拟路径/访问路径
验证码
防止恶意提交表单
实现步骤
1.创建图片对象
2.画框
3.填背景色
4.生成验证码
5.画干扰线
验证码生成
随记生成
A-Za-z0-9
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2