JSP
一:jsp
1.什么是jsp?
sun公司制订的一种服务器端动态页面技术规范。
注:
a.因为虽然可以使用servlet生成动态页面,但是过于
繁琐(需要使用out.println输出),并且不利于页面的维护
(修改页面,就需要修改java代码),所以,sun才推出了jsp
规范。
b.jsp是一个以".jsp"为后缀的文件(主要内容是html和少
量的java代码),容器会将jsp转换成一个对应的Servlet然后执行。
也就是说,jsp本质就是一个Servlet!
2.如何写一个jsp文件?
(1)html(css,javascript)
直接写即可。
(2)java代码
方式一: java代码片断
<% java代码 %>
方式二: jsp表达式
<%= java表达式 %>
(3)隐含对象
a.什么是隐含对象?
在jsp里面,直接可以使用的对象。比如out、request、response。
b.为什么可以直接使用这些隐含对象?
容器会添加获得这些对象的代码。
(4)指令
a.什么是指令?
通过指令,告诉容器,在将jsp转换成Servlet时,做一些额外的
处理,比如导包。
b.语法
<%@ 指令名 属性=值 %>
注:
如果有多个属性,使用空格隔开。
c.page指令
import属性:用来指定要导入的包名。
比如 <%@ page import="java.util.*,java.text.*"%>
注:
导多个包,要使用","隔开。
contentType属性:设置response.setContentType方法的参数值。
pageEncoding属性:告诉容器,在读取jsp文件的内容时,使用指
定的字符集来解码。
3.jsp是如何执行的?
阶段一: 容器要将jsp转换成一个对应的Servlet。
html(css,js) -----> 在service方法里面,使用out.write输出。
<% %> -----> 照搬到service方法里面。
<%= %> -----> 在service方法里,使用out.print输出。
阶段二:容器调用该Servlet。
容器会编译、然后实例化、初始化、调用service方法。
二:转发
1.什么是转发?
一个web组件将未完成的处理交给另外一个web组件继续做。
注:
web组件:servlet或者jsp。
常见的场景:一个Servlet获得数据之后,将数据转交给
一个jsp来呈现。
2.如何转发?
step1.将数据绑订到request对象上。
request.setAttribute(String name,Object obj);
注(了解):
map.put(name,obj)
step2.获得转发器。
RequestDispatcher rd =
request.getRequestDispatcher(String uri);
注:
uri是转发的目的地,通常是一个jsp的地址。
RequestDispatcher是一个web组件通知容器去调用另外一个
web组件的媒介。
step3.转发。
rd.forward(request,response);
注:
jsp可以利用 Object request.getAttribute(String name);
拿到之前绑订的数据。
3.特点
a.转发之后,浏览器地址栏的地址不变。
b.转发的目的地有限制,要求属于同一个web应用。
三:比较转发和重定向
a. 转发之后,浏览器地址栏的地址不变,重定向会变。
b. 转发的目的地有限制(要求属于同一个web应用),重定向无限制。
c. 转发所涉及的各个web组件可以共享同一个request对象,而重定向
不可以。
注:
容器收到请求之后,会立即创建request和response;
当容器发送完响应之后,会立即销毁这两个对象。也就说,
request和response的生存时间是一次请求与响应期间存在。
重定向是两次请求。