jsp是将java的实现逻辑和HTML 结合到了一起.
jsp的原理就是 jsp代码在第一执行的时候会生成一个Java文件,
然后编译成class文件,里面就相当于之前写的servlet文件.
jsp中的page指令用来指导页面中的某些特性
有多个属性.‘
language="java"
pageEncoding="UTF-8"
contentType="text/html;charset=UTF-8" 指定响应头的信息
import="" 需要导入的java包
session="boolean" //是否创建session
errorPage="url" //指定此jsp错误跳转的页面
isErrorPage="boolean " //是否指定此jsp是错误处理页面 可以拿到exception的信息
page里面设置errorPage="url" 指定错误页面
1.防止系统内部的错误信息通过报错泄露给访问者
2.展示友好的可视化的报错页面,避免用户的恐慌
3.有机会把程序没有处理的异常记录下来,方便程序员来发现错误
在xml中配置统一配置错误页面
<error-page><error-type></error-type><loaction></location></error-page>
<error-page><error-code></error-code><loaction></location></error-page>
location以"/"开头
jsp的对象,
都可以用setAttrbute()键值对的方式来设置属性,
然后getAttrbute来获取属性
pageContext对象有一个findAttrbute()方法
依次从pageContext/request/session/application里面
去寻找name=value的键值对然后把值返回;
只要找到就返回,不会再继续往后去寻找覆盖.
统一配置错误页面
<error-page>
<exception-type>java.lang.Throwabke</exception-type>
<location>/Error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error/404.jsp</location>
</error-page>
1.浏览器不直接访问jsp文件,而是直接去找servlet文件
2.servlet把数据准备好,然后 forward给给JSP去显示
3.servlet和JSP直接传递数据,不要传递ResuleSet,
而是传递普通的对象或者对象集合.
forward 和sendRedirect的区别
1.如果逻辑是服务器处理的,"/"就可以表示项目的跟目录
如果逻辑是浏览器处理的,就不能加"/".
2.sendRedirect发次两次请求,两次请求的数据不共享;
第一次请求浏览器的请求,第二次请求重定向之后的请求.
而req.set是把属性存在了第一个域名的网站上。
req.get就无法再第二个域名吧属性取出来.