javaee http

喉咙、肩膀要放松。

http协议。(浏览器和web服务器的交互)

tcp/ip协议栈不需要我们关注,操作系统实现了。调用os的协议栈 来进行交互。

tcp\ip只负责传输数据。(010101串),数据代表什么意思,需要另外协议的支撑。http(只关心格式,不关心传输)

socket就是调用os的协议栈。

 

cookie在哪儿?头?请求体里面,发送请求的时候将cookie发过去。

http请求:第一部分,请求行,说明请求类型(请求方式),要访问的资源以及所使用的http版本。

post + 空格+ +空格+协议版本号 回车换行

第二部分:请求头,附带一些客户端的信息,请求主机的路径(ip+端口),浏览器的语言(中英文)浏览器类型等

这一部分有多行   接下来 再空一行,代表结束(什么都没有)

第三部分:请求数据(请求体),(get请求这部分没有(所以只能写到第一部分后边),而第一部分是有大小限制的),post写在post主题里。

默认转成utf8.(请求行里面的编码,在。xml里面去配置)

setcharacter这个设置的是请求体的编码格式。

 

http响应:

第一部分:状态行:告诉浏览器,http协议版本号,状态码(你的消息是什么情况,200 没问题 还有描述 ok) + 空格

第二部分:响应时间点,服务器端,内容长度,内容类型,内容编码  空行。

第四部分:相应的内容主体

 

tomcat一般只是应用程序服务器(调一段代码),如果静态页面少,才使用,它集成有这个功能。

而静态多,则使用专门的web服务器。

 

http只能被动的取数据,不能主动发送数据

使用ajax每隔几秒去一次。

 

 

java1.4之前是java2e,之后编程javaEE。他是一套技术。如javase(集合,包装类,jdbc 这些是se的技术)。

javaee 20多个技术集合,javaEE-web有servlet、jsp、el、jstl(嵌入java代码,以前格式兼容不好) 、websocket(浏览器和服务器建立长连接,服务器可以实时传数据给客户端,不必等客户端来取)、json-p  -b(出现比较晚,然后处理json不使用它) 、jsf

如果用se的话,应用服务器(jsp、servlet容器)都得自己写,写web的时候。

servlet技术,拥有相关api,规范(让其他应用厂家去写应用服务器,怎样去调用代码片段)。 然后我们只要写servlet中调用的代码就行了。 

tomcat本身包含http服务器(就是老师说的web服务器),有apache基金会下的jakarta项目开发的jsp、servlet容器,暗号javaee规范,支持servlet、jsp(包括jstl、el),可以将其视为扩展的web应用服务器。因为包含web服务器。

java_home配置完,安装tomcat,因为他要找jdk。

 

/conf下存放tomcat服务器的各种配置文件

webapps 存放我们的应用

/work jsp转成的servlet在此目录下。(出现问题,改了jsp还是不对,有可能这)

server.xml 里面配置tomcat的端口

already 是端口被占。

 

如果是动态页面,就必须有web-info,静态的随便的目录名字都可以。

web-info/web.xml  应用配置

/classess 放的编译后的字节码文件,servlet编译后的.class文件

/ lib       存放jar包等。依赖包,web使用jar包文件。

 

获取提交的数据,然后给响应。

直接敲地址发送的请求是get的。form、超链接默认都是get。

 

先调用os的tcp、ip协议栈(java是socket)链接到服务器。

调用servlet的时候,以前在xml文件里面进行配置。根据请求行第一个单词,来确定调用doget、dopost方法。

 

request

 

注解会将放到一个容器里面 servlet就可以,不需要再加一个web.xml

 

 

那个框架 就是 4.20之前  0428 request对象
重定向 sendredirect 两次请求,0444,两个request对象。第二次请求是浏览器自动发出。

forward是这个servlet调用另一个servlet,

forward是只能到当前应用的页面。

提交完请求之后,使用redirect, 如a.servlet->a.jsp  他就不会进行重复提交了。如果forward他还是到a.servlet可能会进行重复提交。

request有几个?cookie和attribute

redirect可以重定向到外部资源,

一次请求是一个request对象,使用同一个Attribute。

 

第二次请求和那个请求关联

cookie里面放一个sessionid,随机成成的序列号。。 session对象,放在服务器hashmap里面,key是sessionid。

 

jsessionid 存放在cookie里面,默认是关闭浏览器就会清除。

两种方法销毁session。自己定义web.xml定义session超时时间。下一次gc就会清除掉。 或者我们主动调用 invalidate方法强制性注销掉session。

http无状态,为了维持状态,只能使用session来进行状态的维持。如张三和李四。登录之后得看是谁下的订单。

注销,会把session对象销毁。

 

servletcontext(就是jsp里面的application)和tomcat进行交互的(和tomcat一一对应)。servlet生存的环境。只要tomcat没有停掉,这里面的数据就一直有效。

当前请求范围内,所经过的servlet对象都可以通用。

servlet的生命周期由tomcat来整的。 加载.class文件new对象

servlet是单例。所以不能使用成员变量,局部变量。

当前请求,就放request,单个用户session,多个用户都要用就使用servletcontext。

加载实例化,

(session,servletcontext,request)监听器可以在生命周期开始做一些初始话的工作,把一些公共的东西放到servletcontext里面去。

request也可以注册监听器,他也有生命周期。servlet有生命周期。

过滤器,判断进行登录认证,或者多个servlet设置字符编码,让他们都通过这个过滤器,减少代码的书写量。

过滤器不会自动调用servlet,

 

getpost区别:

浏览器的POST请求都来自表单提交。每次提交,表单的数据被浏览器用编码到HTTP请求的body里。浏览器发出的POST请求的body主要有有两种格式,一种是application/x-www-form-urlencoded用来传输简单的数据,大概就是"key1=value1&key2=value2"这样的格式。另外一种是传文件,会采用multipart/form-data格式。采用后者是因为application/x-www-form-urlencoded的编码方式对于文件这种二进制的数据非常低效。

浏览器在POST一个表单时,url上也可以带参数,只要<form action="url" >里的url带querystring就行。只不过表单里面的那些用<input> 等标签经过用户操作产生的数据都在会在body里。

 

请求转发和请求重定向:

请求转发,在doget里面调用就调用下一个的doget。使用请求转发,当前的请求对象被转发到下一个资源。

 

,,常用api,request,response,session及原理。

请求体应该在cookie

servlet有那些常用类

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值