1、Http协议
2、Request
3、登录案例
A.请求和响应
a. 请求 request "客户端---发送数据--->服务器"
b. 响应 response "服务器---回复数据--->客户端"
B.Http协议特点
a.基于TCP/IP的高级协议 (底层用的IO流 Socket网络编程)
b.默认端口号 80 (不需要写端口号就可以访问)
c.请求一次对应响应一次.
d.多个请求之间相互独立,互补干扰.
请求方式 请求url 请求协议/版本
GET /login.html HTTP/1.1
请求方式:(HTTP协议有7中请求方式,常用的有2种)
GET:
a. 请求参数在请求行中,在url后。
b. 请求的url长度有限制的
c. 不太安全
POST:
a. 请求参数在请求体中
b. 请求的url长度没有限制的
c. 相对安全
A.含义
客户端浏览器告诉服务器一些信息(哪种浏览器,哪个地址,哪种编码,哪种版本...)
B.常见的两个请求头
a. User-Agent 客户端告诉服务器浏览器信息
b. Referer:http://localhost/login.html
//客户端告诉服务器,我来自于哪个地址.(统计用户量,防止盗链)
给Post请求,提供使用的。get请求没有请求体
A.含义
a. Request 请求 "浏览器--->发送数据--->服务器"
b. Response 响应 "服务器--->回复数据--->浏览器"
B.创建对象的方式
Request和Response 都是服务器内置的对象,服务器内部帮助你创建的对象,你可以直接拿过来使用的
interface HttpServletRequest extends ServletRequest //后期使用的是 HttpServletRequest
org.apache.catalina.connector.RequestFacade implements HttpServletRequest //Tomcat帮助你创建的对象
A. String getMethod() //获取请求方式 :GET
B. String getContextPath() //【重点】获取虚拟目录:/day14
C. String getServletPath() //获取Servlet路径: /demo1
D. String getQueryString() //获取get方式请求参数:name=zhangsan
E. String getRequestURI() //【重点】获取请求URI:/day14/demo1
F. StringBuffer getRequestURL() //【重点】URL:统一资源定位符http://localhost/day14/demo1
//URI:统一资源标识符 : 共和国 Reader
//URL: 统一资源定位符 :中华人民共和国 FileReader
G. String getProtocol() //获取协议及版本:HTTP/1.1
H. String getRemoteAddr() //获取客户机的IP地址:
A. String getHeader(String name) //【重点】通过请求头的名称获取请求头的值
//User-Agent 参数可以获取到 浏览器的信息(请求来自于哪一款浏览器"谷歌浏览器""火狐浏览器"等)
//Referer 参数可以识别当前的链接是从哪里来,应用场景:解决防盗链的问题。
B. Enumeration<String> getHeaderNames() //获取所有的请求头名称
(只有POST请求才有请求体)
A. BufferedReader getReader() //获取字符输入流,只能操作字符数据
B. ServletInputStream getInputStream() //获取字节输入流,可以操作所有类型数据
A. String getParameter(String name) //【重点】根据参数名称获取参数值 uname=zs&pword=123
B. String[] getParameterValues(String name) //根据参数名称获取参数值的数组多选框 hobby=xx&hobby=game
C. Enumeration<String> getParameterNames() //获取所有请求的参数名称
D. Map<String,String[]> getParameterMap() //【重点】获取所有参数的map集合
request.setCharacterEncoding("utf-8"); //设置请求request的编码方式是 utf-8
response.setCharacterEncoding("utf-8"); //设置响应response的编码方式是 utf-8
A.含义
服务器内部资源之间的跳转方式
B.步骤
//获取到请求转发器分发器的对象
a. RequestDispatcher dispatcher = request.getRequestDispatcher("需要跳转的路径");
//将请求和响应转发过去
b. dispatcher.forward(ServletRequest request, ServletResponse response);
C.特点
a. 地址栏不变(浏览器的地址栏不会发生改变)
b. 转发内部资源(只能够转发服务器内部的资源,不能访问外部其他资源)
c. 转发是一次请求(转发是一次请求,不是多次)
A.request共享域:
在服务器内部 之间转发的时候,这里就是共享域.在此期间,数据可以共享.
B.几个方法
a. void setAttribute(String name,Object obj) //"增","改" 存储数据
b. Object getAttitude(String name) //"查"通过键获取值
c. void removeAttribute(String name) //"删"通过键移除键值对
ServletContext sc = request.getServletContext();
A.HTML页面
表单(账号的输入框,密码的输入框)
B.数据库连接池 Druid
数据库 day14
表 user
C.JDBC使用的是 JDBCSpring
D.两个Servlet
a.成功跳转 SuccessServlet "展示登录成功"
b.失败跳转 FailServlet "展示登录失败"
A. cn.itcast.dao
a.类 UserDao //操作数据库中User表的类
1.JdbcTemplate template //成员变量
2.public User login(User loginUser) //登录的方法
B. cn.itcast.domain
a.类 User //实体类(成员变量,成员方法,构造方法)
1. private int id; //编号id
2. private String username; //用户名
3. private String password; //密码
4. private String gender; //性别
C. cn.itcast.test
a.类 UserDaoTest //测试数据库登录操作的方法 login()
b.类 BeanUtilsTest //测试BeanUtils测试的方法 setProperty() getProperty()
D. cn.itcast.util
a.类 JDBCUtils //工具类
1. private static DataSource ds; // 成员变量连接池
2. 静态代码块 //加载配置文件,给连接池赋值
3. static DataSource getDataSource() //获取连接池对象的方法
4. static Connection getConnection() //获取连接对象的方法
E. cn.itcast.web.servlet
a.类 LoginServlet //登录的Servlet 可以去转发
b.类 SuccessServlet //成功的Servlet 响应对象 response 回复一句话 "登录成功,欢迎XXX"
c.类 FailServlet //失败的Servlet 响应对象 response 回复一句话 "登录失败,用户名或密码错误"
A. 先写的是 数据库 MySQL
B. 再写的是 HTML页面
C. 最后的是 Java包、类、方法等
A、作用
可以把一个Map集合,采用方法,封装成为 JavaBean 的对象
B、使用步骤
a.导入jar包
b.调用方法
BeanUtils.populate(bean,map); //参数1:JavaBean的对象,参数2:map集合