1.JSP是由什么组成的?
html+JAVA脚本+JSP标签
2.Cookie和Session、Application的区别
从存储位置,数据大小,数据类型,过期时间,安全性五方面比较
A (放全局共享变量) 服务器 没有限制 Object(任意都行) 服务器关闭
3.记住用户名:
Cookie
自动登录:
Cookie—name+pwd
访问网站(name+pwd)----->调用登陆 验证方法—》成功,记录session(Filter)
设计自动登录:
第一次登陆后 若要保存自动登录 则存一个uuid 在cookie里,下次再进行登陆页面的时候判断下uuid 符合条件即可自动登录。(不必再验证账号密码了)
JSP指令
page指令:常用指令
page指令
page指令是最为常用的指定,也是属性最多的属性!
page指令没有必须属性,都是可选属性。例如<%@page %>,没有给出任何属性也是可以的!
在JSP页面中,任何指令都可以重复出现!
<%@ page language=”java”%>
<%@ page import=”java.util.*”%>
<%@ page pageEncoding=”utf-8”%>
这也是可以的!
page指令的pageEncoding
pageEncoding指定当前JSP页面的编码!这个编码是给服务器看的,服务器需要知道当前JSP使用的编码,不然服务器无法正确把JSP编译成java文件。所以这个编码只需要与真实的页面编码一致即可!
page指令的import属性
import是page指令中一个很特别的属性!
import属性值对应import语句。
import属性值可以使逗号:<%@page import=”java.net.,java.util.,java.sql.*”%>
import属性是唯一可以重复出现的属性:
<%@page import=”java.util.” import=”java.net.” import=”java.sql.*”%>
但是,我们一般会使用多个page指令来导入多个包:
<%@ page import=”java.util.”%>
<%@ page import=”java.net.”%>
<%@ page import=”java.text.*”%>
可以根据需要 添加多条page指令。
errorPage配置错误页
正常的页面报错:
可以通过 page指令 添加一个 页面报错自动跳转的错误页 的功能。
指定当前页面出错以后 转发到一个目标页面。
iserrorPage
在错误页面设置,设置当前页面为错误页,isErrorPage设置为true
如果目标页面默认值为false 出错以后跳转到目标页面,状态码还是200.
如果目标页面默认值为true,出错以后跳转到目标页面,状态码还是500.
JSP中的exception内置对象才能使用。
这句话用于报出 出错的页面。
以上的配置是针对页面的。
web.xml中配置错误页面,适用于整个系统,我们一般是在配置文件中使用配置错误页面
先设置几个错误页面,供跳转使用。
然后在xml里面写好路径
现在再出现500、404的时候就会跳到这些页面了。
也可以配的更细一些:指定错误的类型。
现在在页面尝试抛出这个异常
成功了。不过这样配没有什么意义,太详细了用户也看不懂。
页面复用:include指令
这时候就已经在加载d的时候吧e的内容加载出来了。
taglib指令
JSP九大内置对象
在JSP中无需创建就可以使用的9个对象,它们是:
out(JspWriter):等同与response.getWriter(),用来向客户端发送文本数据;
config(ServletConfig): ServletConfig;
page(当前JSP的类型):当前JSP页面的“this”,即当前对象;
pageContext(PageContext):页面上下文对象,它是最后一个没讲的域对象;
exception(Throwable):只有在错误页面中可以使用这个对象;isErroPage=”true”
request(HttpServletRequest):即HttpServletRequest类的对象;
response(HttpServletResponse):即HttpServletResponse类的对象;
application(ServletContext):即ServletContext类的对象;
session(HttpSession):即HttpSession类的对象,不是每个JSP页面中都可以使用,如果在某个JSP页面中设置<%@page session=”false”%>,说明这个页面不能使用session。
在这9个对象中有很多是极少会被使用的,例如:config、page、exception基本不会使用。
在这9个对象中有两个对象不是每个JSP页面都可以使用的:exception、session。
在这9个对象中有很多前面已经学过的对象:out、request、response、application、session、config。
pageContext对象
在JavaWeb中一共四个域对象,其中Servlet中可以使用的是request、session、application三个对象,而在JSP中可以使用pageContext、request、session、application四个域对象。
pageContext 对象是PageContext类型,它的主要功能有:
域对象功能;
代理其它域对象功能;
获取其他内置对象;域对象
2.1 域对象功能
pageContext也是域对象,它的范围是当前页面。它的范围也是四个域对象中最小的!
void setAttribute();
Object getAttrbiute();
void removeAttribute();
2.2代理其他域对象
虽然用的是pageContext域,但是后面这句代码表名使用的是request域来代理,取的时候要去request里面取。
上下两句话 作用是一样的
全域查找。:由小到大的找“
如果不注释,则按照 page requeset session的顺序显示。(注释了page才会显示request)
注释到这里了,若此时注释了session, 页面显示的还是session。因为session的声明周期没有结束(因为没有关浏览器)
关了浏览器,就会显示application了。
代理其他内置对象,一个顶九个
2.3 获取其他内置对象
一个pageContext对象等于所有内置对象,即1个当9个。这是因为可以使用pageContext对象获取其它8个内置对象:
JspWriter getOut():获取out内置对象;
ServletConfig getServletConfig():获取config内置对象;
Object getPage():获取page内置对象;
ServletRequest getRequest():获取request内置对象;
ServletResponse getResponse():获取response内置对象;
HttpSession getSession():获取session内置对象;
ServletContext getServletContext():获取application内置对象;
Exception getException():获取exception内置对象;
pageContext
通过pageContext的属性可以获得其他内置对象的属性 比如
out也是内置对象,但是可以通过pageContext的getout方法获得到out的内置对象属性
同样,对于session
getSession即可
对于request
getRequest即可
JSP动作标签
JSP动作标签概述
动作标签的作用是用来简化Java脚本的!
JSP动作标签是JavaWeb内置的动作标签,它们是已经定义好的动作标签,我们可以拿来直接使用。
JavaWeb一共提供了20个JSP动作标签,但有很多基本没有用,这里只介绍最常用的动作标签。
JSP动作标签的格式:<jsp:标签名 …>
jsp:include
jsp:include标签的作用是用来包含其它JSP页面的!你可能会说,前面已经学习了include指令了,它们是否相同呢?虽然它们都是用来包含其它JSP页面的,但它们的实现的级别是不同的!
include指令是在编译级别完成的包含,即把当前JSP和被包含的JSP合并成一个JSP,然后再编译成一个Servlet。
include动作标签是在运行级别完成的包含,即当前JSP和被包含的JSP都会各自生成Servlet,然后在执行当前JSP的Servlet时完成包含另一个JSP的Servlet。它与RequestDispatcher的include()方法是相同的!
jsp:forward
forward标签的作用是请求转发!forward标签的作用与RequestDispatcher#forward()方法相同。
EL表达式:仅用于输出 不能完全替代java
但是页面基本不写java 所以el也够用了。
、el表达式支持一些运算符,若把表达式放在el里面,则可以进行运算。
el表达式还可以用于 直接去req域里面找 名字为a的东西
和上面的getAttribute的用法相同。
alt+s
JavaBean 导航操作:
不能这样直接找,s1必须要存到域里面才行,在域里面找到这个s1才能直接点他的属性
操作map
在做登陆的时候 比如遇到 验证码不对 账号密码不对 等各种不对,一个个返回很发麻,可以把他们全当做key存在map里面。
initParam 全局的初始化对象。
三种方法 去域里面取值
看到这些要认识。
五种方法都可以!!但是最后两个,若找不到a 则会不显示,前面四个会显示null
无视图中红线
extends RunntimeException在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述