(四)Servlet就是这样-Jsp和Servlet名词解释

Servlet读书笔记系列文《Servlet就是这样》第四篇:Jsp和Servlet名词解释

1、tomcat目录结构

  • /bin:存放windows或Linux平台上启动和关闭Tomcat的脚本文件
  • /conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml
  • /doc:存放Tomcat文档
  • /server:包含三个子目录:classes、lib和webapps
  • /server/lib:存放Tomcat服务器所需的各种JAR文件
  • /server/webapps:存放Tomcat自带的两个WEB应用admin应用和 manager应用
  • /common/lib:存放Tomcat服务器以及所有web应用都可以访问的jar文件
  • /shared/lib:存放所有web应用都可以访问的jar文件(但是不能被Tomcat服务器访问)
  • /logs:存放Tomcat执行时的日志文件
  • /src:存放Tomcat的源代码
  • /webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录
  • /work:存放JSP编译后产生的class文件

2、WEB服务器

Web服务器负责接收客户端请求,每当接收到客户端连接请求之后,Web服务器应该使用单独的线程为客户端提供服务。

Web应用架构总是先由客户端发送请求,服务器接收到请求后送回响应的数据,所以将这种架构称做"请求/响应"架构。

Web服务器大致需要以下几个步骤:

1)       启动单独的线程;

2)       使用I/O流读取用户的请求数据;

3)       从请求数据中解析参数;

4)       处理用户请求;

5)       生成响应数据;

6)       使用I/O流向客户端发送请求数据。

上述中的,1、2和6步骤是通用的,可以由Web服务器来完成,但3、4和5步根据不同的请求,处理的方式也不一样。

3、WEB-INF目录详解

  • /helloapp:Web应用的根目录,所有的jsp文件和html文件都在此目录下
  • /helloapp/WEB_INF:存放该web应用发布时的描述文件web.xml
  • /helloapp/WEB_INF/class:存放各种class文件,Servlet文件也存放于此目录下
  • /helloapp/WEB_INF/lib:存放各钟Web应用所需要的jar文件。比如可以存放JDBC驱动程序的JAR文件

 

4、web项目虚拟路径

5、JSP页面的组成部分包括一下几个部分

静态内容:html,xml,css

指令元素:page指令 <%@page%>,include指令<%@include file=""%>,taglib 指令<%@taglibprefix="c"  uri="taglibURI" %>

脚本:<%=Java代码 %>

表达式:<%=Java表达式 %>

声明:<%!  方法或者变量%>

动作元素:<jsp:动作名><jsp:动作名>

注释:html注释<!—注释内容-->,JSP注释<%--注释内容--%>,单行注释多行注释///** */


6、JSP页面的声明周期

(1)用户发出请求,请求一个JSP页面,比如index.jsp,服务器判断是否是第一次请求。

(2)JSP引擎把该JSP页面转换成一个Servlet,生成字节码文件,并执行jspInit()

(3)访问之前生成的字节码文件

(4)解析执行,jspService()

7、JSP九大内置对象

下面是JSP的九大内置对象以及在servlet怎么获取这些对象的方法。


8、pageContext对象


9、config对象


10、out对象


11、request对象

客户端的请求被封装在request对象中,通过它才能了解客户的需求,然后做出响应。它是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。

12、response对象

response对象包含了响应客户请求的相关信息,但在JSP中很少直接使用它,它是HttpServletResponse类的实例。response对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其他页面的response对象对当前的    页面无效。

13、何为四大域

Web应用里的JSP页面、Servlet等程序都将由Web服务器来调用,JSP、Servlet之间通常不会相互调用,这就产生了一个问题:JSP、Servlet之间如何交换数据?

为了解决这个问题,几乎所有的Web服务器都会提供4个类似Map的结构,分别是application、session、request、page,并允许JSP、Servlet将数据放入这4个类似Map的结构中,并允许从这个4个Map结构中取出数据。这4个Map结构的区别是范围不同。

1)、application:对于整个Web应用有效、一旦JSP、Servlet将数据放入application中,该数据将可以被该应用下其他所有的JSP、Servlet访问。

    2)、session:仅对一次会话有效,一旦JSP、Servlet将数据放入session中,该数据将可以被本次会话的其他所有的JSP、Servlet访问。

    3)、request:仅对本次请求有效,一旦JSP、Servlet将数据放入request中,该数据可以被该次请求的其他JSP、Servlet访问。

    4)、page:仅对当前页面有效,一旦JSP、Servlet将数据放入page中,该数据只可以被当前页面的JSP脚本、声明部分访问。

就像现实中有两个人,他们需要交换金钱,却又不能直接接触,于是A将钱存入银行,B从银行中取钱。因此我们可以将application、session、request和page理解为类似银行的角色。

将数据放入application、session、request和page之后,就相当于扩大了该数据的作用范围,所以我们也认为application、session、request和page中的数据分别处于application、session、request和page范围之中。

JSP中的application、session、request和pageContext4个内置对象分别用于操作application、session、request和page范围中的数据。

application对象代表Web应用本身,因此使用application来操作Web应用相关数据。application对象通常有如下两个作用:

   1)、在整个Web应用的多个JSP、Servlet之间共享数据。

   2)、 访问Web应用的配置参数

14、application对象(context对象)

application是javax.servlet.ServletContext接口的实例,实际上表示的是整个Servlet的上下文。

application对象实现了用户间数据的共享,可存放全局变量。

application开始与服务器启动,终止于服务器的关闭。

在用户的前后连接或不同用户之间的连接中,可以对application对象的同一属性进行操作。

在任何地方对application对象属性的操作,都将影响到其他用户对此的访问。

服务器的启动和关闭决定了application对象的生命。


15、session对象

Session的生命周期:创建、活动、销毁

如果不是销毁Session的话,原有的会话还是存在的,只是这个旧的SessionId仍然存在与服务器端,只不过再也不会有客户端携带这个SessionId然后交给服务器校验了。

Session的销毁有三种方式:调用了session.invalidate()方法、超时、服务器重新启动

16、request对象

17、page对象


18、请求重定向与请求转发的区别

请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次请求对象不会保存,地址栏的URL地址会改变。

请求转发:服务器行为,request.getRequestDispatcher().forward(req,resp);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变。

举一个简单的例子

假设你要办理某个东西去某局。

重定向:你先去了A局,A局的人说“这事不归我们管,你去B局吧”,然后,你就从A局出来,自己乘车去了B局。

请求转发:你去了A局,A局的人看了后,知道这个事情不归他们管,但是他们没有把你退回去,而是让你坐一会儿,自己到后面办公室联系B局的人,让他们办好后送了过来。

19、cookie


20、cookie和session的对比


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值