1.1.  JSP的指令:

  1.   什么是JSP 指令?

    JSP 指令: JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出, 而只是告诉引擎如何处理JSP页面中的其余部分。

  2.   JSP 指令有哪些?

    在目前的JSP 2.0中,定义了pageincludetaglib这三种指令。下面我们来介绍关于这些指令的用法,其中taglib指令暂时就不介绍了,等到写关于自定义标签时的一篇文章时再进行介绍。

  3.   page 指令:

   1). page指令用于定义JSP页面的各种属性, 无论page指令出现在JSP页面中的什么地方, 它作用的都是整个JSP页面, 为了保持程序的可读性和遵循良好的编程习惯, page指令一般最好是放在整个JSP页面的起始位置。

  2). page 指令常用的属性:

    ①. contentType: 指定当前 JSP 页面的响应类型. 实际调用的是 response.setContentType("text/html; charset=UTF-8");通常情况下, 对于 JSP 页面而言其取值均为 text/html; charset=UTF-8. charset 指定返回的页面的字符编码是什么. 通常取值为 UTF-8

    ②. pageEncoding: 指定当前 JSP 页面的字符编码. 通常情况下该值和 contentType 中的 charset 一致。

     ③. session 属性:  <%@ page session="false" %>  取值为 true 或 false, 指定当前页面的 session 内置隐式变量是否可用, 也可以说访问当前页面时是否一定要生成 HttpSession对象.

    ④.  errorPage 和 isErrorPage:          

    > errorPage 指定若当前页面出现错误的实际响应页面是哪一个页面. 其中 / 表示的是当前 WEB 应用的根目录.

    > 其中假设当我们访问一个JSP页面时,并且定义该JSP页面的errorPage为error.jsp,在我们访问该JSP页面时若发生错误,我们发现在响应 error.jsp 时地址栏还是访问的当前JSP的页面,故而我们可知 JSP 引擎使用请求转发的方式为我们跳转到error.jsp页面。

    > isErrorPage 指定当前页面是否为错误处理页面, 可以说明当前页面是否可以使用 exception 内置隐式变量. 需要注意的是: 若指定 isErrorPage="true", 并使用 exception 的方法了, 一般不建议能够直接访问该页面. (若直接访问可能发生空指针异常。)

    > 如何使客户不能直接访问某一个页面呢 ? 对于 Tomcat 服务器而言, WEB-INF 下的文件是不能通过在浏览器中直接输入地址的方式来访问的. 但通过请求的转发是可以的!故而我们可以将错误页面放在该目录下。

    > 我们还可以不使用 errorPage属性来指定出错时跳转的错误页面,我们可以通过在 web.xml 文件中配置错误页面:      

 <error-page>

   <!-- 指定出错的代码: 404 没有指定的资源, 500 服务器内部错误. -->
<error-code>404</error-code>
<!-- 指定响应页面的位置 -->
<location>/WEB-INF/not_found.jsp</location>
</error-page> <error-page>
<!-- 指定异常的类型 -->
<exception-type>java.lang.ArithmeticException</exception-type>
<location>/WEB-INF/error.jsp</location>
</error-page>

      ⑤. import 属性: 指定当前 JSP 页面对应的 Servlet 需要导入的类. <%@page import="java.util.Date"%>

      ⑥. isELIgnored: 指定当前 JSP 页面是否可以使用 EL 表达式. 默认取值为 false.

  4.   include 指令:    <%@ include file="Xxx.jsp" %>

  1). include 指令用于通知 JSP 引擎在翻译当前 JSP 页面时将其他文件中的内容合并进当前 JSP 页面转换成的 Servlet 源文件中,这种在源文件级别进行引入的方式称之为静态引入 , 当前JSP页面与静态引入的页面紧密结合为一个Servlet。

   2). file属性的设置值必须使用相对路径,如果以 / 开头,表示相对于当前WEB应用程序的根目录(注意不是站点根目录),否则,表示相对于当前文件。

