JSP简单介绍

JSP: 全称:java Server Page

由sun 公司提供的 ,是一种动态的网页编程技术,是java 服务端的动态资源

它相比 html 而言,html 只能为用户提供静态数据,而 Jsp 技术允许在页 面中嵌套 java 代码,为用户提供动态数据

相比 servlet 而言,servlet很难对数据进行排序,而jsp不仅可以产生动态数,也比较容易对数据进行排版

不管是 JSP 还是 Servlet,虽然都可以用于开发动态 web 资源。但由于这 2 门技术各自的特点,在长期的软件实践中,人们逐渐把 servlet 作为 web 应用 中的控制器组件来使用, 而把 JSP 技术作为数据显示模板来使用。

其实 Jsp 就是一个 Servlet,当我们第一次访问 Jsp 的时候,Jsp 引擎都会 将这个 Jsp 翻译 成一个 Servlet,这个文件存放在 Tomcat 中的 work 目录中。

为什么说JSP就是Servlet呢?
因为jsp本身就是一个服务端的页面,就是服务器把把数据write出去(服务器自动的把数据w),而servlet是手动write出去的.(本质就是通过Servlet把数据write出去)

Jsp的基础语法:

注释: :两类三种

在 JSP 中支持两种注释的语法操作,一种是显示注释,这种注释是允许客 户端看见的; 另一种是隐式注释,此种注释是客户端无法看见的

1 显示注释:
在客户端可以看到注释

1 继承HTML风格的注释
&lt;!-- HTML注释 --&gt;		<!-- 这是HTML注释 -->

2 隐式注释:
在客户端不能看到注释:

1 JSP自己的注释:
<%-- JSP注释-- % > <%-- 这是JSP注释 --%>

2 继承Java风格的注释:
//单行注释 /*多行注释/

scriptlet:(脚本小程序)

在 JSP 中最重要的部分就是 Scriptlet(脚本小程序), 所有嵌入在 HTML 代 码中的 Java 程序都必须使用 Scriptlet 标记出来,在 JSP 中一共有三种 Scriptlet 代码

Scriptlet(脚本小程序),所有嵌入在 HTML 代码中的 Java 程序。
在 JSP 中一共有三种 Scriptlet 代码:都必须使用 Scriptlet 标记出来

1、java脚本段	
	语法:&lt;% // java脚本段  %&gt;
	特点:可以定义局部变量,编写java语句;被编译之后会生成在service方法体中
2、声明
	语法:&lt;%! // 声明全局变量  %&gt;
	特点:可以声明全局变量,方法等;被编译之后生成在servlet类体中
3、输出
	语法:&lt;%= %&gt;
	特点:可以输出变量、表达式或字面量;被编译之后生成在service方法体中;相当于out.print()输出

在这里插入图片描述
JSP指令标签:
JSP 的指令标签用来控制整个 jsp 的行为,就当前 JSP 页面的某些方面对 JSP 转换器作出指示

page指令
格式:<%@page 属性=“属性值” 属性=“属性值” %>

	常用属性:
		language:支持的语言,当前只支持java
		contentType:响应类型及编码格式
		pageEncoding:编码
		import:导包,只有import这个属性可以多次设置,其他属性只能设置一次
		isErrorPage:当前页面是否是处理报错的页面,默认是false
		errorPage:当页面报错时该跳转到什么页面
		
	注:JSP页面的编码以contentType中的charset的值为准,如果未设置charset值,则以pageEncoding的属性值为准;如果都没有,则默认ISO-8859-1

在这里插入图片描述
在这里插入图片描述
include静态包含:

格式:<%@include file=“文件的路径” %>

		特点:相当于将包含的页面中的内容直接直接非复制粘贴;最终只会生成一个java文件;不能有同名变量。
		优缺点:运行效率高一点点。耦合性较高,不够灵活

在这里插入图片描述
include 动态包含

JSP 动作标签:

动作标签是由 tomcat(服务器)来解释执行!与 java 代码一样,都是在服务器 端执行

