Jsp简介:
³ JSP---Java Server Pages
³ 拥有servlet的特性与优点(本身就是一个servlet)
³ 直接在HTML中内嵌JSP代码
³ JSP程序由JSP Engine先将它转换成Servlet代码,接着将它编译成类文件载入执行
³ 只有当客户端第一次请求JSP时,才需要将其转换、编译
³ 优点:
² 优良的性能
优于CGI,PHP,ASP
² 平台无关性
操作系统无关,Web服务器无关
² 可扩展性
tag的扩展机制,简化页面开发
Jsp 基本语法:
³ 一、JSP传统语法
² Declaration
² Scriptlet
² Expression
² Comment
² Directives
² Action动作指令
² 内置对象
³ JSTL
³ JSF
| Declaration: | Scriptlet |
格式: | <%! Int I = 0; %> | <% int i= 0; %> |
编译后: | 声明后变成类的成员变量,一般不要用,除非在做计算一个有多少个客户端访问过该页面。 也就是说:在此声明的变量式方法都会被保留成唯一的一份,直到Jsp程序停止运行。 | ①声明后变成类的方法中的局部变量。 ②不能声明方法 <% void m(){} %>(因为它编译后是在方法里)。 ③可以放入任何Java 代码。 |
客户端与服务器端的代码是否可互相调用:
①、客户端刷新等操作的时候,成员变量的值会有误?
因为tomcat处理客户端请求的时候,以多线的方式来执行的,每个线程都有自己的一个缓存(缓的是Servlet中成员变量的值)。
②、注释:
1、格式: <! - -
<% System.out.print(“============”) %>;
<% out.println(“1111111111111111111111”) %>;
- - >
这是html注释,它是不可以阻止服务器端代码的执行的,虽然不显示,但是会将结果显示在后台或源文件中。
* 在Jsp页面中,<% %>是在服务器端执行的,而JS代码执行于客户端
2、<% - -
System.out.println (“2222222222”);
- - %>
Java注释,显示在服务器端
3、//单行注释
4、/*
多行注释
*/
二、表达式:格式:<% = I %>
三、directive(编译指令):相当于在编译期间的命令。
1、表态指令:格式:<%@ Directive 属性=“值”%>(page,include,taglib)
例:index.jsp
<%page errorPage=”error.jsp” %>
<%String s=”fjeijf2324”;
Int i=Integer.valueOf(s);
%>//当它执行有误的时候,就跳转到error.jsp页面
Error.jsp
<% page isErrorPage=”true” %>
错误信息:<%=exception.getMessage() %>
2、表态包含:格式:<% include file=”title.jsp” %>
①在转换成Servlet时(编译之间)就已经包含了(变成同一个页面)。
②这种包含方式不能伟参数。
③包含页面和被包含页面用的是同一个request对象。
④两个页面设置的字符集必须相同。
⑤被包含的页面不能含<html><head>等标签。
3、动态包含:格式:<jsp: include page=”date.jsp? Name=ff” />
①包含页面与被包含页面分别产生两个文件(被包含的页面被单独编译)
②虽然被包含页面可以取出包含页面里面参数值,但他们不是同一个对象(被包含页面的request比包含页面的request要多),不过可以把它们当成一个对象。
③可以传参数。
④只有招生以这段代码的时候,才编译,否则不编译。
<jsp: include page=”dive.jsp”>
<jsp: param name=”v1” value=”value1”/>
<jsp: param name=”v2” value=”value2”/>
</jsp: include>
sendRedirect | Forward |
是不同的request | 是不同的对象,但是可以取到上个页面内容 |
发response.sendRedirect(“dive.jsp”)后下面的语句还得执行 | <jsp:forward >执行后,下面的语句不执行了。 |
速度慢 | 速度快 |
需到客户端往返,可转到任何页面。 | 服务器内部转换。 |
地址栏有变化。 | 地址栏没有变化。 |
可以伟参数,直接在URL后面。 | 可以伟参数。 |
“/”表示“http://localhost:8080/” | “/”表示“http://localhost:8080/项目名/“ |
有意者加群:108732902