jsp基础知识总结
JavaEE 技术规范 平台
servlet 缺点,为什么会出现jsp 技术?
因为Servlet 当初的设计目的是用来产生网页的程序,所以所有的页面必须在Servlet
中进行构造,这样做的效率在当今来说,真的很低下,所以对于Servlet 来说,它是很不利
于展现的,不过它很适合于对数据的处理,所以很适合于充当控制器来使用。因为Servlet
构建页面实在够差,所以后来SUN 推出了JSP 来一改Servlet 引入的尴尬。
jsp = html+java 片段+jsp 标签+javascript+css
JSP(Java Server Pages):在HTML 中嵌入java 脚本语言;由引用服务器中的JSP 引擎来编
译和执行嵌入的java 脚本语言命令;然后将生成的整个页面信息返回给客户端。
jsp 功能强大是因为可以与javabean 结合使用(即jsp 作前台,javabean 作后台
===>Model1)
jsp+javabean 的基础上再结合servlet(做控制),就会构成MVC 的开发模式
MVC 模式是目前软件公司通用的开发模式。
如何手工部署一个web 项目?
WebRoot 项目名
|-WEB-INF
|-web.xml 部署文件
|-classes .class
|-lib *.jar
|-jsp
|-js
|-css
|-index.jsp
虚拟路径配置
<Context path="/hello" docBase="D:\webSite"/>
path="/hello" url
docBase="D:\webSite" 项目路径
JSP 页面的元素包括:
静态内容:HTML 静态文本
(一)指令元素: 以"<%@ "开始,以"%>"结束,用于从jsp 发送一个信息到容器,
如设置文字编码,引入包等
如:
设置MIME 类型<%@ page contentType="text/html;charset=gbk" %>
ps:MIME 类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩
展名文 件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客
户端自 定 义的文件名,以及一些媒体文件打开方式。
导入所需要的包<%@ page import="java.util.*,java.io.*"%>
包含某个文件 <%@ include file="filename" %>
<%@ tagilb url="" prefix="" %> jstlJSP (标准标记库 JSP Standard Tag
Library)
(二)脚本元素:在一定程度上可以理解就是java 的片段
1、脚本: <% java 代码 %> 局部变量
2、表达式: <%=java 表达式 %> 输出变量 表达式
3、声明: <%! 变量、方法%> 全局变量
(三)动作元素:
<jsp:include page="filename" />
<jsp:forward page=""/>
===>request.getRequestDispatcher("xxx").forward(request,response); forward
(服务器端跳转) redirect(客户端跳转)
<jsp:flugin >
<jsp:usebean id="" class=""/>class 值指明用到的哪个bean,id 是bean 的一个实例,
相当于指定对象名
<jsp:setProperty name="" property="" value="" />name 表示某一个对象名,
property 表示哪个属 性,value 是具体的值,相当于调用了name .setProperty(value)
这个方法
<jsp:getProperty name="" property="" />相当于调用name.getProprty();
其中scope 四大属性范围:
1 page: 当前页面(默认)
2 request 一次请求
3 session 一次会话
4 application web 应用程序
用法一:
<jsp:include page=""/>
用法二:
<jsp:include page="">
<jsp:param name="" value=""/>
</jsp:include>
<jsp:include page=""/> 与<%@ include file="" %>有何区别?
答:{ ~前者是指令元素、后者是行为元素。<%@ include file=” ”%>,jsp 的include
指令元素读入指定页面的内容。并把这些内容和原来的页面融合到一起。(这个过程是在翻
译阶段:也就是jsp 被转化成servlet 的阶段进行的。jsp 页面是把include 指令元素所指定
的页面的实际内容(也就是代码段)加入到引入它的jsp 页面中,合成一个文件后被jsp 容器
将它转化成servlet。可以看到这时会产生一个临时class 文件和一个java 文件。
~主要有两个方面的不同;
一:执行时间上:
<%@ include file=”relativeURI”%> 是在翻译阶段执行
<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行.
二:引入内容的不同:
<%@ include file=”relativeURI”%>
引入静态文本(html,jsp),在JSP 页面被转化成servlet 之前和它融和到一起.
<jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet 所生成
的应答文本.
另外在两种用法中file 和page 属性都被解释为一个相对的URI.如果它以斜杠开头,那么它
就是一个环境相关的路径.将根据赋给应用程序的URI 的前缀进行解释,如果它不是以斜杠开
头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释.更多有关
URL 是如何解释的请参考相关资料或书籍. }
注释:
<!- - html 中的注释,客户端可以看到源代码 - ->
<%- - jsp 中的注释,客户端不可以看到源代码 - -%>
JSP 脚本中使用的注释:
<% //单行注释 %>
<% /*多行注释*/ %>
总结:只用html 的注释在客户端是看得到的
JSP 执行过程:(翻译-->编译-->执行)
WEB 容器处理JSP 文件请求需要经过3 个阶段:
1 、翻译阶段: JSP 文件会被WEB 容器中的JSP 引擎转换成JAVA 源码
\Tomcat6.0\work\Catalina\localhost\hello\org\apache\jsp\xxx.java
2、编译阶段:Java 源码会被编译成可执行的字节码.class
3、执行阶段:容器接受了客户端的请求后,执行编译成字节码的JSP 文件;处理请求后,
容器把生成的页面反馈给用户端进行显示
第一次请求之后,WEB 容器可以重用已经编译好的字节码文件。就不用再翻译、编译。
注意:如果对JSP 文件进行了修改,WEB 容器会重新对JSP 文件进行翻译和编译。
传值方式:
方式1:
<a href="4.jsp?a=1&b=2" >xx.jsp</a>
String s=request.getParameter("a");
String d=request.getParameter("b");
方式2:
<jsp:forward page="xx.jsp">
<jsp:param name="stuName" value="lishiming"/>
</jsp:forward>
方式3:
form 表单
JSP 的内置对象:
JSP 内置对象是 Web 容器创建的一组对象
JSP 内置对象是可以直接在JSP 页面使用的对象 ,无需使用“new”获取实例
JSP 内置对象的名称是 JSP 的保留字
九大内置对象:
out============