动态页面技术之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>页面包含(静态包含):<[email protected] 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>

 

 

原文地址:https://www.cnblogs.com/asndxj/p/9893041.html

时间: 2024-10-29 00:32:45

动态页面技术之JSP的相关文章

JavaEE之动态页面技术(JSP/EL/JSTL)

动态页面技术(JSP/EL/JSTL) JSP技术 jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ----- 会被翻译成service方法内部out.print() 3)<%!java代码%> ---- 会被翻译成servlet的成员的内容 jsp注释:  不同的注释可见范围是不同 1)Html注释:<!--注释内容--> ---可见范围 jsp源码.

动态页面技术(JSP/EL/JSTL)

一.JSP技术 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ----- 会被翻译成service方法内部out.print() 3)<%!java代码%> ---- 会被翻译成servlet的成员的内容 jsp注释:  不同的注释可见范围是不同 1)Html注释:<!--注释内容--> ---可见范围 jsp源码.翻译后的servlet.页面  

JavaWeb学习之动态页面技术(JSP/EL/JSTL)

JSP技术 1.jsp脚本和注释 jsp脚本: 1.<% java代码%>    内部的Java代码翻译到service方法的内部 2.<%=java 变量或表达式%>    会被翻译成service方法内部out.print() 3.<%! java 代码%>    会被翻译成servlet的成员(成员变量或者成员方法)的内容 jsp注释:不同的注释可见范围是不同的 1.Html注释:<!--注释内容-->     可见范围有jsp源码.翻译后的servl

03013_动态页面技术-JSP

1.jsp的出现 2.jsp脚本和注释 (1)jsp脚本 ①<%java代码%> ----- 内部的java代码翻译到service方法的内部: ②<%=java变量或表达式> ----- 会被翻译成service方法内部out.print() : ③<%!java代码%> ---- 会被翻译成servlet的成员的内容. 1 <%@ page language="java" contentType="text/html; chars

动态页面技术----EL技术、JSTL技术,javaEE的开发模式

1 EL技术 1.1 EL 表达式 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写, EL出现的目的是要替代jsp页面中脚本的编写,就是简化java代码. 1.2 EL最重要的作用:从域中取出数据 jsp脚本:<%=request.getAttribute(name)%> EL表达式替代上面的脚本:${requestScope.name} 1.2.1获得四大域中的数据 格式 ${EL表达式} EL获得pageContext域中的值:${pageSco

动态页面技术EL

1.EL概述: EL表达式可以嵌入再JSP页面内部,减少JSP脚本的编写 EL出现的目的是要替代JSP页面中脚本的编写 EL最重要的作用就是从域中取出数据: 引入: JSP中<%=request.getAttribute(name);%> EL只需这样写:${requestScope.name} 具体介绍: 创建一个User类: package domain; public class User { private int id; private String name; private St

J2EE动态网页技术—JSP

学习JSP,我们需要知道的是什么是JSP?JSP有什么特点?JSP与svelte有什么关系? 第一个概念:JSP是服务器端运行的一种脚本语言,这类似的语言还有CGI.ASP.PHP等.          CGI:采用单进程模式,每次请求服务器端的一个服务,都需要启动一个新的线程.所以当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,加重了服务器的负担,使服务器的执行效率变得越来越低下. ASP:是微软所开发一种后台脚本语言,特点简单易用,其局限性在于只能在微软的服务器平台上良好运行,

jsp动态页面

1. 什么是动态网页? 动态网页是指在服务器端运行的程序或者网页,它们会随不同客户.不同时间,返回不同的网页. 注意:在静态网页中插入flash ,虽然flash是在动的,但是并不是说这个网页就是动态网页.参考动态网页的特点. 2. 动态网页的特点? (1).交互性:即网页会根据用户的要求和选择而动态改变和响应.采用动态网页技术的网站可以实现与用户的交互功能. (2).自动更新:无需手动操作,便会自动生成新的页面,可以节省工作量. (3).随机性:即当不同的时间.不同的人访问同一网址时会产生不同

DHTML(动态HTML)前台页面技术介绍

一. DHTML(动态HTML)前台页面技术介绍 1. DHTML介绍 DHTML包含以四个方面的内容: (1).HTML 4.0 :超文本标记语言,网页文档的主体,以文本文件形式存储,由浏览器翻译后展现出丰富多彩的页面. (2).CSSL:客户端脚本语言,主要有JavaScript(JS),VBScript(VBS),JScript.Netscape主要支持JS,IE主要支持JS,VBS和JScript. (3).DOM:文档对象模型,是W3C推广的web技术标准之一,它将网页中的内容抽象成对