jsp规范
jsp规范
一。jsp介绍:
来自于javaee规范里面的一种
jsp规范制定了如何开发jsp文件代替响应对象将处理结果写入到响应体的开发流程
规范了Http服务器应该如何调用管理jsp文件
二。响应对象存在的弊端:
适合将数据量较少的处理结果写入响应体
如果处理结果数量过多,使用响应对象增加开发难度
三。jsp文件优势:
jsp文件在执行的时候,自动将文件所有内容写入到响应体,从而节省out.print
jsp中书写java <%int a = 10;%>
将java变量写入响应体中<%=num%> num1+num2=<%=num1+num2%>
在jsp中所有的标记是一个整体与out.print一样
内置的对象不需要new 直接可以使用:
1.jsp文件内置对象:request
类型:HttpServletRequest
作用:在jsp文件运行时读取请求包的信息
与Servlet在请求转发过程中实现数据共享
2.jsp文件内置对象:session
类型:HttpSession
作用:在jsp文件运行时可以通过session指向当前用户私人储物柜,添加共享数据,或读取
共享数据
3.ServletContext application;全局作用域对象
同一个网站中Servlet与jsp,都可以通过当前网站的全局作用域对象实现数据共享
jsp文件内置对象:application
servlet与jsp分工:
servlet负责处理业务并得到处理结果
jsp负责将处理结果写入响应体
二者调用关系:
Servlet工作完毕之后一般通过请求转发的方式向tomcat申请调用jsp
servlet与jsp之间如何实现数据共享
Servlet将处理结果添加到请求作用域对象
jsp在运行时从请求作用域对象得到处理结果
Http服务器调用jsp文件步骤:
1.Http服务器将jsp文件编辑为一个servlet接口实现类
2.Http服务器将servlet文件编译为一个class文件
3.Http服务器负责创建这个class的实例对象,这个实例对象就是Servlet实例对象
4.Http服务器通过Servlet实例对象调用Service方法,将jsp文件内容写入响应体。
el工具包:
由java开发的一个jar
作用降低jsp开发时java命令开发强度
tomcat服务器本身自带el工具包
使用原始的jsp:
<%
Integer sid = (Integer)application.getAttribute(“sid”);
String sname = (String)session.getAttribute(“sname”);
String home = (String)request.getAttribute(“home”);
%>
学员id<%=sid%>
学员姓名<%=sname%>
学员地址<%=home%>
使用el:
学员id${applicationScope.sid}
学员姓名${sessionScope.sname}
学员地址${requestScope.home}
el表达式:
1.命令格式:${作用域对象.共享数据}
2.命令作用:
1)el表达式是el工具包提供的一种特殊命令格式【表达式命令格式】
2)el表达式在jsp文件上使用
3)负责在jsp文件从作用域对象读取指定的共享数据并输出到响应体。
el表达式作用域对象:
jsp文件可以使用的作用域对象:
1)ServletContext application:全局作用域对象
2)HttpSession session:会话作用域对象
3)HttpServletRequest request:请求作用域对象
4)PageContext pageContext:当前页作用域对象,这是jsp文件独有的作用域对象
Servlet中不存在当前页作用域对象,该对象存放的数据只能在当前jsp文件
中使用,不能共享给其他Servlet或其他jsp文件
真是开发过程中,主要用于jstl标签与jsp文件
之间数据共享
jstl—pageContext—–jsp
el表达式提供作用域对象的别名:
jsp el表达式
application ${applicationScope.共享数据名}
session ${sessionScope.共享数据名}
request ${requestScope.共享数据名}
pageContext ${pageScope.共享数据名}
el表达式将引用对象属性写入到响应体:
1.命令格式:${作用域对象别名.共享数据名.属性名}
2.命令作用:从作用域对象读取指定共享数据关联的引用对象的属性值
并自动将属性的结果写入到响应体
3.属性名:一定要去引用类型属性名完全一致(大小写)
4.el表达式没有提供遍历集合方法,因此无法从作用域对象读取集合内容输出
el表达式简化版:
1.命令格式:${共享数据名}
2.命令作用:el表达式允许开发人员开发时省略作用域对象名
3.工作原理:
首先到pageContext定位的数据查找,存在就输出
如果没有就到request定位的数据查找,存在就输出
如果还是没有就定位session,最后定位application
都没有则返回null
4.存在的隐患:
降低程序的速度
容易导致数据定位错误
5.应用场景:
设计的目的简化从pageContext读取共享数据并输出难度
6.el表达式虽然存在问题,但是在实际开发中一般使用简化版,拒绝使用标准版
el表达式—-支持运算表达式:
1.前提:咋jsp文件有时需要将读取共享数据进行一番运算之后,将运算结果写入到响应体
2.运算表达式:
1)数学运算
2)关系运算:>(gt) >=(ge) ==(eq) <(lt) <=(le) !=(!=)
3)逻辑运算:&& || !
el表达式提供内置对象:
1.命令格式:${param.请求参数名}
2.命令作用:通过请求对象读取当前请求包中请求参数的内容
并将请求参数内容写入到响应体
3.代替命令:index.jsp
发送请求:Http://localhost:8000/myweb/index.jsp?userName=mike&password=123
<%
String userName = request.getParameter(“userName”);
String userPwd = request.getParameter(“userPwd”);
%>
<%=userName%>
<%=userPwd%>
${paramValues.请求参数名[下标]}
命令作用:如果浏览器发送的请求参数是一个参数关联多个值此时可以
通过paramValues读取请求参数下指定的位置的值并写入响应体
select rand();随机返回0-1之间小数
SELECT * from emp ORDER BY RAND() LIMIT 0,4;随机查询四条语句