JSP基础2

JSP动作标签

这些jsp动作标签与html提供的标签有本质的区别,动作标签是由tomcat来解释执行,它与Java代码一样,都是在服务器端执行的!

语法 描述
jsp:include 在页面被请求的时候引入一个文件。
jsp:forward 把请求转到一个新的页面。
jsp:useBean 寻找或者实例化一个JavaBean。
* jsp:setProperty 设置JavaBean的属性。
* jsp:getProperty 输出某个JavaBean的属性。

1 .
即转发,它与RequestDispatcher的forward方法是一样的,一个是在Servlet中使用,一个是在jsp中使用 , jsp:forward动作把请求转到另外的页面。jsp:forward标记只有一个属性page。语法格式如下所示:


以下是forward相关联的属性:

指令 描述
page page属性包含的是一个相对URL。page的值既可以直接给出,也可以在请求的时候动态计算,可以是一个JSP页面或者一个 Java Servlet.

示例
创建main.jsp , date.jsp两个文件
main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
http://www.w3.org/TR/html4/loose.dtd">



Insert title here





date.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
http://www.w3.org/TR/html4/loose.dtd">



Insert title here


今天的日期是: <%= (new java.util.Date()).toLocaleString()%>

2 .
即包含,它与RequestDispatcher的include方法是一样的,一个是在servlet中使用,一个是在jsp中使用!
一个页面包含另一个页面,并向另一个页面传参

为要传递的变量

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
http://www.w3.org/TR/html4/loose.dtd">



Insert title here


Include动作指令示例

然后新建一个文件,用于接收第一个页面传递过来的参数

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
http://www.w3.org/TR/html4/loose.dtd">



Insert title here


<% String name = request.getParameter("name"); out.print("name:" + name +"\n"); %> <% out.print("password:" + request.getParameter("password")); %>

动作指令useBean

3 .
先来看下什么是JavaBean是一种规范,也就是对类的要求。它要求Java类的成员变量提供getter/setter方法,这样的成员变量被称之为JavaBean属性。
JavaBean还要求类必须提供仅有的无参构造器,例如:public User() {…}

JSP基础2_第1张图片

提到内省,不能不提commons-beanutils这个工具。它底层使用了内省,对内省进行了大量的简化!使用beanutils需要的jar包:
以后主要用这个包

  • commons-beanutils.jar;
  • commons-logging.jar;

EL概述

JSP2.0要把html和css分离、要把html和javascript分离、要把Java脚本替换成标签。标签的好处是非Java人员都可以使用。
JSP2.0 – 纯标签页面,即:不包含<% … %>、<%! … %>,以及<%= … %>
EL(Expression Language)是一门表达式语言,它对应<%=…%> , 目的就是替代这种写法。我们知道在JSP中,表达式会被输出,所以EL表达式也会被输出。

EL表达式格式

先来了解一下EL表达式的格式!现在还不能演示它,因为需要学习了EL11个内置对象后才方便显示它。

  • 操作List和数组: l i s t [ 0 ] 、 {list[0]}、 list[0]{arr[0]};
  • 操作bean的属性: p e r s o n . n a m e 、 {person.name}、 person.name{person[‘name’]},对应person.getName()方法;
  • 操作Map的值: m a p . k e y 、 {map.key}、 map.key{map[‘key’]},对应map.get(key)。
EL内置对象

EL一共11个内置对象,无需创建即可以使用。这11个内置对象中有10个是Map类型的,最后一个是pageContext对象。
 pageScope
 requestScope
 sessionScope
 applicationScope
 param;
 paramValues;
 header;
 headerValues;
 initParam;
 cookie;
 pageContext;


MVC

JSP Model2模式已经可以清晰的看到MVC完整的结构了。

  • JSP:视图层,用来与用户打交道。负责接收用来的数据,以及显示数据给用户;
  • Servlet:控制层,负责找到合适的模型对象来处理业务逻辑,转发到合适的视图;
  • JavaBean:模型层,完成具体的业务工作,例如:开启、转账等。

JSP基础2_第2张图片


JavaWeb三层框架

我们常说的三层框架是由JavaWeb提出的,也就是说这是JavaWeb独有的!
所谓三层是表述层(WEB层)、业务逻辑层(Business Logic),以及数据访问层(Data Access Object)。

  • WEB层:包含JSP和Servlet等与WEB相关的内容;
  • 业务层:业务层中不包含JavaWeb API,它只关心业务逻辑;
  • 数据层:封装了对数据库的访问细节;

注意,在业务层中不能出现JavaWeb API,例如request、response等。也就是说,业务层代码是可重用的,甚至可以应用到非Web环境中。业务层的每个方法可以理解成一个万能,例如转账业务方法。业务层依赖数据层,而Web层依赖业务层!
JSP基础2_第3张图片


在这里插入图片描述

你可能感兴趣的:(Java,Web)