菜鸟学Android笔记(四十一):JSP指令元素——page指令

来源:互联网 发布:sql replace 正则 编辑:程序博客网 时间:2024/05/02 02:20

JSP有三大指令,分别是page、include、taglib

这些指令的作用互不相同,下面将首先介绍page指令

一、page指令的作用

主要用来设定JSP页面的全局属性,语法格式:

<@page 属性1=“属性1” 属性2=“属性2”%>
二、常用的属性及作用

1、language属性、extends属性、import属性

这三个属性比较简单,language属性目前只有java值,extends属性主要指生成的Servlet继承哪个父类,import属性主要是导包

三者格式分别是:

<@page language=“java” extends=“pack.class” import=“java.util.*” %>
2、autoFlush属性、buffer属性、info属性

暂时不讲

3、session属性

这个主要用来指定JSP页面是否可以使用session对象,默认是true

如何看出?新建一个1.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP '1.jsp' starting page</title>     </head>   <body>    This is my JSP page. <br>  </body></html>
那么我们看翻译过来的Servlet就会看到有session,

  final javax.servlet.jsp.PageContext pageContext;    javax.servlet.http.HttpSession session = null;    final javax.servlet.ServletContext application;    final javax.servlet.ServletConfig config;    javax.servlet.jsp.JspWriter out = null;    final java.lang.Object page = this;    javax.servlet.jsp.JspWriter _jspx_out = null;    javax.servlet.jsp.PageContext _jspx_page_context = null;

如果将session设置为false时,那么上面的session就会消失

4、isThreadSafe属性

用来指定是否支持多线程的使用,默认为true,表示支持多线程的使用

假如我们设置为false时,那么翻译过来的servlet又有什么变化?

之前的头部是这样:

public final class _1_jsp extends org.apache.jasper.runtime.HttpJspBase    implements org.apache.jasper.runtime.JspSourceDependent{}
现在变成了这样

5、errorPage属性和isErrorPage属性

这两个属性都是处理异常的,errorPage属性表示当前文件如果出现异常会跳转到指定的文件,isErrorPage属性则是指定该文件是否是能够处理异常的JSP文件

假设1.jsp是异常文件,error.jsp要跳转到的文件

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1" errorPage="error.jsp" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP '1.jsp' starting page</title>     </head>    <body>    <% int i=1/0;%>  </body></html>
error.jsp文件

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'error.jsp' starting page</title>      </head>    <body>   你出错啦~~ <br>  </body></html>

这时就会跳转到error.jsp文件

假如在error.jsp文件中添加 isErrorPage=false,那么就跳转不到error.jsp文件中来

扩展:我们可以在web.xml配置通用的错误跳转文件

 <error-page>  <error-code>500</error-code>  <location>/error/500.jsp</location>  </error-page>     <error-page>  <error-code>400</error-code>  <location>/error/400.jsp</location>  </error-page>    <error-page>  <exception-type>java.lang.Throwable</exception-type>  <location>/error/400.jsp</location>  </error-page>
6、pageEncoding属性和contentType属性

JSP页面的东西要经过几个步骤才能被浏览器访问

第一是:JSP页面写完后要保存

第二是:JSP页面要编译成Servlet

第三是:编译后的Servlet要服务器发送给客户端才能浏览

在这其中如果涉及到中文,就会出现乱码

保存的时候,如果用UTF--8保存,而编译的时候用GBK编译就会乱码(默认是ISO-8859-1)

假如我们用UTF-8保存,那么我们要指定编译用pageEncoding="UTF-8"指定编译的是UTF-8码表

但假如发送的是GBK码表也是不行的,所以我们应该设置contentType="text/html;charset="UTF-8"

但myecilpse是非常智能的,假如设置pageEncoding="UTF-8",那么保存和发送都是用UTF-8码表





0 0
原创粉丝点击