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. Glide制作圆形图片

    上效果图: 第一步: AndroidStudio添加依赖库: compile 'com.github.bumptech.glide:glide:3.5.2' 第二步: <ImageView an ...

  2. WPS怎样设置多级标题(如四级标题)

    WPS期初,乍一看最多只能设置三级标题. 怎样设置四级以上标题呢? 这里以设置四级标题为例: 点击‘视图’->'大纲', 假如,现在2.3.3这一行是三级标题: 在下拉框里选择‘4级’就可以了. ...

  3. [转]Windows平台下安装Hadoop

    1.安装JDK1.6或更高版本 官网下载JDK,安装时注意,最好不要安装到带有空格的路径名下,例如:Programe Files,否则在配置Hadoop的配置文件时会找不到JDK(按相关说法,配置文件 ...

  4. BitmapFactory.decodeResource(res, id); 第一个参数跟第二个参数有什么关系?

    BitmapFactory.decodeResource(res, id); res= getResources();activity的方法 id = R.drawable.x  

  5. GitHub上最火的开源项目SlidingMenu导入出错的终极解决方案

    SlidingMenu 开源项目下载地址 : https://github.com/jfeinstein10/slidingmenu Actionbarsherlock 开源项目下载地址 :http: ...

  6. Android 手机上安装并运行 Ubuntu 12.04(转,没实测)

    设备需要root权限,并且安装了BusyBox最小 1GHz 处理器(推荐)Android 系统版本 2.1 或以上Android 设备需要自定义的ROM固件SD卡至2.5GB (安装大映像的需要3. ...

  7. /etc/fstab自动挂载文件系统

    打开 /etc/fstab 文件 [root@www ~]# vi /etc/fstab 默认情况下,fstab中已经有了当前的分区配置,内容可能类似: # <file system> & ...

  8. HDOJ 1020 Encoding

    Problem Description Given a string containing only 'A' - 'Z', we could encode it using the following ...

  9. visual studio 调试grunt

    原文地址: https://yoavniran.wordpress.com/2015/06/25/debug-grunt-tasks-in-visual-studio-2015/

  10. Hbase 设计与开发实战

    Hbase 概述 大数据及 NoSQL 的前世今生 传统的关系型数据库处理方式是基于全面的 ACID 保证,遵循 SQL92 的标准表设计模式(范式)和数据类型,基于 SQL 语言的 DML 数据交互 ...