⽤java设计动态页⾯_JavaEE之动态页⾯技术(JSPELJSTL)动态页⾯技术(JSP/EL/JSTL)
JSP技术
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本质就是servlet(⾯试)
jsp在第⼀次被访问时会被Web容器翻译成servlet,在执⾏
过程:
第⼀次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运⾏
PS:被翻译后的servlet在Tomcat的work⽬录中可以到
jsp指令(3个)
jsp的指令是指导jsp翻译和运⾏的命令,jsp包括三⼤指令:
1)page指令 --- 属性最多的指令(实际开发中page指令默认)
属性最多的⼀个指令,根据不同的属性,指导整个页⾯特性
格式:
常⽤属性如下:
language:jsp脚本中可以嵌⼊的语⾔种类
pageEncoding:当前jsp⽂件的本⾝编码---内部可以包含contentType
contentType:response.setContentType(text/html;charset=UTF-8)
session:是否jsp在翻译时⾃动创建session
import:导⼊java的包
errorPage:当当前页⾯出错后跳转到哪个页⾯
isErrorPage:当前页⾯是⼀个处理错误的页⾯
2)include指令
页⾯包含(静态包含)指令,可以将⼀个jsp页⾯包含到另⼀个jsp页⾯中
格式:
3)taglib指令
在jsp页⾯中引⼊标签库(jstl标签库、struts2标签库)
jstl常用标签有哪些格式:
jsp内置/隐式对象(9个)----- 笔试
jsp被翻译成servlet之后,service⽅法中有9个对象定义并初始化完毕,我们在jsp 脚本中可以直接使⽤这9个对象名称
类型
描述
out
javax.servlet.jsp.JspWriter
⽤于页⾯输出
request
javax.servlet.http.HttpServletRequest
得到⽤户请求信息,
response
javax.servlet.http.HttpServletResponse
服务器向客户端的回应信息
config
javax.servlet.ServletConfig
服务器配置,可以取得初始化参数
session
javax.servlet.http.HttpSession
⽤来保存⽤户的信息
application
javax.servlet.ServletContext
所有⽤户的共享信息
page
java.lang.Object
指当前页⾯转换后的Servlet类的实例(在普通类中的this)
pageContext
javax.servlet.jsp.PageContext
JSP的页⾯容器
exception
java.lang.Throwable
表⽰JSP页⾯所发⽣的异常,在错误页中才起作⽤
out对象
out的类型:JspWriter
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)(scope范围)
getAttribute(String name,int scope)
removeAttrbute(String name,int scope)
findAttribute(String name)
---依次从pageContext域,request域,session域,application域中获取属性,在某个域中获取后将不在向后寻
jsp四⼤作⽤域的总结:
pageContext域:当前jsp页⾯范围
request域:⼀次请求
session域:⼀次会话
application域:整个web应⽤
2)可以获得其他8⼤隐式对象
例如: Request()
jsp标签(动作)
1)页⾯包含(动态包含):
2)请求转发:
静态包含与动态包含的区别?
EL技术
EL 表达式概述
EL(Express Lanuage)表达式可以嵌⼊在jsp页⾯内部,减少jsp脚本的编写,EL 出现的⽬的是要替代jsp页⾯中脚本的编写。EL从域中取出数据(EL最重要的作⽤)
jsp脚本:
EL表达式替代上⾯的脚本:${requestScope.name}
EL最主要的作⽤是获得四⼤域中的数据,格式${EL表达式}
EL获得pageContext域中的值:${pageScope.key};
EL获得request域中的值:${requestScope.key};
EL获得session域中的值:${sessionScope.key};
EL获得application域中的值:${applicationScope.key};
EL从四个域中获得某个值${key};
---同样是依次从pageContext域,request域,session域,application域中 获取属性,在某个域中获取后将不在向后寻
1)获得普通字符串
2)获得User对象的值
3)获得List的值
pageContext.setAttribute("name", "pageContxt");
//存储字符串
request.setAttribute("name", "request");
//存储⼀个对象
Users user=new Users();
user.setId(1);
user.setUsername("lisi");
user.setPwd("123");
session.setAttribute("user", user);
//存储⼀个集合
List list=new ArrayList();
Users user1=new Users();
user1.setId(1);
user1.setUsername("wangwu");
user1.setPwd("123");
list.add(user1);
Users user2=new Users();
user2.setId(1);
user2.setUsername("zhaoliu");
user2.setPwd("123");
list.add(user2);
application.setAttribute("List", list);
%>
out.Username());
%>
${requestScope.name}
${sessionScope.user.username}
${applicationScope.List[0].pwd}
${name }
${user.username}
${List[0].pwd}
EL的内置对象11个
pageScope,requestScope,sessionScope,applicationScope
-
--- 获取JSP中域中的数据
param,paramValues - 接收参数.
相当于Parameter() ParameterValues() header,headerValues - 获取请求头信息
相当于Header(name)
initParam - 获取全局初始化参数
相当于ServletContext().getInitParameter(name)
cookie - WEB开发中cookie
相当于Cookies()---Name()---Value() Form.html
Form.jsp
//.....
%>
${param.username }
${header["User-Agent"] }
${cookie.abc.value }
${quest }
Cookie.jsp
Cookie cookie=new Cookie("abc","zhangsan");
response.addCookie(cookie);
%>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论