我今天学习了Servlet之间的通信jsp的基础知识;我做了简单的笔记:
一、Servlet通信:
a) (不用超级链接)从一个Servlet转到另一个Servlet:
i. 方法一:重定向,不能传递请求的数据
1. resonpse.seneRedirect(“../come/welconeServler”);
ii. 方法二:转发 能传递请求的数据
1. requestDispatcher的作用时封装Servlet的上下文资源
2.
3. 转发封装的对象:
4. rd.forword(request, response);
iii. ./的用法
1. ./表示当前路径
2. 不加./也表示当前路径
iv. ../的用法
1. 表示当前路径的上一级路径
b) 转发和从定向的区别:
i. 地址栏路径的变化:
1. 转发:地址栏看不到变化
2. 重定向:地址栏路径发生变化,
ii. 数据的变化:
1. 重定向:request对象的内容丢失;因为是两次请求;是客户端转发
2. 转发:request内容不丢失; 是服务器端转发
iii. 请求的次数:
1. 转发:一次请求
2. 重定向:两次请求
iv. / 的区别:
1. 转发:/ 表示从当前web应用的根路径查找
2. 重定向:/ 表示web站点的根路径去查找
v. 请求的资源:
1. 转发:请求的资源是当前的web应用
2. 重定向:请求的可以是当前的web应用,也可以是外部资源
vi. 是否可以访问WEB-INF下的文件:
1. 重定向:访问不到WEB-INF文件
2. 转发:可以访问WEB-INF里面的文件
3.
4.
注释:
1. jsp引擎:
a) 将jsp文件转化和编译成Serlet,然后由Servlet引擎处理交给客户端
b) 若重新请求时。如果jsp文件没有变化,则不需jsp编译,而直接交给Servlet引擎,速度有提高;
2. jsp语法:
a) jsp标准指令:<%@ %>
i. page标准指令;
1. <%@ page language=”java” pageEncoder=”utf-8” import =”java.util.Date,java.util.ArrayList”%>;
2. session=true | false 设置是否允许使用session对像;
3. pageEncoder当前页面得编码
ii. include标准指令:<%@ include file="relativeURL"%>
1. include指令用于通知JSP引擎在翻译当前JSP页面时将其他文件中的内容合并进当前JSP页面转换成的Servlet源文件中,这种在源文件级别进行引入的方式称之为静态引入,当前JSP页面与静态引入的页面紧密结合为一个Servlet。
2. 引入文件与被引入文件是在被JSP引擎翻译成Servlet的过程中进行合并,而不是先合并源文件后再对合并的结果进行翻译
3. 引入的文件建议使用jspf文件
4. 引入的文件的除了pageEncoding属性可以不同,其他属性必须相同
5. file必须使用相对路径;
iii. jsp声明标签;<%!变量或方法声明%>,用于声明JSP内所使用的变量或方法,变量和方法是全局的;变量不需要初始化
iv. 程序代码标签 <% 程序代码%> 变量和方法是局部的;编译后在service方法里面;
v. 表达式标签:<%=表达式%> 编写任何Java表达式
vi. 注解标签:<%--注解内容--%>
b) Out是jsp里面的内置对象,request也是内置对象
c) 注释:
i. Jsp注释在编译后的Servlet文件里面看不见,在生成的静态页面里面也看不见
ii. Java注释,在编译的Servlet文件里面可以看见,在静态页面里面看不见
iii. Html注释,在编译后的Servlet文件里看得见,在静态页面页看的见
d) Jsp的标准动作标签:
i. <jsp:include>标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。编译后生成两个Servlet文件,为静态引入只生成一个Servlet文件。
3. include(静态引入)和jsp:include(动态引入)
a) include 在生成Servlet源文件的过程中引入另一个文件,最终生成的是一个Servlet源文件(一个class文件)
b) jsp:include 生成两个Servlet源文件(两个class文件),在客户端运行过程中引入(显示信息时引入)。被引入的文件中不要在包含<html><body>标签
i. jsp:include标签对jsp引擎翻译不起作用,在执行Servlet是起作用