javaWeb之--jsp

1.什么是JSP
1.JSP全名为Java Server Pages
2.中文名叫java服务器页面
3.它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段和JSP标记
4.后缀名为(*.jsp)5.其根本是一个简化的Servlet设计
2.为什么要有JSP
1.直接使用Html文件是没有办法输出Java当中的信息
2.使用servlet来去输出一个网页非常的麻烦
3.于是就出现了jsp,又能写html,又能写Java代码
3.JSP脚本元素和变量
在JSP当中写Java代码:
	<%java代码%>: 内部的java代码翻译到service方法的内部
	<%=java变量或表达式>: 会被翻译成service方法内部out.print()
	<%!java代码%>: 会被翻译成servlet的成员的内容
4.JSP指令
1.什么是指令:
	JSP指令用于设置整个JSP页面的相关信息
	以及用于JSP页面与其它容器之间的通信
2.include指令:
	作用:
		表示在JSP编译时插入一个包含文件或者代码的文件(就是引用另外一个jsp到当前的jsp中)
		include指令所包含的文件名不能是一个变量url,只能是静态的文件名
3.page指令:
   page指令共有11个属性:
   
	contentType:
		contentType属性指定JSP页面的MIME和编码格式
		
	pageEncoding:
		pageEncoding属性用来指定JSP文件的编码格式
		
	import:
		在JSP中引入Java的包和类,多个包之间以逗号隔开
		
	session:
		指定当前页面是否能获得当前用户的session对象
		缺省是true
		如果指定为false,那么在该页面中无法使用session,使用的话会提示500错误
		
	errorPage:
		如果当前页面发生异常
		网页会重定向到errorPage所指定的页面进行处理
		
	isErrorPage:
		允许指定的JSP页面为错误处理页面
		
	language属性:
		指定页面中使用的脚本语言种类
		目前只支持java
		
	extends:
		用于指定该JSP生成的servlet继承自哪个父类
		必须指定包名加类名
		
	buffer:
		用来设置输出流缓冲区
		缓冲区的作用就是为了提高IO性能
		也就是说减少write的次数
		
	autoFlush:
		用来指定当输出流缓冲区满了的时候,是否自动刷新缓冲区
		
	isThreadSafe:
		缺省值为true
		指定该JSP文件是否支持多线程访问
		
	info:
		用来设置该jsp文件的介绍信息
		
	isELIgnored:
		用来标示是否支持EL表达式
5.动态包含指令和静态包含指令
1.静态包含:
	将两个jsp页面接着到一起, 然后再翻译成servlet
2.动态包含:
	各自翻译自己的页面,然后再引入
3.结构图如下:(上面的的是静态,后面的是动态)

在这里插入图片描述

6.请求转发
请求转发:
	<jsp:forward page="要转发的资源"></jsp:forward>
7.隐式对象
jsp被翻译成servlet之后,service方法中有9个对象定义并初始化完毕
1.request:
	得到用户请求信息对象
2.response:
	服务器向客户端的响应对象
3.config:
	服务器配置,可以取得初始化参数
4.application:
	所有用户的共享信息,就是servletContext
5.page:
	指当前页面转换后的Servlet类的实例
6.session:
	用来保存用户会话的信息
7.out:
	out的类型:JspWriter
	out作用就是想客户端输出内容 out.write()
	out缓冲区默认8kb
	 可以设置成0 代表关闭out缓冲区内容直接写到respons缓冲区
	out写的内容写到out缓冲区当中
	最后再把out缓冲区当中的内容合并到response缓冲区当中
8.pageContext:
	1.jsp页面的上下文对象
	2.是一个域对象
		setAttribute(String name,Object obj)
		getAttribute(String name)
		removeAttrbute(String name)
	3.可以向指定的其他域中存取数据
		setAttribute(String name,Object obj,int scope)
		//指定到reques域
		setAttribute(“name”,"lk",PageContext.REQUEST_SCOPE);
		//从reque域拿数据
		getAttribute(String name,int scope)
		getAttribute("lk",PageContext.REQUEST_SCOPE)
		
		removeAttrbute(String name,int scope)
		
		findAttribute(String name)
			自动到所有的域当中找数据
			从小到大的范围搜索数据
			依次从pageContext域,request域,session域,application域中获取属性
			在某个域中获取后将不在向后寻找
	4.可以获得其他8大隐式对象:
		pageContext.getRequest()
		pageContext.getSession()
	5.第三点和第四点的代码实现见下面的结构图

在这里插入图片描述

8.区别out.write()和response.write():
1.out.write()会把数据存到out缓存区,然后再拼接到respond缓冲区
2.respond.write()会把数据存到respond缓冲区,也就只有这个缓冲区的数据才能响应到浏览器页面,
3.具体的结构图如下图所示:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值