JSP小结

1、JSP技术:Java服务器页面,运行在Web服务器中的组件。动态网页技术,以.jsp结尾

2、JSP与Servlet的区别:Servlet是在Java代码中输出HTML元素,而JSP是在HTML元素中嵌入JSP代码

3、JSP的运行过程:JSP实质上就是Servlet

客户端--请求某个JSP页面-->Web容器查找该JSP页面对应的Servlet实例是否存在
|-->不存在(第一次):Web容器找到该JSP页面-->转译成Servlet源代码-->编译成.字节码,加载并创建实例
|-->存在(第n次):Web容器直接启动线程,调用对应的Servlet实例的jspServlet方法

4、JSP页面的组成元素:
1)传统
	2)EL(表达式语言)
	3)自定义标签
	4)JSTL(JSP标准标签库)
	

5、JSP的基本组成元素 转译为Servlet的时候
 1)HTML:静态元素。-->放置在service方法中当作out.write()的字符创参数直接向客户端输出
	2)表达式(Expression):-->放置在service方法中当作out。print()的参数
		<%= java表达式 %> 计算表达式的值,并输出到客户端。表达式不能用“;”结束
	3)代码片段(Scriptlet):--> 放置在service方法中当作普通的代码处理。
		<% java代码 %>	声明的变量是局部变量。
	4)声明(Declaration): 	当作Servlet的成员看待。与service方法平级。
		<%! 变量或者方法的定义%> 声明的是成员变量和成员方法
	5)注释(Comment): 直接被忽略
		<%-- --%>客户端不能产看到
	6)指令(Directive): 编译时指令
		<%@ 指令名  属性名="值"...%>
		a) page	   再转译成Servlet时对页面指定的一些配置信息
		b) include 静态包含。不能向被包含的文件传递参数
		c) taglib  导入标签库描述文件<%@ taglib uri="URL" prefix="标签引用的前缀" %>
	7)动作(Action):运行的命令
		<jsp:动作名 属性值="值">标签体</jsp:动作名>	
		<jsp:动作名 属性值="值"/>
		a)useBean ,setProperty,getProperty
		b)include:动态包含
			<jsp:include page="URL">
				<jsp:param name="参数名" value="值">
			</jsp:include>
		c)forward:请求分派
			<jsp:forward page="URL">
				<jsp:param name="参数名" value="值">
			</jsp:forward>
		d)include指令和include动作的异同
			相同点:都是在一个页面中把目标页面的内容包含进来
			不同:include指令是在转译时把目标页面的内容添加到当前页面对应的Servlet的service方法。不能传递请求参数
					 include动作是在执行时才把目标页面的内容包含到当前页面对应的Servlet的service方法,可以传递请求参数。	
		

6、JSP中的九大隐式对象
1) out  JspWriter实例,用来向客户端输出字符数据
	2)request HttpServletRequest实例 代表客户端的请求对象
	3)response HttpServletResponse实例,代表服务器的响应对象
	4)pageContext PageContext实例 页面上下文对象
	5)session HttpSession实例 代表客户端的会话对象
	6)application ServletContext Web应用上下文对象
	7)page this,代表当前JSP对应的Servlet实例
	8)config ServlerConfig实例,代表JSP配置对象(可以获取初始化参数)			
	9)exception java.io.Throwable实例,代表异常对象。只能使用<%@ page isErrorPage="true" %>的JSP 
	

7、JSP中的四个属性作用域
	
		名称					对应的隐式对象名 			描述
		page					PageContext						页面作用域			
		session				session								会话作用域
		request				request								请求作用域
		application		application						Web应用作用域	
	

8、Servlet和JSP之间的通信
 1)JSP跳转到Servlet
		a)超链接或者提交表单跳转到Servlet:在Servlet中获取请求中的参数数据request.getParameter("参数名");
		b)<jsp:forward page="Servlet的映射URL"/>
			<%request.getRequestDispatcher("Servlet的映射URL").forward(request,response);%>//请求分派
			可以通过请求参数来传递数据到Servlet,也可以通过请求作用域来传递
			request.setAttribute("属性名","值");//JSP
			Object obj=request.getAttribute("属性名");//Servlet
		c)代码片段中使用response.sendRedirect("Servlet的映射URL");//不共享同一个请求
			无法通过请求参数来传递数据,也无法通过请求作用域来传递。
	2)Servlet跳转到JSP
		a)请求分派:可以通过请求参数来传递数据到JSP,也可以通过请求作用域来传递
			request.getRequestDispatcher("JSP文件").forward(request,response);
			request.setAttribute();//Servlet
			request.getAttribute();//JSP
		b)重定向:	无法通过请求参数来传递数据,也无法通过请求作用域来传递。
			response.sendRedirect("Servlet的映射URL");
	

你可能感兴趣的:(jsp)