RequestDispatcher
是web资源包装类
<jsp:include>只能实现固定jsp文件名
他可以翻译为:RequestDispatcher(filename).include(request,response);
这里实现的是:跳转到指定的fileName地址,包含
转发重定向区别:
requset,response信息一起过去
我们可以把它想成一个web资源的盒子,用来对web资源封装好一起处理
转发:请求不变只是请求发给服务器后,服务器将请求还了一个给浏览器,所以浏览器的url不变
重定向:发送请求给服务器,服务器response回一个新的链接给浏览器,让浏览器从新发送一个请求给服务器,这就是重定向,之前的request中的保存的东西也就不在了,我们能看到的区别就是url变了
1.为什么出现JSP
Servlet是动态开发语音,而jsp是可以html与Servlet结合的不仅能编写java代码可以布局样式,类似于.NET中的cshtml
2.Jsp的执行过程
a) 找到Tomcat的work目录存放jsp的临时文件-》翻译成java文件-》编译成class文件-》构造类对象-》调用方法
b) Jsp中html部分被编译到Servlet中server方法中,java部分被编译到jsp_server中
3.Jsp的生命周期
a) Servlet生命周期
构造方法-》init方法-》service方法-》destroy方法
b) Jsp的生命周期
翻译jsp->java->编译java-class->构造方法-》init方法-》service方法-》destory方法
4.Jsp语法
a) Jsp模板:html部分就是jsp模板
b) Jsp表达式:<%=变量或表达式 %>想浏览器输出变量或表达式结果,out.writer();
c) Jsp脚本:<% java脚本 %> jsp编译器直接将这部分代码复制到jsp_service()方法
d) jsp声明:<%!变量或方法%>声明jsp的成员变量和成员方法
e) Jsp注释:<%!--jsp注释-->
5.Jsp的三大指令
a) Include指令
- 静态引入其他页面,将两个jsp文件翻译为一个java文件,所以不能出现重复的模板html部分代码
- 语法:<%include file=”path路径”%>
b) Page指令
- 告诉tomcat怎么将jsp文件翻译为java文件
- 例子:
<% page import=”java.lang.util.*”
Language=”java”
pageEncoding=”utf-8”
contentType=”text/html; charset=utf-8”
errorPage=”” //指定当前错误页面的处理页面
isPageError=false;指定当前页面是否是错误处理页面,是的话可以用jsp内置错误对象exception,反之不可
%>
配置全局的错误处理页面方式
在web.xml中设置:不同的错误代码调到不同的错误页面全局配置
<!-- 全局错误处理页面配置 -->
<error-page> <error-code>500</error-code> <location>/common/500.jsp</location> </error-page> <error-page> <error-code>404</error-code> <location>/common/404.html</location> </error-page>
Session=true;
Buffer=8kb; jsp页面的缓存器大小
isELIngore=false 是否忽略EL
例子:语法例子
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="java.util.*"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>jsp语法</title> </head> <body> <!-- jsp表达式 --> <% //变量 String name="xiaoping"; int a=10; int b=20; %> <%=name %> <%=(a-b) %> <!-- jsp脚本 --> <% //生成随机数 Random d=new Random(); float num=d.nextFloat(); %> <% for(int i=1;i<6;i++){ %> <!-- 穿插html 代码 --> <h<%=i %>>标题<%=i %></h<%=i %>> <% } %> <!-- 练习:使用html代码显示99乘法表 --> <% for(int i=1;i<9;i++){ for(int j=1;j<9;j++){ %> <%=i %> x <%=j %>=<%=(i*j) %> <% } %> <br/> <% } %> <% String age="20"; %> <!-- jsp声明 --> <%! String name="xiaoping"; public String getName(){ return name; } %> <!-- html注释 --> <%-- <jsp:forward page="/jsp1/index/jsp">内置标签</jsp:forward> --%> <%-- jsp注释--%> </body> </html>