动态页面技术之JSP
1.什么是JSP技术
JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。
JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。
用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
2.JSP常用脚本
1>.<%java代码%> ----- 内部的java代码翻译到service方法的内部
2>.<%=java变量或表达式> ----- 会被翻译成service方法内部out.print()
3>.<%!java代码%> ---- 会被翻译成servlet的成员的内容
3.JSP注释及其注释作用范围
1>.Html注释:<!--注释内容--> ---可见范围 jsp源码、翻译后的servlet、页面显示html源码
2>.java注释://单行注释 /*多行注释*/ --可见范围 jsp源码 翻译后的servlet
3>.jsp注释:<%--注释内容--%> ----- 可见范围 jsp源码可见

注意:java注释必须在jsp内部才能使用
4.jsp的运行原理
jsp在第一次被访问时会被Web容器翻译成servlet,在执行
过程:
第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行
PS:被翻译后的servlet在Tomcat的work目录中可以找到

5.jsp常用指令
1>page指令:
1.属性最多的指令(实际开发中page指令默认)属性最多的一个指令,根据不同的属性,指导整个页面特性
格式:<%@ page 属性名1= "属性值1" 属性名2= "属性值2" ...%>
<%@ page language="java" contentType="text/html; charset=UTF-8" errorPage="/errorPage.jsp" pageEncoding="UTF-8"%>
2>language:jsp脚本中可以嵌入的语言种类
3>pageEncoding:当前jsp文件的本身编码---内部可以包含contentType contentType:response.setContentType(text/html;charset=UTF-8)
4>session:是否jsp在翻译时自动创建session
5>import:导入java的包
6>errorPage:当前页面出错后跳转到哪个页面
7>isErrorPage:当前页面是一个处理错误的页面
重点实例
1>import
在jsp中需要new一个fiel File file=new File("");则需要导入io.file 方法如下
格式:<%@page import="java.io.File"%>
2>errorPage
如果当前页面发生错误时跳转到指定的页面
格式:<%@ page language="java" contentType="text/html; charset=UTF-8" errorPage="/errorPage.jsp" pageEncoding="UTF-8"%>
8>include指令
页面包含(静态包含)指令:在当前jsp页面插入另一个jsp页面
格式:<%@ include file="被包含的文件地址"%>
<%@ include file="/Demo.jsp"%>
9.JSP的9个内置对象
什么是内置对象:
jsp被翻译成servlet之后,service方法中有9个对象定义并初始化完毕,我们在jsp脚本中可以直接使用这9个对象
|
名称 |
类型 |
描述 |
|
out |
javax.servlet.jsp.JspWriter |
用于页面输出 |
|
request |
javax.servlet.http.HttpServletRequest |
得到用户请求信息, |
|
response |
javax.servlet.http.HttpServletResponse |
服务器向客户端的回应信息 |
|
config |
javax.servlet.ServletConfig |
服务器配置,可以取得初始化参数 |
|
session |
javax.servlet.http.HttpSession |
用来保存用户的信息 |
|
application |
javax.servlet.ServletContext |
所有用户的共享信息 |
|
page |
java.lang.Object |
指当前页面转换后的Servlet类的实例 |
|
pageContext |
javax.servlet.jsp.PageContext |
JSP的页面容器 |
|
exception |
java.lang.Throwable |
表示JSP页面所发生的异常,在错误页中才起作用 |
10.JSP中常用的内置对象 out和pageContext
1>out对象
out的类型:JspWriter
out作用就是想客户端输出内容----out.write()
out缓冲区默认8kb 可以设置成0 代表关闭out缓冲区 内容直接写到respons缓冲器
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" buffer="0kb"%>
2>pageContext对象(jsp页面的上下文对象)
(1)pageContext对象是一个域对象必有得方法有:
setAttribute(String name,Object obj)
getAttribute(String name)
removeAttrbute(String name)
(2)pageContext还可以向指定的其他域中存取数据
setAttribute(String name,Object obj,int scope)
getAttribute(String name,int scope)
removeAttrbute(String name,int scope)
示例:
request.setAttribute("name", "1");
pageContext.setAttribute("name", "2");
//使用pageContext向request域中存储数据
pageContext.setAttribute("name", "3", PageContext.REQUEST_SCOPE);
//使用pageContext向 PageContext域中存储数据
pageContext.setAttribute("name", "4", PageContext.SESSION_SCOPE);
//使用pageContext向PageContext域中存储数据
pageContext.setAttribute("name", "5", PageContext.APPLICATION_SCOPE);
完整代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" buffer="8kb"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//使用pageContext向request域中存储数据
request.setAttribute("name", "1");
pageContext.setAttribute("name", "2");
pageContext.setAttribute("name", "3", PageContext.REQUEST_SCOPE);
pageContext.setAttribute("name", "4", PageContext.SESSION_SCOPE);
pageContext.setAttribute("name", "5", PageContext.APPLICATION_SCOPE);
%>
<%=request.getAttribute("name")%>
<%=pageContext.getAttribute("name",PageContext.REQUEST_SCOPE)%>
<!--findAttribute会按照域的作用范围 的从小到大找 -->
<!-- 域的作用范围 pageContext<request<session<ServletContext也叫application/-->
<%=pageContext.findAttribute("name")%> </body>
</html>
11.findAttribute(String name)查找名字为"name"的域
查找范围:所有的域
查找域顺序:从小到大
pageContext<session<request<application(ServletContext)
四个域的作用范围:
page域:当前jsp页面范围
request域:一次请求
session域:一次会话
application域:整个web应用
12.JSP页面包含的动态和静态标签
1>页面包含(静态包含):<!@ include file="被包含的页面"/>
2>页面包含(动态包含):<jsp:include page="被包含的页面"/>
相同点:在一个页面中包含另一个页面
不同点:静态包含:会直接合并include_1.jsp和include_2.jsp的页面代码并凑到一起在翻译成include_005f1_jsp.java后编译成include_005f1_jsp.class
只会生成1个.java和1个.class

