JavaWebDay14_HTTP协议,Request,登录案例。

JavaWebDay14

课程大纲

1、Http协议
2、Request
3、登录案例

第一章 Http协议

1、Http协议的概述
A.请求和响应
	a. 请求 request  "客户端---发送数据--->服务器"
	b. 响应 response "服务器---回复数据--->客户端"

B.Http协议特点
	a.基于TCP/IP的高级协议 (底层用的IO流 Socket网络编程)
	b.默认端口号 80 (不需要写端口号就可以访问)
	c.请求一次对应响应一次.
	d.多个请求之间相互独立,互补干扰.
2、Http请求行
请求方式 请求url 请求协议/版本
	GET /login.html HTTP/1.1

请求方式:(HTTP协议有7中请求方式,常用的有2)
	GET:
		a. 请求参数在请求行中,在url后。
		b. 请求的url长度有限制的
		c. 不太安全
	POST:
		a. 请求参数在请求体中
		b. 请求的url长度没有限制的
		c. 相对安全
3、Http请求头
A.含义
	客户端浏览器告诉服务器一些信息(哪种浏览器,哪个地址,哪种编码,哪种版本...)
	
B.常见的两个请求头
	a.  User-Agent 客户端告诉服务器浏览器信息
	b.  Referer:http://localhost/login.html  
	//客户端告诉服务器,我来自于哪个地址.(统计用户量,防止盗链)	
4、Http请求体
给Post请求,提供使用的。get请求没有请求体

第二章 Request 请求

1、Request和Response原理
A.含义
	a. Request  请求 "浏览器--->发送数据--->服务器"
	b. Response 响应 "服务器--->回复数据--->浏览器"
	
B.创建对象的方式
	Request和Response 都是服务器内置的对象,服务器内部帮助你创建的对象,你可以直接拿过来使用的
2、Request 的体系结构
interface HttpServletRequest extends ServletRequest //后期使用的是 HttpServletRequest
org.apache.catalina.connector.RequestFacade implements HttpServletRequest //Tomcat帮助你创建的对象
3、常用的方法
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地址:
4、获取请求头的方法
A. String getHeader(String name)		//【重点】通过请求头的名称获取请求头的值
    	//User-Agent 参数可以获取到 浏览器的信息(请求来自于哪一款浏览器"谷歌浏览器""火狐浏览器"等)
    	//Referer 参数可以识别当前的链接是从哪里来,应用场景:解决防盗链的问题。
B. Enumeration<String> getHeaderNames()	//获取所有的请求头名称
5、获取请求体的方法

(只有POST请求才有请求体)

A. BufferedReader getReader()  			//获取字符输入流,只能操作字符数据
B. ServletInputStream getInputStream() 	//获取字节输入流,可以操作所有类型数据
6、获取请求参数的方法
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集合
7、解决中文乱码的问题
request.setCharacterEncoding("utf-8");  	//设置请求request的编码方式是 utf-8
response.setCharacterEncoding("utf-8");  	//设置响应response的编码方式是 utf-8
8、请求转发
A.含义
	服务器内部资源之间的跳转方式
	
B.步骤
	//获取到请求转发器分发器的对象
	a. RequestDispatcher dispatcher = request.getRequestDispatcher("需要跳转的路径"); 
	//将请求和响应转发过去
	b. dispatcher.forward(ServletRequest request, ServletResponse response);  
		
C.特点
	a. 地址栏不变(浏览器的地址栏不会发生改变)
	b. 转发内部资源(只能够转发服务器内部的资源,不能访问外部其他资源)
	c. 转发是一次请求(转发是一次请求,不是多次)
9、共享数据
A.request共享域:
	在服务器内部 之间转发的时候,这里就是共享域.在此期间,数据可以共享.
        
B.几个方法
	a. void setAttribute(String name,Object obj)	 //"增","改" 存储数据
	b. Object getAttitude(String name)				//"查"通过键获取值
	c. void removeAttribute(String name)			//"删"通过键移除键值对	
10、获取ServletContext
ServletContext  sc = request.getServletContext();

第三章 登录案例

1、登录需求分析
A.HTML页面
	表单(账号的输入框,密码的输入框)
    
B.数据库连接池 Druid 
	数据库 day14
	表 user
	
C.JDBC使用的是 JDBCSpring

D.两个Servlet
	a.成功跳转 SuccessServlet  	"展示登录成功"
	b.失败跳转 FailServlet		"展示登录失败"
2、常用的几个包
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 回复一句话 "登录失败,用户名或密码错误"
3、编写代码的思路
A. 先写的是  数据库 MySQL 
B. 再写的是  HTML页面
C. 最后的是  Java包、类、方法等	
4、工具类 BeanUtils
A、作用
	可以把一个Map集合,采用方法,封装成为 JavaBean 的对象

B、使用步骤
	a.导入jar包
	b.调用方法
		BeanUtils.populate(bean,map);  //参数1:JavaBean的对象,参数2:map集合

你可能感兴趣的:(JavaWeb第十四天,Http协议,Request,登录案例)