html 由浏览器来执行
在这里插入图片描述
include动态包含:

		无参:
			格式:<jsp:include page="包含的页面路径"></jsp:include>
		有参
			<jsp:include page="包含的页面路径">
				<jsp:param value="参数值" name="参数名"/>
			</jsp:include>
		特点:相当于方法的调用,会生成多个java文件;可以出现同名变量
		
		注:
			1、<jsp:include>双标签中不能包含任何内容,包括换行和空格,除非有参数
			2、<jsp:param>的value属性值支持表达式,name属性值不支持
				The name attribute of the jsp:param standard action does not accept any expressions

在这里插入图片描述
九大内置对象:
介绍:
:

1.request 对象

request 对象是 javax.servlet.httpServletRequest 类型的对象。 该对 象代表了客户端的请求信息,主要用于接受通过 HTTP 协议传送到服务器的数据。
(包括头信息. 系统信息. 请求方式以及请求参数等)。request 对象的作用 域为一次请求。

2.response 对象

response 代表的是对客户端的响应,主要是将 JSP 容器处理过的对象传回 到客户端。response 对象也具有作用域,它只在 JSP 页面内有效。

3.session 对象

session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个 用户都生成一个 session 对象,用于保存该用户的信息,跟踪用户的操作状态。
session 对象内部使用 Map 类来保存数据,因此保存数据的格式为 “Key/value”。 session 对象的 value 可以是复杂的对象类型,而不仅仅局限于字 符串类型。

4.application 对象

application 对象可将信息保存在服务器中,直到服务器关闭,否则 application 对象中保存的信息会在整个应用中都有效。
与 session 对象相比,application 对象生命周期更长,类似于系统的“全局 变量”。

5.out 对象

out 对象用于在 Web 浏览器内输出信息,并且管理应用服务器上的输出缓 冲区。
在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲 区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输 出流。

6.pageContext 对象

pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP 页面的 out. request. reponse. session. application 等对象。
pageContext 对象的创建和初始化都是由容器来完成的,在 JSP 页面中可 以直接使用 pageContext 对象

7.config 对象

config 对象的主要作用是取得服务器的配置信息。通过 pageConext 对象 的 getServletConfig() 方法可以获取一个 config 对象。
当一个 Servlet 初始化时,容器把某些信息通过 config 对象传递给这个 Servlet。
开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页 面提供初始化参数。

8.page 对象

page 对象代表 JSP 本身,只有在 JSP 页面内才是合法的。 page 隐含对 象本质上包含当前 Servlet 接口引用的变量,类似于 Java 编程中的 this 指针。

9.exception 对象

exception 对象的作用是显示异常信息,只有在包含 isErrorPage=“true” 的页面中才可以被使用,在一般的 JSP 页面中使用该对象将无法编译 JSP 文件。
excepation 对象和 Java 的所有对象一样,都具有系统提供的继承结构。 exception 对象几乎定义了所有异常情况。
如果在 JSP 页面中出现没有捕获到的异常,就会生成 exception 对象,并 把 exception 对象传送到在 page 指令中设定的错误页面中,然后在错误页面中 处理相应的 exception 对象

统计:
JSP四大域对象:

    pageContext.setAttribute("uname", "zhangsan");
	request.setAttribute("uname", "lisi");
	session.setAttribute("uname", "wangwu");
	application.setAttribute("uname", "zhaoliu");

两个输出对象:

out.print(“hello”);
response.getWriter().write(“Hello”);

一个配置对象:

out.print(config.getServletName());

当前JSP本身
page

异常信息对象:
(只有jsp页面设置属性isErrorPage="true"才能使用)

out.print(exception.getMessage());

EL表达式:

EL(Expression Language) 是为了使 JSP 写起来更加简单。表达式语言的 灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式 的方法,让 Jsp 的代码更 加简化。

