Jsp学习(2)
Jsp的三大指令
(1)、include
作用:相当于把当前页面去包含页面
语法:
<%@include file="/common/test.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 'demo1.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
<%@include file="/common/header.jsp" %>
This is my JSP page.网页的身体部分 <br>
</body>
</html>
被包含的页面如下
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>
<head>
<title>JSP 'header.jsp' starting page</title>
</head> <body>
This is header JSP page. <br>
<h1>网页的头部</h1>
</body>
</html>
这个时候浏览器会如下显示
这个时候我们去浏览其对应的demo1_jsp.java文件,发现只有demo_1.jsp页面被翻译和编译了,我们打开其文件,
out.write("\r\n");
out.write("\r\n");
out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");
out.write("<html>\r\n");
out.write(" <head>\r\n");
out.write(" <base href=\"");
out.print(basePath);
out.write("\">\r\n");
out.write(" \r\n");
out.write(" <title>My JSP 'demo1.jsp' starting page</title>\r\n");
out.write(" \r\n");
out.write("\t<meta http-equiv=\"pragma\" content=\"no-cache\">\r\n");
out.write("\t<meta http-equiv=\"cache-control\" content=\"no-cache\">\r\n");
out.write("\t<meta http-equiv=\"expires\" content=\"0\"> \r\n");
out.write("\t<meta http-equiv=\"keywords\" content=\"keyword1,keyword2,keyword3\">\r\n");
out.write("\t<meta http-equiv=\"description\" content=\"This is my page\">\r\n");
out.write("\t<!--\r\n");
out.write("\t<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">\r\n");
out.write("\t-->\r\n");
out.write("\r\n");
out.write(" </head>\r\n");
out.write(" \r\n");
out.write(" <body>\r\n");
out.write(" \t");
out.write("\r\n");
out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");
out.write("<!-- \r\n");
out.write("<html>\r\n");
out.write(" <head>\r\n");
out.write(" <title>JSP 'header.jsp' starting page</title>\r\n");
out.write(" </head>\r\n");
out.write(" \r\n");
out.write(" <body>\r\n");
out.write(" This is header JSP page. <br>\r\n");
out.write(" <h1>网页的头部</h1>\r\n");
out.write(" </body>\r\n");
out.write("</html>\r\n");
out.write(" -->\r\n");
out.write(" <h1>网页的头部</h1>");
out.write("\r\n");
out.write(" This is my JSP page.网页的身体部分 <br>\r\n");
out.write(" </body>\r\n");
out.write("</html>\r\n");
发现被包含的页面直接翻译到了包含页面(demo1.jsp)中去了,合并成一个jsp文件一同去翻译和运行,这种包含也叫“静态包含”。
另外我们同时发现,既然合并在一起了,那么被包含页面的全局html,诸如html、body都可以直接去掉了。那么现在被包含的页面就可以写成如下的形式
<%@ page pageEncoding="UTF-8"%>
<h2>我是网页的头部,我只有一句话</h2>
浏览器的显示如图:
(2)、page指令
作用:告诉tomcat服务器如何翻译jsp文件
常用的page指令如下:
- language="java" --告诉服务器使用什么动态语言来翻译jsp文件
- import="java.util.*" --告诉服务器java文件使用什么包, 导入包,多个包之间用逗号分割。
- pageEncoding="utf-8" --告诉服务器使用什么编码翻译jsp文件(成java文件)
- contentType="text/html; charset=utf-8" 服务器发送浏览器的数据类型和内容编码
(注意:在开发工具中,以后只需要设置pageEncoding即可解决中文乱码问题,但这只是在eclipse中起到作用,如果换成了记事本去写代码,记事本的默认代码的保存方式是GBK)
假设我们用记事本去开发jsp直接保存在tomcat的项目jsp文件下,结果和代码如下图所示
这个时候我们改改记事本的编码方式,另存为utf-8,同时访问,则结果如图(注意这个时候浏览器端的编码方式也是utf-8,浏览器自身调节的)
我们继续做实验,将保存的方式改为gbk(ansi),同时设置pageEncoding="gbk"
继续去访问,发现没有问题了。。(这个时候浏览器端的编码方式也是gbk,浏览器自身调节的)
经过以上的实验,就可以得出结论一下的结论,当我们在记事本中以字符的形式输入后要保存,但在硬板中都是以八个0或1的字节形式存储,这个时候我们就需要对其进行编码,(刚才的另存为),当我们保存后在tomcat去访问的时候,首先服务器就会去读取文件,这个时候我们知道打开java文件都是可以有中文的,即字符文件,从硬盘的字节到java源文件,中间经过过了一个pageEncoding设置的编码方式去翻译,然后编译过程与前面的pageEncoding方式相同去编译成字节码文件(字节),然后服务器又以contentType="text/html; charset=utf-8"的编码方式发送给浏览器,最后浏览器根据读取contentType来识别去读取响应的内容
如果去掉contentType的设置,那么contentType会参考pageEncoding的编码值,所以一般情况下只需设置pageEncoding来完成就行,如图:
5、errorPage="common/error.jsp" 指定处理错误页面的位置
示例如下:
<%@ page language="java" import="java.util.*"
pageEncoding="UTF-8" errorPage="common/error.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<% int i=100/0; %>
</body>
</html>
处理错误的页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
亲,系统发生错误,管理员正在抢救中。<br>
</body>
</html>
结果:
6、isErrorPage="false" 指定当前页面是不是错误处理页面,false,不是错误处理页面,则不能使用exception内置对象;true,是错误处理页面,可以使用exception内置对象。
示例代码:
<%@ page language="java" import="java.util.*"
pageEncoding="UTF-8" errorPage="common/errorpage.jsp"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<% int i=100/0; %>
</body>
</html>
处理错误代码的页面
<%@ page language="java"
import="java.util.*"
pageEncoding="UTF-8"
isErrorPage="true" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
亲,系统发生错误,管理员正在抢救中。<br>
错误原因:<%=exception.getMessage() %>
</body>
</html>
结果如图:
配置全局的错误处理页面:(一旦项目下有错误,就把所有错误页面抛到这里)但是errorpage(errorPage="common/errorpage.jsp")是比全局设置优先的。
<!-- 全局错误配置 -->
<error-page>
<error-code>500</error-code>
<location>/common/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/common/404.html</location>
</error-page>
就可以得到如图的效果了
6、session: 是否开启session功能。false,不能用session内置对象;true,可以使用session内置对象。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" session="true"%>
7、buffer: jsp页面的缓存区大小。
在jsp页面中的内置对象out是jspWriter的对象,该对象不像PrintWrite一样直接将数据发给客户端,而是在其中间步骤加入了一个jspWrite的缓冲区,当缓冲区满了之后才会将数据发送客户端,该缓冲区的大小就是由这个buffer指定,默认大小是8kb。
8、 isELIgnore: 是否忽略EL表达式。
Jsp学习(2)的更多相关文章
- JSP学习网站
JSP学习网站 http://www.yiibai.com/jstl/ http://www.w3cschool.cc/jsp/jsp-jstl.html
- JSP学习笔记
JSP学习笔记 Jsp网页主要分为Elements与Template Data两部分. Template Data:JSP Container不处理的部分,例如HTML内容 Elements:必须经由 ...
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- JSP 学习二
在基于昨天对JSP学习的基础上,今天我们来学习JSP的指令和JSP 对中文的处理. 一.JSP指令简介 JSP 指令是为JSP引擎而设计,它并不直接产生任何可见的输出,而只是告诉引擎如何处理JSP页面 ...
- java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象
JSP学习笔记 1.什么是jsp JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP/Servlet规范.JS ...
- (转) jsp学习笔记
fromhttp://www.cnblogs.com/tao975/p/4445070.html 什么是JSP JSP的优势 JSP的劣势 JSP与PHP的比较 JSP工作原理 JSP的九大内置对象 ...
- jsp学习:jsp学习阶段性总结2019.9.21
Jsp学习 jsp语法格式: 脚本程序:<% 代码片段 %> jsp声明:<%! declaration; [ declaration; ]+ ... %> 表达式:<% ...
- JSP学习(1)
JSP学习(1) 什么是Web应用程序 可以Web访问呢的应用程序,用户只需要浏览器即可访问 静态网页与动态网页 静态网页:网页中内容固定 动态网页:内容通过程序动态显示,自动更新 Java Web应 ...
- JSP学习(4)
JSP学习(4) JavaBean简介 符合某种规范的Java类.使用JavaBean的好处是解决了代码重复编写,减少代码冗余,功能区分明确,提高代码的可维护性 JavaBean设计原则 JSP动作元 ...
- JSP学习(5)
JSP学习(5) 保存用户状态的两大机制 session对象 Cookie Cookie简介 是Web服务器保存在客户端的一系列文本信息 典型应用 判断注册用户是否已经登录 购物车处理 作用 对特定对 ...
随机推荐
- Windows下MySQL数据库备份脚本(二)
说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL S ...
- 《C和指针》章节后编程练习解答参考——6.3
<C和指针>——6.3 题目: 编写一个函数,把参数字符串中的字符反向排列. 函数原型: void reverse_string(char *string); 要求: 使用指针而不是数组下 ...
- CUDA获取显卡数据
一个简单的获取Nvidia显卡信息的程序 #include<iostream> int main() { cudaDeviceProp prop; int count; cudaGetDe ...
- Hibernate 注解 没有加@Column一样会在数据库创建这些字段
Hibernate 注解 没有加@Column一样会在数据库创建这些字段 如下一个注解类: package com.hyy.hibernate.one_to_many.domain; import j ...
- Knockout绑定audio的pause事件导致音频无法停止
...时间过得真快, 一晃4天已经过去了, 然而自己并没有动笔写什么. 自省. 看了看今天的工作, 感觉好像没什么可写的. 不禁在想是不是一天一篇有点儿难. 再一想, 这分明就是在给自己找理由. 就是 ...
- 通过Microsoft Azure服务设计网络架构的经验分享
作者 王枫 发布于 2014年4月8日 本文从产品设计和架构角度分享了Microsoft Azure网络服务方面的使用经验,希望你在阅读本文之后能够了解这些服务之间,从而更好地设计你的架构. Mic ...
- 创建用于自定义SharePoint解决方案部署的Visual Studio项目
转:http://soft.zdnet.com.cn/software_zone/2007/0903/488083.shtml 在基于SharePoint的开发中,我们通常会在WSS的TEMPLATE ...
- HNOI 2008:水平可见直线
Description 在xoy直角坐标平面上有n条直线L1,L2,...Ln,若在y值为正无穷大处往下看,能见到Li的某个子线段,则称Li为 可见的,否则Li为被覆盖的. 例如,对于直线: L1:y ...
- gmail
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...
- windows apache 配置多个服务站点
原文 方法一:多个APACHE服务 更改第一个站点的根目录: 在文件Apache2.2/conf/httpd.conf中查找 DocumentRoot 属性,将后面的路径改为你的主站点的路径, 如:D ...