Servlet(五) —— JSP概念
一、JSP概述:
1. 什么是JSP:
JSP(Java Server Pages)是JavaWeb服务器端的动态资源。它与html页面的作用是相同的,显示数据和获取数据。
2. JSP的组成:
3. 语法:
1> JSP脚本就是Java代码片段,它分为三种:
- <%…%>:Java语句;
- <%=…%>:Java表达式(输出JSP表达式);
- <%!…%>:Java定义类成员(JSP声明);
<body>
<h1>JSP演示</h1>
<%
// Java语句
String s1 = "hello jsp";
// 不会输出到客户端,而是在服务器端的控制台打印
System.out.println(s1);
%>
<!-- 输出到客户端浏览器上 -->
输出变量:<%=s1 %><br/>
输出int类型常量:<%=100 %><br/>
输出String类型常量:<%="你好" %><br/>
<br/>
使用表达式输出常量是很傻的一件事,因为可以直接使用html即可,下面是输出上面的常量:<br/>100<br/>
你好
</body>
<body>
<%
int a = 10; //这个a是一个局部变量
%>
<%
out.printf(a++); //浏览器上输出10,刷新浏览器后仍输出10
%>
<%!
int a = 100; //这个a是一个成员变量
public void fun1() {
System.out.println(a);
}
%>
<%
out.print(this.a++); //this.a++ 是输出的成员变量a,是100,且浏览器刷新数值每次加一
fun1(); //调用fun1()方法
%>
</body>
2> 内置对象out
out对象在JSP页面中无需创建就可以使用,它的作用是用来向客户端输出。
<body>
<h1>out.jsp</h1>
<%
//向客户端输出
out.print("你好!");
%>
</body>
<%=…%>与out.print()功能是相同的!它们都是向客户端输出,<%=”hello”%>等同于<% out.print(“hello”);
%>,也等同于直接在页面中写hello一样。
3>多个<%…%>可以通用
在一个JSP中多个<%…%>是相通的。
<body>
<h1>out.jsp</h1>
<%
String s = "hello";
%>
<%
out.print(s);
%>
</body>
4. JSP与Servlet:
1> Servlet
优点:动态资源,可以编程
缺点:不适合设置HTML响应体,需要大量的response.getWriter().print(“”)
Html
优点:不用为输出html标签发愁
缺点:html是静态页面,不能包含动态信息
JSP
优点:在原有html的基础上添加java脚本,构成JSP页面
2> JSP和Servlet的分工
JSP:
- 作为请求发起页面,例如显示表单、超链接
- 作为请求结束页面,例如显示数据。
Servlet:
- 作为请求中处理数据的环节
二、JSP原理:
1. JSP是一种特殊的Servlet
当JSP页面首次被访问时,容器(Tomcat)会先把JSP编译成Servlet,然后再去执行Servlet。所以JSP其实就是一个Servlet!
2. JSP的真身存放目录:
JSP生成的Servlet存放在${CATALANA}/work目录下,在JSP中的静态信息(例如等)在“真身”中都是使用out.write()完成打印!这些静态信息都是作为字符串输出给了客户端。
JSP脚本一共三种形式:
- <%…%>:内容会直接放到“真身”中;
- <%=…%>:内容会放到out.print()中,作为out.print()的参数;
- <%!…%>:内容会放到_jspService()方法之外,被类直接包含;
3.JSP注释:
JSP注释: <%–注释内容–%> 当服务器把jsp编译成java文件时已经忽略了注释部分
HTML注释: