linux怎么查看本机内存大小
241
2022-09-16
JSP基础②
文章目录
JSP脚本
JSP脚本分类JSP的缺点
EL表达式
概述代码演示域对象
JSP脚本
JSP脚本用于在 JSP页面内定义 Java代码。
JSP脚本分类
JSP 脚本有如下三个分类:
<%…%>:内容会直接放到_jspService()方法之中<%=…%>:内容会放到out.print()中,作为out.print()的参数<%!…%>:内容会放到_jspService()方法之外,被类直接包含
代码演示:
在 hello.jsp 中书写
<% System.out.println("hello,jsp~"); int i = 3;%>
通过浏览器访问 hello.jsp 后,查看转换的 hello_jsp.java 文件,i 变量定义在了 _jspService() 方法中
在 hello.jsp 中书写
<%="hello"%><%=i%>
通过浏览器访问 hello.jsp 后,查看转换的 hello_jsp.java 文件,该脚本的内容被放在了 out.print() 中,作为参数
在 hello.jsp 中书写
<%! void show(){} String name = "zhangsan";%>
通过浏览器访问 hello.jsp 后,查看转换的 hello_jsp.java 文件,该脚本的内容被放在了成员位置
我们可以用一个案例来更好地理解他们:
使用JSP脚本来做成下面的表格:
这里的数据库信息我们直接给出,用Brand类导入。
<%@ page import="com.itheima.pojo.Brand" %><%@ page import="java.util.List" %><%@ page import="java.util.ArrayList" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><% // 查询数据库 List
<% for (int i = 0; i < brands.size(); i++) { Brand brand = brands.get(i); %> 序号 品牌名称 企业名称 排序 品牌介绍 状态 操作 <% } %><%=brand.getId()%> <%=brand.getBrandName()%> <%=brand.getCompanyName()%> <%=brand.getOrdered()%> <%=brand.getDescription()%> <%=brand.getStatus() == 1 ? "启用":"禁用"%> 修改 删除
注意:java代码与html代码是严格分开的,我们可以使用即时的切断机制实现这个条件。
JSP的缺点
通过上面的案例,我们可以看到 JSP 的很多缺点。
由于 JSP页面内,既可以定义 HTML 标签,又可以定义 Java代码,造成了以下问题:
书写麻烦:特别是复杂的页面既要写 HTML 标签,还要写 Java 代码阅读麻烦上面案例的代码,相信你后期再看这段代码时还需要花费很长的时间去梳理复杂度高:运行需要依赖于各种环境,JRE,JSP容器,JavaEE…占内存和磁盘:JSP会自动生成.java和.class文件占磁盘,运行的是.class文件占内存调试困难:出错后,需要找到自动生成的.java文件进行调试不利于团队协作:前端人员不会 Java,后端人员不精 HTML如果页面布局发生变化,前端工程师对静态页面进行修改,然后再交给后端工程师,由后端工程师再将该页面改为 JSP 页面
由于上述的问题, JSP 已逐渐退出历史舞台,以后开发更多的是使用 HTML + Ajax 来替代。下来对技术的发展进行简单的说明
EL表达式
概述
EL(全称Expression Language )表达式语言,用于简化 JSP 页面内的 Java 代码。
EL 表达式的主要作用是 获取数据。其实就是从域对象中获取数据,然后将数据展示在页面上。
而 EL 表达式的语法也比较简单,${expression} 。例如:${brands} 就是获取域中存储的 key 为 brands 的数据
代码演示
定义servlet,在 servlet 中封装一些数据并存储到 request 域对象中并转发到el-demo.jsp 页面。
@WebServlet("/demo1")public class ServletDemo1 extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1. 准备数据 List
注意: 此处需要用转发,因为转发才可以使用 request 对象作为域对象进行数据共享
在el-demo.jsp 中通过 EL表达式 获取数据
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
域对象
JavaWeb中有四大域对象,分别是:
page:当前页面有效request:当前请求有效session:当前会话有效application:当前应用有效
el 表达式获取数据,会依次从这4个域中寻找,直到找到为止。而这四个域对象的作用范围如下图所示
例如: ${brands},el 表达式获取数据,会先从page域对象中获取数据,如果没有再到 requet 域对象中获取数据,如果再没有再到 session 域对象中获取,如果还没有才会到 application 中获取数据。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~