JAVA SERVER PAGE
JSP本身就是Servlet所以具有Servlet的所有优点。
JSP在JSP第一次被访问时转换为Servlet。
extends HttpJspBase
并将其编译成.class。
JSP:
性能优良
平台无关
tag可拓展
NEWS:
JSTL
JSF
标签语法,是新推出的。便于处理的简单的标签语法。
Grammers:
1.declaration
2.scriptlet
3.expression
4.comment
5.directives
6.action动作指令
7.内置对象
1.declaration
<%!
int accessCount = 0; //Servlet的成员变量
void m(){} //Servlet的成员函数
%>
2.scriptlet:
<%
int i; //注意在<!%%>中声明的区别:在<%%>局部变量
java code
%>
<%=++account%>
==
<%%out.println(++account);%>
4.comments
客户端注释:(不能启动屏蔽语句的作用)
<%!-- --%>
服务器端注释:
<%-- --%>
<%
//
/*
*/
%>
注意小心服务器端的代码与客户端的代码是不可以互相调用的。
<script>
<%out.println("var i = 0");%>
alert(i);
</script>
没问题!
动态生成Java脚本
jsp --- 》 servlet ------ 》 browser
5.directives(编译指令)
<%@XXXX atr1=""%>
page
include
taglib
指明与容器的沟通方式
<%@page import="java.util.*" | buffer="none|kb size8k"
| isErrorPage="true|false" | errorPage="url"
| contentType=""%>
方便重用:静态包含,访问同个request,包含页面的contentType必须相同,不可传参
<%@include file="url"%>
1.编译前包含
2.同一个Servlet
注:包含时的代码去掉不必要的部分
6.动作指令action
<jsp:include page="url" flush="true">
<jsp:param name= value=>
<jsp:param name= value=>
<jsp:param name= value=>
</jsp:include>
虽说不是一个对象,(产生两个.class)被包含的页面可以使用包含页面接受的参数,可以如上传参,延迟加载
被包含的request 》 包含的request
静态包含与动态包含的区别?
执行时间段不同
容器对其的处理:一个servlet连个servlet
传参数
request所包含的参数:一个同,一个是被包含的包含了包含的request同时有自己的信息。
response.sendRedirect("");
访问另一个Servlet当前处理Servlet继续运行
命令浏览器:重新写地址
不能使用前一个页面的参数信息
本Servlet代码继续执行,除非在后面加入:return;
速度慢
可以在url中传参数
/代表的是:http://127.0.1/
<jsp:forword page="">
地址栏不变:
可得到上个页面的内容
本Servelt不会继续执行
速度快
可以传参数
/代表的是http://127.0.0.1/project/
this.getServletContext().getDispatcher().forward();
在jsp中使用javabean
必须有个无参数的构造方法
getters and setters
<jsp:usebean id="" class="" scope="">
</jsp:usebean>
<jsp:setProperty name="id" property="" value="">
<jsp:getProperty name="id" proterty="">
scope:
page 默认
request
application
sesssion
解决乱码问题: