前言
JSP是目前Web应用开发领域的主流技术之一,学习JSP对我们来说有很大的好处。
一、JSP是什么?
JSP是由Sun公司倡导、许多公司参与而建立的动态网页技术标准。它在HTML代码中嵌入java代码片段(Scriptlet)和JSP标签,构成了JSP网页。在接收到用户请求时,服务器会处理java代码片段,然后生成处理结果的HTML页面返回给客户端,客户端的浏览器将呈现最终页面效果。
二、JSP知识点
1.JSP技术特征
1、跨平台
2、业务代码分离
3、组件重用(javabean)
4、继承 Java Servlet功能
5、预编译
2.JSP原理
1.本地浏览器请求一个网页,发送 HTTP 请求给服务器
2.Web 服务器识别是对 JSP 网页的请求。将请求递交给 JSP 引擎。通过使用 URL或者 .jsp 文件来完成。
3.JSP 引擎从硬盘中载入 JSP 文件,将它们转化为 Servlet。这种转化只是简单地将所有模板文本改用 println() 语句,并且将所有的 JSP 元素转化成 Java 代码。
4.Web 服务器的某组件将会调用 Servlet 引擎,然后载入并执行 Servlet 类。
5.执行过程,Servlet 产生 HTML 格式输出并将其内嵌到 HTTP response 中,上交给 Web 服务器
6.Web 服务器已静态 HTML 网页的形式将 HTTP response 返回到您的浏览器中。
7.浏览器处理 HTTP response 中动态产生的HTML网页,就好像在处理静态网页一样
3.JSP四大域对象
1)在上述九大内置对象中,有四大域对象,分别是:pageContext(PageContextImpl类)、request(HttpServlerRequest类)、session(HttpSession类)、application(ServletContext类)
2)域对象是可以像 Map 一样存取数据的对象。四个域对象功能一样,不同的是它们对数据的存取范围。
3)四大域对象存取范围:分别给四个对象存入数据,并取出
pageContext(PageContextImpl类) --- 当前 jsp 页面范围内有效。
request(HttpServlerRequest类) --- 一次请求内有效。
session(HttpSession类) --- 一次会话范围内有效(浏览器访问服务器,直到浏览器关闭,数据都在)。
application(ServletContext类) --- 整个 web 工程范围内都有效(只要web不停止,数据都在)。
4.JSP常用标签
1)jsp 静态包含
格式:<%@ file="/" %> ,file 属性指定要包含的 jsp 页面路径 。
2)jsp 动态包含
格式:<jsp:include page=""></jsp:include>,page 属性指定要包含的 jsp 页面路径
特点:动态包含可以在标签内添加内容<jsp:param name="" value=""><jsp:param>,用于传递参数。
3)jsp 标签-转发
格式:<jsp:forward page=""></jsp:forward>,page 属性指定要转发到的 jsp 页面路径。
5.page指令
1、language属性
用于设置JSP页面使用的语言,目前只支持java语言,以后可能会支持其他语言,该属性默认值是java。
2、extends属性
用于设置 JSP页面继承的 Java类,所有 JSP页面在执行之前都会被服务器解析成 Servlet,而 Servlet是由 Java类定义的,所以 JSP和 Servlet都可以继承指定的父类。该属性并不常用,而且有可能影响服务器的性能优化。
3、import 属性
用于设置 JSP导入的类包。JSP 页面可以嵌入 java代码片段,这些java代码在调用 API时需要导入相应的类包。
4、pageEncoding属性
用于定义 JSP页面的编码格式,也就是指的文件编码。 JSP页面中的所有代码都使用该属性指的的字符集,如果该数据值为ISO-8859-1,那么这个jsp页面就不支持中文字符。通常设置编码格式为 GBK 或 UTF-8。
6.代码
jsp页面中嵌入java代码,一共有jsp全称Java Server Pages,是一种动态网页开发技术。三种方式:表达式(expression)、脚本(scriptlet)、声明(declaration)
表达式:<%= %>
将来翻译到java文件中的位置:_jspService方法中,out.print(..)代码的参数;注意,在jsp中的表达式,语句的最后不需要加;号
脚本:形式:<% %>
<%
Student s = new Student();
String name = "tom";
String username = s.getName();
List<String> list = new ArrayList<String>();
list.add("hello")
%>
所以,在一个普通的方法中我们可以写什么样的代码,那么在脚本中就可以写什么样的代码.
声明:形式:<%! %>
<%!
private String name;
public String go(){
System.out.println("hello world "+name);
return "this is go()";
}
%>