文档章节

JSP编译与动作指令

YuanyuanL
 YuanyuanL
发布于 2015/08/25 11:18
字数 1498
阅读 59
收藏 1
点赞 0
评论 0
jsp

jsp

jsp编译后生成servlet,所以说jsp也是一种特殊的servlet,通常由html和java语言构成,常用做表现层。

1. 脚本的表达式

形如: <% xxx %>


2.  3个编译指令 

jsp的编译指令时通知jsp引擎的消息,它不直接生成输出。编译指令都有默认值,因此开发人员无需为每个指令设置值。

page指令: 

page指令通常位于jsp页面的顶端,一个jsp页面可以使用多条page指令。

   page指令语法格式如下:

<%@ page  
         language="java"
         contextType="text/html;charset=UTF-8"
         pageEncoding="UTF-8"
         import="java.util.Date,java.lang.String"
         session="true/false"
         buffer="none/8KB"
         errorPage="./xx.jsp"
         isErrorPage="false/false"  
%>

   isErrorPage: 如果此页面被用作处理异常错误的页面,则为true。在这种情况下,页面可被指定为另一页面page指令元素中errorPage属性的取值。指定此属性为true将使exception隐含变量对此页面可用。缺省值为false。

include指令

  向当前页面内静态镶嵌如一个文件的内容

<%@ include file="相对路径的文件" %>

taglib指令

     其实就是定义一个标签库以及自定义标签的前缀。

    比如struts中支持的标签库,html标签库、bean标签库、logic标签库。

    其中的具体的实现方式,我们不过多介绍,我们给大家从宏观的角度以及解决其中的疑难点,后面会大家介绍相应的学习资料。

    除了struts的标签库,我们常见还有jstl标签库。

    这样在界面jsp中引入其中的标签库或者标签库文件,然后才可以正常使用其中定义的标签。

代码如下:

<%@ taglib prefix ="bean" uri= "http://struts.apache.org/tags-bean" %> 
<%@ taglib prefix ="logic" uri= "http://struts.apache.org/tags-logic" %> 
<%@ taglib prefix ="html" uri= "http://struts.apache.org/tags-html" %> 
<%@ taglib prefix ="c" uri="http://java.sun.com/jsp/jstl/core" %>



2.  7个动作指令

include动作: 

        向当前页面内动态包含一个文件:静态文件(txt/html)或者动态文件(jsp)。

        动作中可以包含<jsp:param name="" value="" />参数。

  <jsp:include page="相对路径的文件" />
 或者
  <jsp:include page="相对路径的文件">
    <jsp:param name = "name2" value = "value2"/>
    ... 
  </jsp:include>

       include指令标签与动作标签的区别:

          “include指令标签”,是将静态嵌入文件作为主体文件的一部分,所以主文件和子文件其实是一体,。

           指令标签在编译时就将子文件载入;它不会检查所含文件的变化,适用于包含静态页面。

          “include动作标签”,是动态嵌入文件,子文件不必考虑主文件的属性。

            动作标签在运行时才将子文件载入;它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。

forward动作:

        用来重定向一个静态HTML文件、JSP文件或者是一个程序段。

        从当前页面跳转到目标文件页面,地址栏是处理文件的地址,而不是目标文件的地址。forward动作指令后面的代码不会被执行,也不会被发送到客户端。

          动作中可以包含<jsp:param name="" value="" />参数。

  <jsp:forward page="目标文件"/>
  或者
  <jsp:forward page = "目标文件"> 
     <jsp:param name = "name1" value = "value1"/> 
     ...
  </jsp:forward>


useBean动作

  <jsp:useBean>标签用来在JSP页面中创建一个JavaBean实例,并指定其名称和作用范围。   


getProperty动作

  <jsp:getProperty>标签用来获取Bean的属性值(在此之前必须用<jsp:useBean>创建Bean),并将之转化为一个字符串,然后将其插入到输出的页面中。


setProperty动作

  <jsp:setProperty>标签表示用来设置Bean中的属性值(在此之前必须用<jsp:useBean>创建Bean)。

 <jsp:useBean id="id" scope="page|request|session|application" typeSpec />
 id为大小敏感的名字,用来表示这个实例;
 scope表示此对象可以使用的范围;
 typeSpec可以为以下四者之一:
    class="className"  Bean的类路径和类名。这个class不能是抽象的,必须有一个共用的,没有参数的构造器。
    class="className" type="typeName" 实例化一个Bean,同时还可以指定Bean的类型。
    beanName="beanName" type="typeName"
    type="typeName"
