jsp技术
jsp脚本:
1) ----- 内部的java代码翻译到service方法的内部
2) ----- 会被翻译成service方法内部out.print()
3) ---- 会被翻译成servlet的成员的内容
jsp注释: 不同的注释可见范围是不同
1)Html注释: ---可见范围 jsp源码、翻译后的servlet、页面 显示html源码
2)java注释://单行注释 /*多行注释*/ --可见范围 jsp源码 翻译后的servlet
3)jsp注释: ----- 可见范围 jsp源码可见(安全性会高一些)
jsp运行原理
jsp第一次被访问是会被web容器翻译成servlet:
第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行
PS:被翻译后的servlet在Tomcat的work目录中可以找到
jsp指令:
page指令:属性最多的指令,根据不同的属性,知道整个页面特性
格式:
include指令:可以把一个jsp文件放到另一个jsp页面里面
taglib指令:在jsp页面中引入标签库(jstl标签库、struts2标签库)
jsp的9个内置对象:out, request, response, config, session, application, page, pageContext, exception
out对象:向客户端输出内容 out.write()
out缓冲区默认8kb 可以设置成0 代表关闭out缓冲区 内容直接写到respons缓冲 器
pageContext对象:jsp页面的上下文对象
page对象与pageContext对象不是一回事
1)pageContext是一个域对象
setAttribute(String name,Object obj)
getAttribute(String name)
removeAttrbute(String name)
============
pageContext可以向指定的其他域中存取数据
setAttribute(String name,Object obj,int scope)
getAttribute(String name,int scope)
removeAttrbute(String name,int scope)
findAttribute(String name)
---依次从pageContext域,request域,session域,application域中获取属性,在某个域中获取后将不在向后寻找
四大作用域总结:
pageContext域:当前jsp页面范围
request域:一次请求
session域:一次会话
application域:整个web应用
jsp标签(动作)
1)页面包含(动态包含):
2)请求转发:
=============================================================
EL技术:EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中脚本的编写
EL最重要的作用:从域中取出数据
jsp脚本:
EL表达式替代上面的脚本:${requestScope.name}
${requestScope.username}
${sessionScope.username}
${applicationScope.username}
${username }
EL从四个域中获得某个值${key};
---同样是依次从pageContext域,request域,session域,application域中 获取属性,在某个域中获取后将不在向后寻找
1)获得普通字符串2)获得User对象的值3)获得List的值
request.setAttribute("name", "request");//存储一个对象
Users user=newUsers();
user.setId(1);
user.setUsername("lisi");
user.setPwd("123");
session.setAttribute("user", user);//存储一个集合
List list=new ArrayList();
Users user1=newUsers();
user1.setId(1);
user1.setUsername("wangwu");
user1.setPwd("123");
list.add(user1);
Users user2=newUsers();
user2.setId(1);
user2.setUsername("zhaoliu");
user2.setPwd("123");
list.add(user2);
application.setAttribute("List", list);%>
out.write(u.getUsername());%>
${requestScope.name}
${sessionScope.user.username}
${applicationScope.List[0].pwd}
${name }
${user.username}
${List[0].pwd}
EL执行表达式:${1+1},,${user==null?true:false}等等