windows 做网站服务器电脑优化软件哪个好用
目录
JSP规范
JSP内置对象
Servlet和JSP文件分工
JSP文件运行原理
EL表达式
JSP规范
JSP规范:
1、来自于JAVAEE规范中的一种
2、JSP规范制定了如果开发JSP文件代替响应对象将处理结果写入到响应体的开发流程
3、JSP规范制定了Http服务器应该如何调用管理JSP文件
响应对象存在弊端:
1、适合将数据量较少的处理结果写入到响应体
2、如何处理数据过多,使用响应对象增加开发难度
JSP的好处:
JSP文件在执行时,自动将文件锁头内容写入到响应体,从而节省书写out.print
JSP文件java命令书写规则:
<%
int num = 100;
%>
//在JSP文件,通过输出标记,通知JSP将Java变量的值写入到响应体
<%=变量名或者表达式%>
<%Integer num = 15;
%><%if(num > 18){
%><font style="color: red; font-size: 40px">欢迎光临</font>
<%} else {
%><font style="colro: red; font-size: 40px">谢绝入内</font>
<%}
%><center><table border="2px"><tr><td>编号</td><td>姓名</td></tr><%for(Student stu : list){%><tr><td><%=stu.getId()%></td><td><%=stu.getName()%></td></tr><%}%></table>
</center>
JSP内置对象
JSP文件内置对象:request
类型:HttpServletRequest
作用:在JSP文件运行时读取请求包信息
与Servlet在请求转发过程中实现数据共享
JSP文件内置对象:session
类型:HttpSession
作用:JSP文件在运行时,可以session指向当前用户私人储物柜
添加共享数据,或者读取共享数据
JSP文件内置对象:applilcation
类型:ServletContext
作用:全局作用域对象,都可以通过当前网站的全局作用域对象实现数据共享Servlet和JSP的数据共享
Servlet和JSP文件分工
1、Servlet与JSP分工:
Servlet:负责处理业务并得到处理结果
JSP:不负责业务处理,主要任务将Servlet中处理结果写入响应体
2、Servlet与JSP之间调用关系
Servlet工作完毕后,一般通过请求转发方式向Tomcat申请调用JSP
3、Servlet与JSP之间如何实现数据共享
Servlet将处理结果添加到请求作用域对象
JSP文件在运行时从请求作用域对象得到处理结果
JSP文件运行原理
Http服务器调用JSP文件步骤:
1、Http服务器将JSP文件内容编辑为一个Servlet接口实现类 .java
2、Http服务器将Servlet接口实现类编译为class文件 .class
3、Http服务器负责创建这个class的实例对象,这个实例对象就是Servlet实例对象
4、Http服务器通过Servlet实例对象调用_jspService方法,将jsp文件内容写入到响应体
EL表达式
EL工具包介绍:
1、由Java技术开发一个jar包
2、作用降低JSP文件开发时Java命令开发强度
3、Tomcat服务器本身自带了EL工具包
EL表达式:
1、命令格式:${作用域对象别名.共享数据}
2、命令作用:
1、EL表达式是EL工具包提供一种特殊命令格式 表达式命令格式
2、EL表达式在JSP文件上使用
3、负责在JSP文件上从作用域对象读取指定的共享数据并输出到响应体
EL表达式-作用域对象别名
1、JSP文件可以使用的作用域对象
ServletContext application:全局作用域对象
HttpSession session:会话作用域对象
HttpServletRequest request:请求作用域对象
PageContext pageContext:当前页作用域对象
这是JSP文件独有的作用域对象,Servlet中不存在
在当前页作用域对象存放的共享数据仅能在当前JSP文件中使用,
不能共享给其他Servlet或者其他JSP文件
2、EL表达式提供作用域对象别名
JSP EL表达式
application $(applicationScope.共享数据名)
session $(sessionScope.共享数据名)
request $(requestScope.共享数据名)
pageContext $(pageScope.共享数据名)
EL表达式将引用对象属性写入到响应体
1、命令格式:${作用域对象别名.共享数据名.属性名}
2、命令作用:从作用域对象读取指定共享数据关联的引用对象的属性值,并自动将属性的结果写入到响应体。
3、属性名:引用类型属性名完全一致
4、EL表达式没有提供遍历集合方法,因此无法从作用域对象读取集合内容输出
EL表达式简化版:
1、命令格式:$(共享数据名)
2、命令作用:EL表达式允许开发人员开发时省略作用域对象别名
3、工作原理:EL表达式简化版由于没有指定作用域对象,所以在执行时采用猜算法
首先到pageContext定位共享数据,如果存在直接读取输出并结束执行
如果在pageContext没有定位成功,到request定位共享数据,如果存在直接读取输出并结束执行
如果在request没有定位成功,到session定位共享数据,如果存在直接读取输出并结束执行
如果在session没有定位成功,到application定位共享数据,如果存在直接读取输出并结束执行
如果在application没有定位成功,返回null
pageContext--->request-->session-->application
4、存在隐患:
容易降低程序执行速度
容易导致数据定位错误
5、应用场景:
设计目的,就是简化从pageContext读取共享数据输出难度
6、EL表达式简化版尽管存在很多隐患,但是在实际开发过程中,开发人员为了节省时间,一般都使用简化版,拒绝使用标准版
EL表达式---支持运算表达式
1、前提:在JSP文件有时需要将读取共享数据进行一番运算之后,将运算结果写入到响应体
2、运算表达式
EL表达式提供内置对象
1、命令格式:$(param.请求参数名)
2、命令作用:从通过请求对象读取当前请求包中请求参数内容,并将请求参数内容写入到响应体
3、代替命令:
发送请求:http://localhost:8080/myWeb/index.jsp?userName=mike
<%
String userName = rquest.getParameter("userName");
String password = request.getParameter("password");
%>
<%=userName%>
<%=password%>
以下命令适合于多选
1、命令格式:${paramValues.请求参数名[下标]}
2、命令作用:如果浏览器发送的请求参数是一个请求参数关联多个值
此时可以通过paramValues读取请求参数下指定位置的值,并写入到响应体
3、代替命令:
发送请求:http://localhost:8080/myWeb/index.jsp?hobby=抽烟
此时hobby请求参数在请求包以数组形式存在
<%
String[] arr = request.getParameterValues("hobby");
%>
<%=arr[0]%>
<%=arr[1]%>