1.2.  JSP标签:

     1.  概念:

      JSP 还提供了一种称之为 Action 的元素,在 JSP 页面中使用 Action 元素可以完成各种通用的 JSP 页面功能,也可以实现一些复杂业务逻辑专用功能。Action 元素采用XML格式来进行使用的。下面就来介绍一些jsp action元素。

     2.   jsp:include标签:  <jsp:include page="Xxx.jsp" flush="true|false"> </jsp:include>

      1).动态引入: 并不是像 include 指令生成一个 Servlet 源文件, 而是生成两个 Servlet 源文件, 然后通过一个方法的方式把目标页面包含进来.jsp文件编译成Servlet 文件后其 java 代码如下:

    org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "b.jsp", out, false);

      2). page 属性用于指定被引入资源的相对路径,如果以 / 开头,表示相对于当前WEB应用程序的根目录(注意不是站点根目录),否则,表示相对于当前文件。它也可以通过执行一个表达式来获得。

      3).flush 属性指定在插入其他资源的输出内容时,是否先将当前 JSP 页面已经输出的内容刷新到客户端。

      4). jsp:include 可以使用 jsp:param 子标签传递参数:

    在a.jsp中:

   <jsp:include page="/include/b.jsp " flush="true|false">

  <jsp:param value="123" name="username"/>

  </jsp:include>

    在b.jsp中:

    <%=request.getParameter("username") %>

   3.    jsp:forward 标签:

   1). jsp:forward 用来进行页面的请求转发,如下:

     <jsp:forward page="/include2/b.jsp"></jsp:forward>相当于<%  request.getRequestDispatcher("/include/b.jsp").forward(request, response); %>

    2). jsp:forward 与 Java 代码进行请求转发 二者的区别:

     使用 jsp:forward 可以使用 jsp:param 子标签向 b.jsp 传入一些参数.

    <jsp:forward page="/include/b.jsp " flush="true|false">

      <jsp:param value="123" name="username"/>

    </jsp: forward >

    同理 jsp:include 标签:

    在  b.jsp 页面可以通过:<%=request.getParameter("username") %> 获取到传入的请求参数.

    4.   jsp:param 标签:

     参考jsp:forwrd 标签和 jsp:include 标签,jsp:param 标签 常与jsp:forwrd 标签和 jsp:include 标签一起结合使用。

    5.   关于中文乱码:

   1). 对于JSP页面上输入中文再进行请求后,在响应页面中不出现乱码,需要保证  <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> " charset 和 pageEncoding 的编码一致, 且都支持中文. 通常建议取值为UTF-8。这句page 指令相当于在 Servlet 中进行设置response.setContentType("text/html; charset=UTF-8");response.setCharacterEncoding("utf-8");还需保证浏览器的显示的字符编码也和请求的 JSP 页面的编码一致.

   2). 获取中文参数值: 默认参数在传输过程中使用的编码为 ISO-8859-1

   ①. 对于 POST 请求: 只要在获取请求信息之前(在调用 request.getParameter 或者是 request.getReader 等), 调用 request.setCharacterEncoding("UTF-8"); 即可.

  ②. 对于 GET 请求: 前面的方式对于 GET 无效。可以通过修改 Tomcat 的 server.xml 文件的方式。参照http://localhost:8989/docs/config/index.html 文档的 useBodyEncodingForURI 属性。为 Connector 节点添加 useBodyEncodingForURI="true" 属性即可。

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>

同时需要在 Eclipse中重新进行对Tomcat 服务器进行映射!

