Java Server Page

一、jsp入门简介

        *jsp:java server page java服务器端的页面
		-上一年公司提供用于开发动态网站的技术 servlet jsp
			jsp最终也会编译成servlet,放到work目录下
		-jsp包含:html+java代码+jsp自身指令

		-在jsp里面如何嵌入java代码
			<% %><%! %><%= %>
		-jsp在第一次访问变成servlet
	
	*题目
		<%=x %>
		<% x=5; %>
		<% int x = 10; %>
		<% this.x = 20; %>
		<%=x %>
		<%! int x = 0; %> 
		
		A.0 10  B.10 20  C.0 20  D.20 0

		最终的结果是 0 10 

		* <%! int x = 0; %> <%//定义一个成员变量x 值是 0  %>
		<%=x %>            <%//把成员变量x的值 输出  0  %>
		<% x=5; %>         <%//把成员变量x赋值5  %>
		<% int x = 10; %>  <%//在service方法里面定义了一个变量 x 值 10  %>
		<% this.x = 20; %>  <%//把当前的成员变量x的值赋值20 %>
		<%=x %>             <%//把方法里面定义的变量x输出  %>

二、Jsp的注释

	*jsp中java注释
		<%
		//单行注释
		/**/多行注释
		/***/文档注释
		%>

	*jsp中html注释
		<!--jsp的注释-->
	
	*jsp注释
		<%--jsp的注释--%>

	*这三类注释在那个阶段存在尼?
		--在jsp源代码阶段,三类注释都存在
		
		--在编译阶段时,jsp注释没了,其他两个存在

		--在页面中显示时,html存在,其他两个都没了

三、Jsp的指令

	*jsp的指令包含三个指令
		*page:设置jsp页面的信息
			<%@ page 属性="value"%>
			
			-属性类型
				**pageEncoding:jsp编译成servlet设置使用编码

				**contentType:设置浏览器打开程序的编码。jsp页面必须设置响应的MIME(Multipurpose Internet Mail Extention)类型和JSP页面字符的编码,即ContentType属性值
					--第一种属性值:"MIME"
					--第二种属性值:"MIME类型;charset='utf-8'"
								"text/html;charset='urf-8'"

				**import:导入jar包

				**extends:jsp编译成servlet会继承那个类,默认HttpJspBase

				**errorPage:如果当前的jsp页面出现了异常,就到错误页面

				**isErrorPage:在错误页面中,是否可以显示错误信息,(程序员使用,调试错误)。属性值:true/false,默认false

					java.lang.Throwable exception = org.apache.jasper.runtime.JspRuntimeLibrary.getThrowable(request);
					if (exception != null) {
					  response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
					}
				
				*session:在jsp中是否可以使用session,值true/false,默认是true

				*buffer:输出的缓冲区的大小 8kb

				*autoFlush:超出缓冲区时候是否会正常输出
				
				*language:jsp页面支持的语言,目前只支持java
				
				*isElIgnored:是否忽略el表达式,默认false,若是true的话,el表达式会被当成文本输出
	
	*include:(静态包含)
			-jsp包含其他jsp页面
				<%@ include file="*.jsp"%>
				*在被包含的页面中,只需要保留被包含的内容就就可以了
			
			-静态包含过程:相当于代码复制,把多个页面jsp页面最终会编译后成一个servlet
			
			-注意:
				在被包含的页面中,只需要保留包含的内容就可以了

				在被包含的页面不能加参数(jsp名称后面不能加参数)

				被包含的页面(jsp名称)不能通过变量传递

	*taglib:
			-引入标签库
				可以替代jstl :<%%><%!%><%=%>
				<%@ taglib uri="jstl路径" prefix="jstl名称"%>
	
	*总结
		-jsp三个指令及其作用,属性和属性值;

四、Jsp内置对象

	*在jsp中可以直接使用的对象(九个)
		-reqeest:HttpServletRequest
			代表请求,可以获取提交的参数,域对象,设置值和取值
		
		-response:HttpServletResponse
			代表响应,向页面输出内容
		
		-session:HttpSession
			域对象,范围会话
		
		-config:ServletConfig
			获取servlet名称,获取局部初始化参数
		
		-application:ServletContext
			域对象,整个web项目,获取全局初始化参数
		
		-exception:获取异常信息getMessage()方法
			需要把错误页面属性 isErrorPage设置成true
		
		-page:jsp编译成servlet,表示当前运行的servlet对象
		
		-out:向页面输出内容
			JspWrite out.write(); 
			PrintWrite response.getWrite().write();
			--上述两个输出的区别			
				* out和response.getWriter()使用的不是一个对象
					** out使用的JspWriter
					
					** response.getWriter()使用PrintWriter

				*输出的机制
					**首先产生两个缓冲区,一个是out缓冲区和response缓冲区
					
					**out输出不会直接向页面输出,首先把内容先放到out缓冲区,把out缓冲区里面的内容放到response缓存区,
					
					**最终通过response缓冲区向页面输出
		
		-pageContext(***)
			*pageContext也是域对象
				-作用范围:当前的jsp页面
					<!--    向pageContext域里面设置值 -->
					<%
					pageContext.setAttribute("page1", "vlaue1");
					 %>
					<!--  使用传统方式获取值 -->
					<%=pageContext.getAttribute("page1")%>
					 <hr>
					<!--  使用el表达式获取值 -->
					 ${page1 }

			*pageContext可以向其他域对象里面设置值
					setAttribute(String name, Object value, int scope)
					-第三个参数:作用域-用来关联名称/对象的作用域
						--REQUEST_SCOPE
						--RESPONSE_SCOPE
						--SERVLETCONTEXT_SCOPE
						--SESSION_SCOPE
						....
					<!-- -------------向四个域对象里面设置值-------------------  -->
						<%
						pageContext.setAttribute("page2", "value2",pageContext.PAGE_SCOPE);
						pageContext.setAttribute("page3", "value3",pageContext.APPLICATION_SCOPE);
						pageContext.setAttribute("page4", "value4",pageContext.REQUEST_SCOPE);
						pageContext.setAttribute("page5", "value5",pageContext.SESSION_SCOPE);
						 %>

			*pageContext可以从其他的域对象里面获取值
						<!-- 	------------取域对象里面的值------------------------ -->
						<%="PageContext:"+pageContext.getAttribute("page2",pageContext.PAGE_SCOPE) %><br>
						<%="ServletContext:"+pageContext.getAttribute("page3",pageContext.APPLICATION_SCOPE) %><br>
						<%="Request:"+pageContext.getAttribute("page4",pageContext.REQUEST_SCOPE) %><br>
						<%="Session:"+pageContext.getAttribute("page5",pageContext.SESSION_SCOPE) %><br>
						<!-- 	-----------------------使用el表达式取值-------------- -->
						<hr>
						${page2 }<br>
						${page3 }<br>
						${page4 }<br>
						${page5 }<br>

					-findAttribute(String name):获取域对象的值,当获取属性的名称在几个域对象名称相同时,获取到域对象范围最小的里面的值。


			*pageContext可以获取其他的八个内置对象
				*经常用在框架里面,只需要传递一个对象,通过它可以获取其他对象
					<!--   通过pageContext对象获取其他八个内置对象 -->
						<% 
						pageContext.getRequest();
						pageContext.getServletContext();
						pageContext.getServletConfig();
						%>
	
	*四个域对象
		pageContext:范围:jsp页面
		Request:范围:一次请求
		session:范围:一次会话
		Application:范围:整个web
		
		域对象的使用必须掌握
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值