jsp02 请求与内置对象

发起请求的方式

  • 表单
  • a链接
  • url

tomcat处理请求的方式

Tomcat最本质就是个能运行JSP/Servlet的Web服务器 , 因此最典型的应用就是用户通过浏览器访问服务器,Tomcat接收到请求后转发给Servlet,由Servlet处理完后,把结果返回给客户端。

假设来自客户的请求为:http://localhost:8080/test/index.jsp

请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得

Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应

Engine获得请求localhost:8080/test/index.jsp,匹配它所有虚拟主机Host

Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
localhost Host获得请求/test/index.jsp,匹配它所拥有的所有Context

Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)

path="/test"的Context获得请求/index.jsp,在它的mapping table中寻找对应的servlet

Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类

构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法

Context把执行完了之后的HttpServletResponse对象返回给Host
Host把HttpServletResponse对象返回给Engine

Engine把HttpServletResponse对象返回给Connector

Connector把HttpServletResponse对象返回给客户browser

概括而言就是:

  1. Tomcat 创建内置对象request接受用户请求及其参数
  2. jsp从内置对象request中提取用户数据
  3. 对象request的数据以键和值得方式存在

idea中jsp产生的class文件位置

如果未进行修改默认路径,可以到以下路径寻找

C:\Users\<机器用户名>\.IntelliJIdea2018.1\system\tomcat\项目名\work\Catalina\localhost\项目名\org\apache\jsp\

eclipse中则为

1、tomcat获得JSP文件后,先将JSP转成servlet,变成xxx.java(servlet源码),也因而jsp~servlet

D:\java\tomcat7.0\apache-tomcat-7.0.53\apache-tomcat-7.0.53\work\Catalina\localhost\test01\org\apache\jsp

|------------------------------------------------------------------------|   |---------|----------|-------|-----------------|

tomcat安装目录                        引擎   主机  项目   固定包名  这个之下就是存放着jsp变成的servlet文件.java和编译文件.class

为何说jsp就是servlet

  1. jsp生成的.java文件继承继承自HttpJspBase
  2. 又有abstract class HttpJspBase extends HttpServlet implements HttpJspPage,编写Servlet时就是继承自该类,这里也是继承HttpServlet
  3. 并且HttpJspBase的源码会发现,生命周期也是有init()方法,service()方法,destory()方法,相当于_jspService()方法就是servletservice()方法的执行
  4. 所以说JSP也是一个servlet。

内置对象的区别

Application

  1. Appliction内置对象的创建时机:服务器一启动就创建唯一一个实现ServletContext 接口类MyClass 的对象application 内置对象;
  1. Appliction内置对象的生命周期:和服务器生命周期一致 n个浏览器访问依旧不变
  1. Appliction内置对象的作用:存放公共信息

Session

生存期为一个对话期间 同一浏览器访问不变 不同浏览器则不同

jsp的四大作用域

  1. page作用域:代表变量只能在当前页面上生效

  2. request:代表变量能在一次请求中生效,一次请求可能包含一个页面,也可能包含多个页面,比如页面A请求转发到页面B

  3. session:代表变量能在一次会话中生效,基本上就是能在web项目下都有效,session的使用也跟cookie有很大的关系。一般来说,只要浏览器不关闭,cookie就会一直生效,cookie生效,session的使用就不会受到影响。

  4. application:代表变量能一个应用下(多个会话),在服务器下的多个项目之间都能够使用。比如baidu、wenku等共享帐号。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值