<jsp:setProperty name="beanName" propertyDetails />
name="beanName"为必选属性,其值为Bean的名字,在这之前用jsp:userBean引入的名称。
proertyDetails可以有四种不同的方法。
·    property="*" 设置Bean快捷方式,在Bean中,属性的名字、类型必须和request对象中的参数名称相匹配。
·    property="propertyName" param="parameterName"  将Bean中的变量和request中的参数对应起来。property为Bean的属性名,param为request中的参数名。
·    property="propertyName"      
·    property="propertyName" value="propertyValue"  直接设置Bean的值。

     setProperty代码示例

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <jsp:useBean id="user" scope="session" class="lyy.model.User" />
    <jsp:setProperty name="user" property="*"/>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
</head>
<body>
    <form action="login.jsp" method="post">
    name: <input type="text" name="name" value="lyy"><br>
    pwd: <input type="password" name="pwd" value="pwd"><br>
    <input type="submit" value="submit">
    <input type="reset" value="reset">
    </form>
</body>
</html>

      getProperty()代码示例:

<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<jsp:useBean id="user" scope="page" class="lyy.model.User"/>
<html>
<body>
注册成功:<br>
<hr>
使用bean属性方法:<br>
用户名:<%=user.getName() %><br>
密码:<%=user.getPwd() %><br>
<hr>
使用getProperty:<br>
用户名:<jsp:getProperty name="user" property="name"/><br>
密码:<jsp:getProperty name="user" property="pwd"/><br>
</body>
</html>


plugin动作

<jsp:plugin> 标签用于在浏览器中播放或显示一个对象(典型为applet和Bean),这种显示需要在浏览器上安装Java插件。当JSP文件被编译后送往浏览器时,<jsp:plugin>元素将会根据浏览器的版本替换成<object>或者<embed>元素。

    动作中可以包含<jsp:param name="" value="" />参数。

     详见:http://blog.sina.com.cn/s/blog_53c96bd00100082t.html


param动作

<jsp:param>标签用来传递参数,必须与forward、include及plugin动作配合使用。

在目标文件中可以通过request.getParameter("name");来获得传递过来的参数.






© 著作权归作者所有

共有 人打赏支持
YuanyuanL

YuanyuanL

粉丝 151
博文 225
码字总数 187115
作品 0
济南
部门经理
JSP 学习总结---学习笔记

什么是JSP 1)为什么说,Servlet是一个动态Web开发技术呢? Servlet是基于服务端的一种动态交互技术, HttpServletRequest表示客户端到服务端的对象 HttpServletResponse表示服务端到客户端的...

知止内明 ⋅ 04/18 ⋅ 0

【J2EE】之常用的接口和协议

前言 初接触J2EE,会遇到很多之前没有遇到过的术语,下面我们来简单地汇总一下这些接口和协议吧。 各大接口和协议详解 JDBC 1.定义:Java数据库连接 2.地位:用于Java应用程序连接数据库的标...

m18633778874 ⋅ 04/26 ⋅ 0

面试的角度诠释Java工程师(一)

原文出处: locality 前言: 我相信每一个程序员都是为了生活而努力着的。很多人因为兴趣,从此踏上了这条‘烧脑大行动’的金桥;也有很多人因为梦想和执着,奋不顾身融入这个职业;还有很多...

颖伙虫 ⋅ 前天 ⋅ 0

JavaWeb开发比较重要的面试题

JavaWeb开发比较重要的面试题 1. 编码转换:怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串? 答:示例代码如下: String s1=”你好”; String s2=new String(s1.getBytes(“GB2312”...

xj_9264 ⋅ 05/06 ⋅ 0

Servlet的一些细节--学习笔记

Servlet细节 1)浏览器访问的url-pattern只是一个符合格式的任意字符串,以/开头 2)一个Servlet的url-pattern可以是1个或多个,有二种形式; a).xx b)/xx/ 注意:/不能一起直接使用 3)/和....

知止内明 ⋅ 04/17 ⋅ 0

web项目中web.xml的作用

每个javaEE工程中都有web.xml文件,那么它的作用是什么呢?它是每个web.xml工程都必须的吗? 一个web中可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的。 web.xml文件是用来...

ChinaHYF ⋅ 04/27 ⋅ 0

Servlet创建运行的过程--生命周期以及自动加载

前言 初学者像我这样的,刚开始学的时候一脸懵逼,为什么Servlet可以直接运行,明明没有入口啊 只是重写了Servlet中的方法。然后访问该地址怎么就直接运行了。 所以了解Serlvet的运行过程即生...

