- jsp:java server pages:java语言的特有的
- 生命周期:
- 先转译后编译:index.jsp,转移后,index_jsp.java,编译后index_jsp.class(在tomcat的缓存里面)
- 就是servlet的生命周期 初始化、处理请求、销毁
- Index.jsp经过转译后的文件
- 名字:index_jsp.java
- 位置:Web服务器的缓存里面(MyEclipse和idea不一样)
- 初始化:
- Jsp的369
- 3个指令:tablib page include
- 6个动态:include、forward、usebean setProperty getProperty param
- 9个内置对应(每个都是干什么的):out、request、response、application、config、exception、page、pageContext、session
- 为什么叫内置对象?因为jsp页面创建的时候,就自动给用户初始化了,用户(不用声明也不用初始化)直接使用,但是有一个特列,exception这个内置对象只有在错误页面,才初始化,别的页面初始化,不能使用
- 错误页面的声明和使用:
- isErrorpage(true和false)声明错误页面的,默认false,会初始化exception这个内置对象
- errorPage(错误页面位置),当前页面出现错误后要去的页面(相当于java中的自定义异常)
- 四大作用域 uname 不指定,默认从小到大获取,可以指定作用域
- Page —— this 当前页面
- Request ${requestScope.uname} 当前请求
- Seesion ${sessionScope.uname} 当前用户
- Application 当前程序
- Include指令和动作的区别(动态包含和静态包含的区别)(自己整理)
- Jsp页面的脚本 <%脚本%>
- Jsp页面的表达式 <%=表达式 %>
- Jsp页面的声明 <%! 声明%> 声明变量或者对象或者方法
- Serlvet
- 生命周期
- 实例化(有的教材说的四步,就是创建)
- 初始化:默认是第一次被方法的时候初始化,配置一个属性,就可以让servlet在项目启动的时候初始化。Load-on-startup(注解loadOnStartup = 1) 项目启动的时候初始化,不配置和配置小于0的数值,就是第一次被访问初始化,要是配置大于等于0,就是项目启动初始化,数值是项目启动的优先级(有多个servlet的时候,优先级越大,只是优先执行,并不一定是先执行)
- 处理请求
- 销毁
- 创建方法
- 实现servlet接口:功能受限,不全,不能对参数初始化和获取servlet和项目名称
- 继承httpservlet类:这个类不止实现了servlet接口,还有别的接口,参数初始化等
- 转发和重定向的区别(自己总结7-8条)
- 转发是服务器端跳转,重定向是客户端跳转
- 转发url不变,重定向url发生变化
- 转发是一次请求,重定向是多次请求
- 转发可以携带参数,重定向一般不携带参数
- 转发只能在本项目里面转发,重定向可以跨域(可以定向到别的项目)
- 转发的时候,路径前面加/,表示从项目的根路径下面去寻找,而重定向前面要是加/,就是从服务器的跟路径下面去寻找了,就会丢失项目名称
- 。。。。自己补充
- Get和post区别(自己整理)
- 为什么在doget里面调用一下dopost或者在dopost中调用一下doget,要是不写出什么问题,405
- 过滤器
- 创建:实现一个javax下面的一个filter接口
- 作用:过来字符集,过滤ip,过滤非法内容,权限可以使用他(拦截)
- 生命周期:项目启动初始化
- 他和servlet一样,都需要在web.xml中进行配置,当前web2.5以后,可以使用注解了,就不用在web.xml中配置了。
- 监听器
- 程序的入口,session的监听器:监听在线人数
- JSTL标签和EL表达式(联合使用)
- Jstl标签又叫C标签:foreach if out
- EL表达式:${作用域.属性名},作用域可以省略,默认从小到大 支持三元表达式、 支持eq等判断,支持一般常见的各种判断。
- 会话
- Session:当前会话,服务器端的会话,一般存储在服务器,一个用户登录一次一个会话
- Cookie:客户端会话技术,存在客户端,也就是浏览器缓存中,不安全
- Cookie和session的关系以及区别
- Sessionid默认是存在cookie里面的(要是客户把cookie禁用了,要进行url重写)
- Session默认过期时间是30分钟,因为我们使用的是tomcat服务器,tomcat的默认过期时间是30分钟,设置session过期时间的时候的单位是秒
- Cookie默认是浏览器关闭,cookie失效,可以自行设置
- Cookie默认不能存储中文(底层是get原理),要存储中文需要url编码,使用的时候,需要url解码。
- Cookie的操作
- 存值
- 取值
- 过期时间(生命周期)
- 中文
- 路径(在那个路径下有效)
- Cookie的代码
HttpSession session = req.getSession();
session.setMaxInactiveInterval(30);
String uname = "张三";
uname = URLEncoder.encode(uname, "UTF-8");
Cookie cn = new Cookie("uname", uname);
resp.addCookie(cn);
Cookie[] cookies = req.getCookies();
if(cookies!=null){
for (Cookie c:cookies){
if("uname".equals(c.getName())){
String value = c.getValue();
value = URLDecoder.decode(value, "UTF-8");
System.out.println("uname===="+value);
}
}
}