语法:${域对象的key值}

	注意:
	
		1、el表达式一般操作的是域对象中的值,无法操作局部变量
		2、el的取值范围有4个:pageContext、request、session、application,分别代表当前页、一次请求、一次会话、整个应用程序
		3、el表达式默认从小范围到大范围取值,如果取到值则显示,未取到则继续往大范围找,找到即止;如果最终未找到,则显示空字符串""
		4、获取指定域对象范围的值,可以通过pageScope、requestScope、sessionScope、applicationScope
		5、el表达式获取JavaBean中的属性时,属性需要提供get方法(javax.el.PropertyNotFoundException: Property 'uname' not readable on type com.shsxt.po.User)

pageContext.setAttribute(“uname”, “zhangsan”);
request.setAttribute(“uname”, “lisi”);
session.setAttribute(“uname”, “wangwu”);
application.setAttribute(“uname”, “zhaoliu”);

// 通过pageContext对象设置指定域范围的值
pageContext.setAttribute("a", "aaa", PageContext.REQUEST_SCOPE);


// 将user对象存到作用域中
User user = new User();
user.setUname("admin");
user.setUpwd("123456");
request.setAttribute("user", user);


// 变量
String str = "周杰伦";

// List集合
List<String> list = new ArrayList<>();
request.setAttribute("list", list);

List<String> list2 = new ArrayList<>();
list2.add("aaa");
list2.add("bbb");
list2.add("ccc");
list2.add("ddd");
request.setAttribute("list2", list2);


// Map
Map<String,Object> map = new HashMap<String,Object>();
map.put("aaa", "111");
map.put("bbb", 2222);
map.put("ccc-a", 333);
request.setAttribute("map", map);


request.setAttribute("num1", 10);
request.setAttribute("num2", 50);

request.setAttribute("str1", "aaa");
request.setAttribute("str2", "bbb");
request.setAttribute("str3", "ccc");

获取域对象的值及判断

pageContext范围:${uname }
获取指定范围的值:${requestScope.uname }
获取JavaBean的值:${user }
获取JavaBean的指定属性值:${user.uname }
获取变量的值:${str }
判断JavaBean对象是否为空:${empty user }
判断域对象是否不为空:${!empty str }
判断List集合是否为空且长度是否小于1:${empty list }
判断List集合是否为空且长度是否小于1:${empty list2 }
得到List集合的长度:${list2.size() }
得到字符串的长度:${uname.length() }
获取List集合中指定下标的值:${list2[2] }
获取Map中指定key的值:${map.bbb }
获取Map中指定key的值:${map["ccc-a"] }

EL运算

加法:${1+1 } -- ${num1 + 10 } --- ${num1+num2 }
除法:${num2 / num1} --- ${num2 div num1 }
判断:${num1 > 0 } -- ${num2 > num1 } -- ${num1 + 10 > num2 } -- ${num1 + 10 >= num2 } -- ${num1 + 10 <= num2 + 1 }
等值比较:${num1 == num2 } -- ${str1 == str2 } -- ${str1 eq str3 }
字符串截取:${str1.substring(0,1) }

JSP内置对象的四种属性范围(重点):

四种属性范围

在JSP中提供了四种属性的保存范围,所谓的属性保存范围,指的就是一个设置的对象, 可以再多少个页面中保存并可以继续使用

page 范围 pageContext : 只在一个页面中保存属性,跳转之后无效
request 范围 request : 只在一次请求中保存,服务器跳转后依然有效
session 范围 session : 在一次会话范围中,无论何种跳转都可以使用,但是新开浏览 器无法使用
application 范围 application : 在整个服务器上保存,所有用户都可以用

使用哪个范围呢?在合理范围尽可能小

在 PageContext 类中存在四个表示属性范围的常量,可以直接通过这些常量指定 scope:

pageContext.PAGE_SCOPE
pageContext.REQUEST_SCOPE
pageContext.SESSION_SCOPE
pageContext.APPLICATION_SCOPE

在其它页面取值时,需要指定对应的作用域,或者通过 EL 表达式
<%=pageContext.getAttribute(“a”,pageContext.SESSION_SCOPE

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值