动态页面技术之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 ...
随机推荐
- LOJ#2082. 「JSOI2016」炸弹攻击 2(计算几何+双指针)
题面 传送门 题解 我们枚举一下发射源,并把敌人和激光塔按极角排序,那么一组合法解就是两个极角之差不超过\(\pi\)且中间有敌人的三元组数,预处理一下前缀和然后用双指针就行了 //minamoto ...
- 白帽hacker酷炫小技能大盘点!
白帽子是谁? 他们与一行行代码打交道,在“0”和“1”的世界中寻找风险,在IT产业软硬件核心技术和代码等自主研发能力不足.安全防护手段滞后.地下黑客业务已形成产业链的背景下,我国网络安全正面临日益严峻 ...
- Express-及中间件的简单理解
Express Express 是一个基于node平台,保持最小规模的灵活的 Node.js Web 应用程序开发框架,在Node.js基础上扩展对了web应用开发所需要的基础功能为 Web 和移动应 ...
- 架构师养成记--22.客户端与服务器端保持连接的解决方案,netty的ReadTimeoutHandler
概述 保持客户端与服务器端连接的方案常用的有3种 1.长连接,也就是客户端与服务器端一直保持连接,适用于客户端比较少的情况. 2.定时段连接,比如在某一天的凌晨建立连接,适用于对实时性要求不高的情况. ...
- SHELL脚本扩展
使用SED命令 sed称为流编辑器,命令格式如下: sed option script file -e script #指定多个命令 -f script_file #指定命令文件 -n #不需要为每个 ...
- C#-MVC-强数据类型、TempData、多表单、ajax
一.强数据类型 将某一个或一组数据在控制器传递到视图上去 一个视图里只能有一个强类型数据 强类型数据 - 将某一个或一组数据在控制器传递到视图上去,同ViewBag,数据更稳定,防止多数据传递中出现错 ...
- js 封装trim()方法,去掉空格
<script> //定义一个对象 - 名字是$ var $$ = function() {}; //原型 $$.prototype = { $id:function(id) { retu ...
- 前端JS批量添加校验数据唯一性
<script type="text/javascript"> //维护删除数组中的某一项 Array.prototype.remove = function(val) ...
- mysql中字符串1.1/1.2/1.2.2/1.2.5排序问题
1.创建查询函数:(split_pid为函数名称) create function split_pid(str varchar (1000),delimiter varchar(1)) returns ...
- Django中的Session--实现登录
Django中的Session--实现登录 Django Session Session Session 是什么 Session保存在服务端的键值对. 为什么要有 Session Cookie 虽然 ...