动态包含:会分别生成include1_jsp.java 成include1_jsp.class 和include2_jsp.java 成include2_jsp.class 在需要include1_jsp.java编译运行时找到include2_jsp.java

完整代码:
include1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>this is include_1 page</h1>
<%@ include file="include_2.jsp" %> </body>
</html>
include2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>this is include_2 page</h1>
</body>
</html>
include_1
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>this is include1 page</h1>
<!-- 在当前页面种包含另一个页面 -->
<jsp:include page="/include2.jsp"></jsp:include>
</html>
include_2
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>this is include2 page</h1>
</body>
</html>
动态页面技术之JSP的更多相关文章
- JavaEE之动态页面技术(JSP/EL/JSTL)
动态页面技术(JSP/EL/JSTL) JSP技术 jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%= ...
- java ->动态页面技术(JSP)
动态页面技术(JSP/EL/JSTL) JSP技术 jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%= ...
- 动态页面技术(JSP)
JSP技术 jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ----- ...
- 动态页面技术JSP/EL/JSTL
本节内容: jsp脚本和注释 jsp运行原理 jsp指令(3个) jsp内置/隐式对象(9个) jsp标签(动作) EL技术 JSTL技术 JavaEE的开发模式 动态页面技术:就是在html中嵌入j ...
- JavaWeb之动态页面技术JSP/EL/JSTL
一.JSP技术 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> - ...
- JSP动态页面技术
1.JSP和html的区别 处理过程的区别 HTML 浏览器发送一个请求到服务器,服务器找到这个页面直接返回. JSP 浏览器发送一个请求道服务器,服务器判断到时.jsp结尾,去调用JSP引擎,JSP ...
- 动态页面技术----JSP技术
1995年java诞生,没有jsp,只有Servlet, Servlet开发:Servlet上嵌套html代码,非常繁琐. 1998年,出现jsp,方便写html代码,并且可以在html代码中嵌套ja ...
- 03013_动态页面技术-JSP
1.jsp的出现 2.jsp脚本和注释 (1)jsp脚本 ①<%java代码%> ----- 内部的java代码翻译到service方法的内部: ②<%=java变量或表达式> ...
- JSP:一种服务器端动态页面技术的组件规范。
java Servlet page:java服务器端页面,会增加服务器的压力. jsp文件会被容器转换成一个Servlet类然后执行. JSP页面中的注释: HTML注释:<!-- 注释中的ja ...
随机推荐
- 无法启动DISTRIBUTED TRANSACTION COORDINATOR解决方法
有时候我们需要进行COM应用程序的权限设置,控制面板-->管理工具-->组件服务-->然后依此展开:组件服务-->计算机-->我的电脑-->DCOM 配置,接下来找 ...
- 敏感词过滤的算法原理之 Aho-Corasick 算法
参考文档 http://www.hankcs.com/program/algorithm/implementation-and-analysis-of-aho-corasick-algorithm-i ...
- 为阿里云域名配置免费SSL支持https加密访问简单教程
阿里云之前有免费ssl入口申请,现在已经关闭了.那么现在怎么为自己的域名配置https呢? 首先打开阿里云域名控制台,如以下界面.(这里暂且用我的这个域名讲解吧) 如上图点击ssl证书,点击单域名免 ...
- Windows运行常用命令(win+R)
Windows运行常用命令(win+R) 1.calc: 启动计算器 2.notepad: 打开记事本 3.write: 写字板 4.mspaint: 画图板 5.snippingtool:截图工具, ...
- 基于wavesurfer.js的超大音频的渐进式请求实现
最近在对超大音频的渐进式请求实现上面消耗了不少时间,主要是因为一对音频的基本原理不太理解,二刚开始的时候太依赖插件,三网上这块的资料找不到只能靠自己摸索.由于交互复杂加上坑比较多,我怕描述不清,这里主 ...
- 工具篇-大数据组件的一些快捷Shell操作
一.Hbase 1. HBase shell窗口进入 执行hbase shell 2. HBase表的创建 # 语法:create <table>, {NAME => <fam ...
- #Go# 点滴积累
此篇仅为不断记录趟过的坑 StringToTimestamp import ( "time" ) const TimeFormat = "2006-01-02T15:04 ...
- dotnet publish
发布Release版本:dotnet publish --configuration Release 发布Debug版本:dotnet publish --configuration Debug
- docker with devicemapper storage driver
storage driver的选择依据很多的条件,比如发行版版本,团队技术积累,稳定性等. device mapper是redhat/centos中最适合的, 稳定性也可以,内核原生支持,基于块设备, ...
- 我也介绍下sizeof与strlen的区别
本节我也介绍下sizeof与strlen的区别,很简单,就几条: 1. sizeof是C++中的一个关键字,而strlen是C语言中的一个函数:2. sizeof求的是系统分配的内存总量,而strle ...