-
JSP的基本原理
第一个jsp程序
Jsp会被翻译成servlet,在tocamt的work\Catalina\localhost看到。
不管是JSP还是Servlet,虽然都可以用于开发动态web资源。但由于这2门技术各自的特点,在长期的软件实践中,人们逐渐把Servlet作为web应用的控制器组件来使用,而把JSP技术作为数据显示模板来使用。
其原因为,程序的数据通常要美化再输出:
让JSP即用java代码产生动态数据,又做美化会导致页面难以维护。
让servlet即产生数据,又在里面嵌套html代码美化数据,同样也会导致程序可读性差,难以维护。
因此最好的办法就是根据这两门技术的特点,让他们各自负责各得,Servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示jsp来做。-
Jsp的基础语法
-
Jsp的模板元素:
就是jsp中的html的标记(负责页面的布局和美化,一般由美工负责)
-
Jsp中的表达式:
<%=%>:用于输出内容
注意:jsp中少用out.print()来输出 -
Jsp中的基本片段
<%%>:可以定义局部变量和语句等,是在service函数中(对照jsp的servlet的源代码就很清楚了)
通过以下案例介绍jsp 的工作原理
Ex:
<%
int age = 12;
String name = “haoren”;
out.print(name+“有”+age+“岁”);
%>
<%!%>:可以定义类、方法和全局变量(很少这样弄)没有在service函数中(对照jsp的servlet的源代码就很清楚了) -
Jsp中的注释
显示注释:(客户端可见)
隐式注释://,/**/,<%-- --%>(jsp注释)
-
Jsp指令是为jsp引擎而设计的,他们并不直接产生任何可见输出,而只是告诉引擎如何处理jsp页面中的其余部分,在jsp2.0规范中共定义了三个指令:
Page指令
Include指令
Taglib指令
- Page指令
import:导入JSP中的Java脚本使用到的类或包.(如同Java中的import语句)
JSP引擎自动导入以下包中的类:
javax.servlet.
javax.servlet.http.*
javax.servlet.jsp.*
一个import属性可以导入多个包,用逗号分隔。
*buffer:指示JSP用的输出流的缓存大小,默认是8kb
*errorPage:指示当前页面出错后转向(转发)的页面。
目标页面如果以"/"(当前应用)就是绝对路径。
配置全局错误提示页面:
web.xml
java.lang.Exception
/error.jsp
404
/404
errorPage属性的设置值唯一路径(相对或绝对),如果“/”开头,表示相对于当前WEB应用程序的根目录(注意不是站点根目录),否则,表示相对当前页面。
可以在web.xml文件中使用元素为整个WEB应用程序设置错误处理页面,其中的子元素指定异常类的完全限定名,元素指定以“/”开头的错误处
- Include指令
静态包含: 先包含在执行
<%@ include file="/head.jsp" %>
Asdfadsfasdfasdfadsfadsf
<%@ include file="/foot.jsp" %>
静态包含只会形成一个servlet文件
并且可以布局
<table border=""><tr><td> <%@include file="/Version.jsp" %></td><td> adsfasf</td></tr></table>
动态包含:先执行再包含
(可以传递参数和被包含的页面可以生成servlet)
<jsp:include page="/head.jsp" >
<jsp:param value=“mazheng” name=“name”/>
</jsp:include>
在被包含的页面中取值:
<%=request.getParameter(“name”)%>
注意动态包含与静态包含的区别(在实际开发中能用静态,就不要用动态)
- Taglib指令
Taglib
作用:引入外部的标签
语法:<%@taglib uri = “标签名称空间” prefix=“前缀”%>
<%@ taglib uri=“http://java.sun.xom/jsp/jstl/core” prefix=“c”%>