day14

HTTP(day14-1里)

*概念:超文本传输协议
     *传输协议:定义了,客户端和服务器端通信时,发送数据的格式
     *特点:
          1.基于TCP/IP的高级协议
          2.默认端口号是80
          3.基于请求/响应模型的 一次请求对应一次响应
          4.无状态的:每次请求之间相互独立,不能去交互数据
     *历史版本:
          1.0:每一次请求响应都会建立新的连接
          1.1:复用连接
*请求消息数据格式
     1.请求行
          请求方式 请求url 请求协议/版本
          GET/login.html  HTPP/1.1

		  *请求方式:常见2种
		          (最重要是第一点区别!!!!!)
		          *GET:
		          1.请求参数在请求行种,在url后
		          2.请求的url长度有限
		          *POST:
		          1.请求参数在请求体种
		          2.请求的url长度没有限制
     2.请求头:客户端浏览器告诉服务器的一些信息
          请求头名称:请求头值
          *常见请求头:!!!!!
                  1.User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息
                  2.Referer:
                    *告诉服务器,当前请求从哪里来?
                         *作用:
                            1.防盗链
                            2.统计工作
     3.请求空行
      	  就是一个空行,做分割post请求头和请求体的
     4.请求体(正文)

*响应消息数据格式

Request

下面图片为1原理的内容

1.request对象和response对象的原理
      1.这两个对象是由服务器创建的。我们来使用它们
      2.request对象是来获取请求消息,response是来设置响应消息的

2.request对象继承体系结构:
    ServletRequest  -----接口
         |(继承)
    HttpServletRequest   ------接口
         |
    org.apache.catalina.connector.RequestFacade 类(tomcat)
    
3.request功能:!!!!!!
    1.获取请求消息数据
            1.获取请求行数据
                *GET/day14/demo1?name=zhangsan  HTPP/1.1
                *方法:(重点掌握2和5)!!!!
                     1.获取请求方式:GET
                     2.获取虚拟目录:/day14
                       *String getContextPath()
                     3.获取Servlet路径:/demo1
                     4.获取get方式的请求方式:name=zhangsan
                     5.获取请求的URI:/day14/demo1
                       *String getRequestURI()  : /day14/demo1
                       *StringBuffer getRequestURL() : http://localhost//day14/demo1

                       *URL:统一资源定位符 http://localhost//day14/demo1
                            //相当于中华人民共和国
                       *URI:统一资源标识符 /day14/demo1
                            //相当于共和国
                       --->URI范围更大
                       
                     6.获取协议及版本:HTPP/1.1
                     7.获取客户机的IP地址:
                       *String getRemoteAddr()
            2.获取请求头数据
                  *方法:
                      *(这个重点掌握!)String getHeader(String name) :
                        //通过请求头的名称获取请求头的值!!!
                      *getHeaderNames():
                        //获取所有请求头名称
            3.获取请求体数据
            	  *请求体只有POST请求方式才有,在请求体中封装了POST请求的请求参数
            	  *步骤:
            	  	1.获取流对象
            	  	2.再从流对象中拿数据          
    2.其他功能!!(都非常重要呢,尤其1,4)
    	1.获取请求参数通用方式(通用!!!):不论get还是post都可以使用
    		1.String getParameter(String name): 根据参数名称获取来获取参数值
    		2.String[] getParameterValues(String name):
    			根据参数名称获取来获取参数值 eg: hobby=xx&hobby=game
    			一个键两个值
    		3.getParameterNames():获取所有请求的参数名称
    		4.Map<String,String[]> getParameterMap():
    			获取所有参数的map集合
    		
    		*中文乱码问题!!!
    			*get方式不会乱码,tomcat解决了
    			*post方式会乱码
    				*解决:在获取参数前,设置request的编码
    					request.setCharacterEncoding("utf-8");
    	2.请求转发:一种在服务器内部的资源跳转方式
    		1.步骤:
    			1.通过request对象获取请求转发器对象:
    				//RequestDispatcher request.getRequestDispatcher(String path)
    			2.使用RequestDispatcher()对象进行转发
    				//forward方法
    		2.特点(要记住,经常有面试题来问你):!!!
    			1.浏览器地址栏路径没有发生变化
  				2.只能转发到当前的服务器内部中
  				3.转发是一次请求
  				  		
    	3.共享数据
    		*域对象:一个有作用范围的对象,可以在范围内共享数据
    		*request域:代表一次请求的范围,一把用于请求转发的多个资源中共享数据
    		*方法:
    			1.void setAttribute(String name,Object o):存储数据
    			2.Object getAttitude(String name):通过键来获取值
    			3.void removeAttribute(String name):通过建来移除键值对
    			
    	4.获取ServletContext
    		*getServletContext()

案例:用户登录

*用户登录案例需求
	1.编写login.html登陆页面
		username & password,两个输入框
	2.使用Druid数据库连接池技术,操作mysql,day14数据库中的user表
	3.使用JdbcTemplate技术封装JDBC
	4.登陆成功跳转到SuccessServlet展示:登陆成功!用户名,欢迎您
	5.登陆失败跳转到FailServlet展示:登陆失败,用户名或密码错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值