JSP 指令简介
- JSP指令( directive )是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。
- JSP指令的基本语法格式:
<%@指令属性名=“值” %>
举例: <%@ page contentType-=text/html:;charset=gb2312"%>
注意:属性名部分是大小写敏感的 - 在目前的.SP 2.0中,定义了page. indude和taglib这 3三种指令,每种指令中又都定义了一些各自的属性。
- 如果要在一个JSP页面中设置同-条指令的多个属性。可以使用多条指令语句单独设置每个属性,也可以使用同一条指令语句设置该指令的多个属性。
第一种方式:
<%@ page contentType=" text/html;charset=gb2312"%>
<%@ page import=“iava.util.Date”%>
第二种方式:
<%@ page contentType=“text/html;charset=gb2312”
Page 指令
page指令用于定义JSP页面的各种属性,无论page指令出现在JSP页面中的什么地方,它作用的都是整个JSP页面,为了保持程序的可读性和遵循良好的编程习惯, page指令最好是放在整个JSP页 面的起始位置。page 指令常用得属性
- import 属性
import 属性:指定当前JSP页面对应的Servlet需要导入的类。
<%@page import="java.util.Date"%>
<body>
<%= new Date() %>
</body>
- session 属性
session属性:取值为true或false,指定当前页面的session 隐藏变量是否可用,也可以说访问当前页面时是否一定要生成HttpSession对象
<%@ page session="false" %>
//下面得 <% %> 中session 变量不可用
- errorPage 和 isErrorPage属性
errorPage指定若当前页面出现错误的实际响应页面时什么。其中 / 表示的是当前WEB应用的根目录。
在响应error.jsp 时,JSP引擎使用的请求转发的方式.
isErrorPage 指定当前页面是否为错误处理页面,可以说明当前页面是否可以使用exception 隐藏变量。需要注意 isErrorPage=“true”,并使用exception的方法了,一般不建议能够直接访问该页面
<%@ page errorPage="/error.jsp" %>
//页面中发生错误时 会跳转到 error.jsp 页面 比如
<%
int i = 10/0;
%>
error中代码:
<body>
ERROE,SOORY SIR
</body>
结果:
可以使用exception 时
include指令
- include指令用于通知JSP引擎在翻译当前JSP页面时将其他文件中的内容合并进当前JSP页面转换成的SerMet源文件中,这种在源文件级别进行引入的方式称之为静态引入,当前JSP页面与静态引入的页面紧密结合为一个Servlet。
- 语法:
<%@ include file=“relativeURL”%>
其中的fle属性用于指定被引入文件的相对路径。 - 细节:
被引入的文件必须遵循JSP语法,其中的内容可以包含静态HTML、JSP脚本元素、JSP指合和JSP行为元素等普通JSP页面所具有的一切内容。
在将JSP文件翻译成Servlet源文件时, JSP引擎将合并被引入的文件与当前JSP页面中的指令元素(设置pageEncoding属性的page指令除外) ,所以,除了import和pageEnoding属性之外,page指合的其他属性不能在这两个页面中有不同的设置值。
a.jsp 中代码
<body>
<h1>AAA Page</h1>
<%
//定义 一个字符串
String str = "abcd";
%>
<!-- 在a.jsp 中包含 b。jsp -->
<%@ include file = "b.jsp" %>
</body>
b.jsp 中代码
<body>
<h1>BBB Page</h1>
<%= str %>
</body>
结果:
查看代码:
他只形成一个jsp 文件
JSP标签 概念
- JSP还提供了-种称之为Action的元素,在JSP页面中使用
JSP还提供了-种称之为Action的元素,在JSP页面中使用处理复杂业务逻辑的专用功能。 - Action元素 采用XML元素的语法格式, 即每个Action元素在JSP页面中都以XML标签的形式出现。
- JSP规范中定义了一些标准的Action元素,这些元素的标签名都以isp作为前缀,并且全部采用小写,例如,jsp:include.isp:forward等等。
jsp:forward & jsp:include 标签
jsp:include标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中, 这种在JSP页面执行时的引入方式称之为动态引入。
jsp:include
<body>
<jsp:include page="/a.jsp"></jsp:include>
</body>
与 include 标签得根本区别就是它创建两个 jsp 文件
它还可以传递一些参数
jsp:forward
<body>
//<jsp:forward>标签 得请求转发方式
<jsp:forward page="/a.jsp"></jsp:forward>
//servlet 得请求转发方式
<%
request.getRequestDispatcher("/b.jsp").forward(request, response);
%>
</body>
解决中文乱码问题
(1)
(2)更改tomcate 配置文件(server.xml)和映射
server 文件中
eclipse 中server 服务 的映射关系
然后在取值之前设置编码方式即可(GET & POST 都支持,不做更改则只对 POST 有效)