codingcoge ⋅ 06/12 ⋅ 0

Apache Qpid JMS AMQP 0-x 6.3.1 发布

Apache Qpid JMS AMQP 0-x 6.3.1 已发布。Qpid JMS AMQP 0-x 是兼容 JMS 1.1 的客户端,等同于 AMQP 0-8,0-9,0-9-1 和 0-10。Qpid JMS 是一个使用 Qpid Proton 协议引擎的 Java Message Ser......

淡漠悠然 ⋅ 05/21 ⋅ 0

web.xml中在Servlet中获取context-param和init-param内的参数

web.xml里面可以定义两种参数: 1.application范围内的参数,存放在servletcontext中,在web.xml中配置如下: <context-param> <param-name>context/param</param-name> <param-value>avalib......

村长大神 ⋅ 2014/10/27 ⋅ 0

偶尔有跳转失败的情况,异常如下

[10:37:51:719] [ERROR] - - /refund/refundDetail?mallReturnId=91 java.lang.RuntimeException: File not found : /opt/jboot/webRoot/refund/refundDetail.html at com.jfinal.template.s......

保持-微笑 ⋅ 04/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

容器之重命名镜像

使用docker tag命令来重命名镜像名称,先执行help,查看如何使用如下 mjduan@mjduandeMacBook-Pro:~/Docker % docker tag --helpUsage:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TA...

汉斯-冯-拉特 ⋅ 26分钟前 ⋅ 0

with 的高级用法

那么 上下文管理器 又是什么呢? 上下文管理器协议包含 __enter__ 和 __exit__ 两个方法。with 语句开始运行时,会在上下文管理器对象上调用 __enter__ 方法。with 语句运行结束后,会在上下...

阿豪boy ⋅ 45分钟前 ⋅ 0

使用 jsoup 模拟登录 urp 教务系统

需要的 jsoup 相关 jar包:https://www.lanzous.com/i1abckj 1、首先打开教务系统的登录页面,F12 开启浏览器调试,注意一下 Request Headers 一栏的 Cookie 选项,我们一会需要拿这个 Cook...

大灰狼时间 ⋅ 45分钟前 ⋅ 0

关于线程的创建

转自自己的笔记: http://note.youdao.com/noteshare?id=87584d4874acdeaf4aa027bdc9cb7324&sub=B49E8956E145476191C3FD1E4AB40DFA 1.创建线程的方法 Java使用Thread类代表线程,所有的线程对......

MarinJ_Shao ⋅ 56分钟前 ⋅ 0

工厂模式学习

1. 参考资料 工厂模式-伯乐在线 三种工厂-思否 深入理解工厂模式 2. 知识点理解 2.1 java三种工厂 简单工厂 工厂模式 抽象工厂 2.2 异同点 逐级复杂 简单工厂通过构造时传入的标识来生产产品...

liuyan_lc ⋅ 今天 ⋅ 0

Java NIO

1.目录 Java IO的历史 Java NIO之Channel Java NIO之Buffer Java NIO之Selector Java NIO之文件处理 Java NIO之Charset Java 可扩展IO 2.简介 “IO的历史”讲述了Java IO API从开始到现在的发...

士别三日 ⋅ 今天 ⋅ 0

[Err] ORA-24344: success with compilation error

从txt文本复制出创建function的脚本,直接执行,然后报错:[Err] ORA-24344: success with compilation error。 突然发现脚本的关键字,居然不是高亮显示。 然后我把脚本前面的空格去掉,执行...

wenzhizhon ⋅ 今天 ⋅ 0

Spring Security授权过程

前言 本文是接上一章Spring Security认证过程进一步分析Spring Security用户名密码登录授权是如何实现得; 类图 调试过程 使用debug方式启动https://github.com/longfeizheng/logback该项目,...

hutaishi ⋅ 今天 ⋅ 0

HAProxy基于KeepAlived实现Web高可用及动静分离

前言 软件负载均衡一般通过两种方式来实现: 基于操作系统的软负载实现 基于第三方应用的软负载实现 LVS是基于Linux操作系统实现的一种软负载,而HAProxy则是基于第三方应用实现的软负载。 ...

寰宇01 ⋅ 今天 ⋅ 0

微软自研处理器的小动作:已经开始移植其他平台的工具链

微软将 Windows 10 、Linux 以及工具链如 C/C++ 和 .NET Core 运行时库、Visual C++ 2017 命令行工具、RyuJIT 编辑器等移植到其自主研发的处理器架构 E2。微软还移植了广泛使用的 LLVM C/C++...

linux-tao ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部