jsp:sun公司制订的一种服务器端动态页面技术规范。
jsp其实是一个以".jsp"为后缀的文件,该文件的内容主要是html和少量的java代码,容器会将jsp文件自动转换成一个servlet然后执行。
如何写一个jsp文件?
step1,创建一个以".jsp"为后缀的文件。
step2,在文件里面,添加如下的内容:
(1)html(css,js):直接写。
(2)java代码:
1)java代码片断
<% java语句; %>
2)jsp表达式
<%= java表达式%>
3)jsp声明
<%!java属性或方法%>
(3)隐含对象
在jsp文件里面,可以直接使用的对象,比如out,request,response。
容器会自动生成获得这些对象的代码。
(4)指令
1)什么是指令?
通知容器,在将jsp文件转换成servlet类时,做一些额外的处理,比如导包。
2)指令的语法
<%@ 指令名称 属性=属性值%>
3)page指令
a, import属性:导包
比如 <%@page import="java.util.*"%>
b, contentType属性:设置response.setContentType的内容。
c, pageEncoding属性:告诉容器jsp文件的编码(有些容器,在读取jsp文件的内容时,默认为按照iso-8859-1去解码,如果jsp文件里面包含了中文,会出现乱码)。
4)include指令
告诉容器在将.jsp文件转换为Servlet类时,在指令位置插入相应的文件的“内容”。
jsp是如何执行的?
step1,容器将jsp文件转换成一个servlet类,转换原则如下:
html(css,js)----- ----------> service方法里,使用out.write输出。
<%java语句;%> -------> service方法里,照搬。
<%= java表达式%> --->service方法里,使用out.print(java表达式)输出。
<%!属性或方法%>----->给Servlet添加新的属性或方法
注意:out.write只能输出简单的字符串,不能输出对象。
这样转换的优点可以将null自动转换为空字符串输出。
step2,容器调用servlet来处理请求。
注意:对于后台返回的数据我们可以通过${绑定数据名}来在jsp中获取响应的数据。
WEB-INF为禁访目录,不能在浏览器中直接访问WEB-INF下的jsp或html页面,需通过派发来转发到需要的页面。但是html页面是不能被转发的,因为派发时只派发servlet文件。