JavaWeb学习笔记之JSP(二)的更多相关文章

  1. Javaweb学习笔记——(十二)——————JSP指令:page指令、include指令、taglib指令,JavaBean,内省,EL表达式

    JSP指令JSP指令分类 JSP有三大指令: *page指令 *include指令 *taglib指令 在JSP中没有任何指令是必须的. 但基本上每个JSP都是使用page指令============ ...

  2. JavaWeb学习笔记之JSP(一)

    1. JSP: 1.1. 为什么需要 JSP ? 如果使用Servlet程序来输出只有局部内容需要动态改变的网页,但是其中的静态网页内容也需要程序员使用Java语言来进行输出,这就造成了大量代码的冗余 ...

  3. JavaWeb学习笔记--2.jsp指令元素、动作元素、内置对象

    目录: 一.指令 1.1 page指令 :page指令有13种属性 1.2 include指令:include指令有1种属性,为file.(注意<%@ include%>和<jsp: ...

  4. JavaWeb学习笔记六 JSP

    JSP技术 JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%>结束. JSP是一种Java s ...

  5. JavaWeb学习笔记(十二)—— JDBC的基本使用

    一.JDBC概述 1.1 数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡,同样道 ...

  6. JavaWeb学习笔记总结 目录篇

    JavaWeb学习笔记一: XML解析 JavaWeb学习笔记二 Http协议和Tomcat服务器 JavaWeb学习笔记三 Servlet JavaWeb学习笔记四 request&resp ...

  7. Java Web学习笔记之---JSP

    Java Web学习笔记之---JSP (一)JSP常用语法 (1)HTML注释 <!--所要注释的内容 --> 在客户端显示一个注释. (2)隐藏注释 <%--所要注释的内容--% ...

  8. javaweb学习笔记整理补课

    javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...

  9. 【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型

    [Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698. ...

随机推荐

  1. Spark On YARN内存分配

    本文转自:http://blog.javachen.com/2015/06/09/memory-in-spark-on-yarn.html?utm_source=tuicool 此文解决了Spark ...

  2. 转:CodeCube提供可共享、可运行的代码示例

    CodeCube是一个新服务和开源项目,旨在让开发者能够通过浏览器以一种安全的方式分享并运行代码示例从而提升协作. 最初发布的服务可以从codecube.io上获取,支持Ruby.Python.Go及 ...

  3. pojShredding Company

    http://poj.org/problem?id=1416 #include<cstdio> #include<cstring> #define MAXN 100 using ...

  4. rabbitMQ入门

    1 安装 1.1 首先 arbbitmq是用爱尔兰这种语言去编写的,所以,需要这种语言支持,那就需要下载以下几个包去安装来搭建环境 下载并安装erlang,http://www.erlang.org/ ...

  5. tomcat thread dump 分析【转载】

    前言 Java Thread Dump 是一个非常有用的应用诊断工具, 通过thread dump出来的信息, 可以定位到你需要了解的线程, 以及这个线程的调用栈. 如果配合linux的top命令, ...

  6. UVALive 4957 Fake scoreboard

    题意就是有n个队伍和m个题目 给出了每个队伍解决的题目数量 每个题目也给出了被解决的次数 然后求一个方阵. N,Y表示每个队伍是否过了哪个题目. 要求字典序最小. 这题给人的第一反应就是网络流. 虽然 ...

  7. 给Eclipse提速的7个技巧(转载的)

      大约一个月前,我发表了一篇博客,其中介绍了对Eclipse的爱与恨. 有些人问我如何给Eclipse提速,这篇文章就来讨论这个问题.顺带提一下,这篇文章不是比较IDE,所以不要说你讨厌某个IDE而 ...

  8. 解决hyerv的linux虚拟机网卡地址重启发生变化的问题

    关于linux的虚拟机,当进行虚拟机copy的时候,由于虚拟机配置文件里面会记录网卡的mac地址,所以导致linux里面记录的网卡地址和实际的会有冲突,这样linux会自动把网卡地址提高. 比如原来是 ...

  9. Project Euler:Problem 47 Distinct primes factors

    The first two consecutive numbers to have two distinct prime factors are: 14 = 2 × 7 15 = 3 × 5 The ...

  10. C primer plus 读书笔记第六章和第七章

    这两章的标题是C控制语句:循环以及C控制语句:分支和跳转.之所以一起讲,是因为这两章内容都是讲控制语句. 第六章的第一段示例代码 /* summing.c --对用户输入的整数求和 */ #inclu ...