JSP和EL表达式

一、JSP的几个动作元素:3个(JSP内置的自定义标签,给服务器用的)
1、jsp:include
作用:实现动态包含
属性:page.包含的目标组件的URL地址。以“/”开头,就表示绝对路径了。
2、jsp:forward
作用:实现转发
属性:page.转向的目标组件的URL地址。以“/”开头,就表示绝对路径了。
3、jsp:param
作用:添加请求参数
属性:name参数名 value参数值
<jsp:forward page="/2.jsp">
     <jsp:param value="mjc" name="name"/>
<jsp:param value="123" name="password"/>
    </jsp:forward>
以上代码说明,转向2.jsp时,传递一个name的请求参数
二、JSP中的9个隐式对象(在JSP中的Java脚本中,不用定义直接可以使用的对象。---JSP对应的Servlet的service方法中的变量)
内置对象(变量名)   对应的类型
request javax.servlet.http.HttpServletRequest
response javax.servlet.http.HttpServletResponse
session javax.servlet.http.HttpSession(前提page指令的session="true")
application javax.servlet.ServletContext
config javax.servlet.ServletConfig
page  this
exception java.lang.Throwable(前提page指令的isErrorPage="true")
-------------------------------------------------------------
out javax.servlet.jsp.JspWriter
pageContext javax.servlet.jsp.PageContext;
1、out内置对象(javax.servlet.jsp.JspWriter)详解
字符输出流,作用等同于PrintWriter(ServletResponse.getWriter())
用户看到的结果数据:都是从ServletResponse的流的缓存中取到的。
2、pageContext内置对象(javax.servlet.jsp.PageContext)详解
三大作用:
a、获取其他JSP中的8大隐式对象:在普通类中获取JSP9个隐式对象用的。
b、提供包含和转发的简易方法
request.getRequestDispatcher("url").forward(request,response);
request.getRequestDispatcher("url").include(request,response);
PageContext.forward("url"):转发
PageContext.include("url"):包含
c、本身是一个域对象,还能操作其他域对象中的数据
c.1本身是一个域对象,想象内部有一个Map<String,Object>
void setAttribute(String str,Object obj)
Object getAttribute(String str)
void removeAttribute(String str)
注意:向PageContext域对象存放的东东,只在当前页面有效。
c.2操作其他域对象中的数据(其他的域对象ServletContext   HttpSession ServletRequest)
void setAttribute(String str,Object obj,int scope)
Object getAttribute(String str,int scope)
void removeAttribute(String str,int scope)
注意:参数scope是整数,他是PageContext中定义的常量(PageContext.APPLICATION_SCOPE PageContext.SESSION_SCOPE PageContext.REQUEST_SCOPE PageContext.PAGE_SCOPE)
c.3非常重要的方法:Object findAttribute(String s):按照页面、请求、会话、应用范围的顺序依次查找s的数据,找到位置。
三、四大域(范围)对象(作用:封装数据,传递数据)
域对象的类型      jsp中的引用名称   表示的范围
PageContext          pageContext      page
ServletRequest       request          request
HttpSession          session          session
ServletContext       application      application

四、JavaBean的概念
就是一个普通的Java类(POJO、DO--Data Object、VO--Value Object、域(领域)对象)
一般放到domain的包中
特点:
1、类必须有默认的构造方法。
2、类中的字段都是私有的。
3、提供公共的getter或者setter方法(属性)
4、类一般是public声明的。
5、一般需要实现java.io.Serializable接口

在JavaEE开发中,JavaBean的主要作用就是封装数据
注意:遵守Java的命名规范。
五、JSP中使用JavaBean:3个动作元素
1、jsp:useBean
作用:从指定的域范围查找指定名称的对象;找到了,返回对象的应用;没有找到,创建一个新的对象,存放到域范围中去
属性:
id:必须的。代表要查找的对象引用名称。
class:对象类型。
scope:指定的范围。默认是page。可选值:page|request|session|application
2、jsp:setProperty
作用:给指定的属性设置值。
属性:
property:JavaBean的属性(对应JavaBean的setter方法:比如setName,此处写name)
针对请求参数,还支持通配符*
name:指定是为哪个JavaBean设置属性(使用该标签时,需要先调用jsp:useBean)
value:设置的属性值。还能自动类型转换(仅限基本类型)(支持Java表达式赋值)
param:请求参数的名称
3、jsp:getProperty
作用:获取指定属性的值
属性:
name:指定获取哪个JavaBean的属性(使用该标签时,需要先调用jsp:useBean)
property:JavaBean的属性(对应JavaBean的getter方法:比如getName,此处写name)
注:如果某个属性的值为null,用此标签输出时就显示null(这样不好)
六、SUN公司的JavaWeb两个设计模型
1、模型1:JSP+JavaBean开发
2、模型2:Servlet+JSP+JavaBean开发。MVC+三层架构
Model:JavaBean 
View:JSP
Controller:Servlet

七、EL表达式
1、为什么要学习EL表达式?目的就是替换掉JSP中的Java表达式(<%=表达式%>)
2、基本的语法:${EL表达式},作用是将表达式的运算结果输出到页面上。
3、详细功能:
a、获取对象的属性
a.1EL表达式只能获取域中的对象或对象的属性。
运算符:
.运算符:取对象的属性(调用对象的getter方法)
[]运算符:取对象的属性,属性要用引号引起来。.运算符能干的[]都能干,[]运算符能干的,.运算符不一定能干。
获取的属性或key的值命名不符合java命名规范的情况。
注意:EL获取的对象如果不存在,不会报空指针异常,什么都不输出。
如果取的属性不存在,则报异常。
b、进行简单的数学和逻辑运算
b.1empty运算符:结果为true或false。
用于判断一个对象或集合是否为空或者是""字符串,如果是返回true。
特别注意:如果判断的是集合类型,即使集合对象本身不是空的,如果其中没有任何的元素,empty运算符也返回true。
b.1三元运算符:${逻辑表达式?为true是执行:为false时执行}
注意:EL表达式中不支持字符串连接操作。
c、获取JavaWeb开发常用的对象(EL有11个隐式对象)
注意:一定要与JSP的内置对象分清楚
这11个EL内置对象,只有一个是表示对象本身,其余10个都是表示一个Map结构的对象。
pageContext:类型javax.servlet.jsp.PageContext。
--------------------------------------------------------
pageScope:PageContext对象中维护的那个Map域。
requestScope:
sessionScope:
applicationScope:
param:代表封装了请求参数的Map<String,String>。key是请求参数名。value请求参数值,他是一个String字符串。
paramValues:代表封装了请求参数的Map<String,String[]>。key是请求参数名。value请求参数值数组。
header:代表封装了请求消息头的Map<String,String>。key是请求头名。value请求头值,他是一个String字符串。
headerValues:代表封装了请求消息头的Map<String,String[]>。key是请求头名。value请求头值数组。
cookie:代表了封装了Cookie的Map<String,Cookie>。key是Cookie的name,value是Cookie对象本身。
initParam:代表了初始化参数的Map<String,String>。key是参数名,value是参数值。
参数:web.xml
<context-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</context-param>
d、调用普通Java类的静态方法(自定义EL函数)
八、JSTL的核心标签:c:if c:forEach

目标:JSP中不能出现一行Java脚本和表达式
购物车简单案例:MVC+三层架构来实现.数据库:内存数据库;JSP+Servlet实现。
用户的注册和登录案例:MVC+三层架构来实现。数据库:XML;JSP+Servlet实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值