JavaWeb JSP技术(上)

来源:互联网 发布:linux mysql源码安装 编辑:程序博客网 时间:2024/05/16 12:47

一,JSP

JSP(Java Server Pages)代替servlet 简化输出,实质就是servlet。
第一次运行JSP的过程:

这里写图片描述

第二次访问同一个页面index.jsp,如果没有更改index.jsp 不会再转换了 直接调用 servlet的service方法,如果更改了index.jsp 就重新转换。

二,JSP的五个组成部分

(一)模版元素2个

html 和xml
XML=Extensible Markup Language
作用:
1. 当做配置文件使用 web.xml
2. 保存数据(当做数据库使用 txt xml)

(二)注释元素 3个

1.html注释

会显示在客户端源码中

2.JSP注释

<%–我是JSP注释,不会显示到浏览器的源文件中,只存在于JSP文件中,转换成的servlet中没有该注释内容–%>

3.java注释

java注释,不会显示到浏览器的源文件中,JSP中有,转换成的servlet源文件中也有

(三)指令元素 3个

1.page指令(页面指令)

< %@page  %>

常用的指令元素的属性
(1)import 导入 相当于java的import

(2)errorPage 和isErrorPage
errorPage 表示用来处理错误的页面
处理错误的页面 如果想使用exception内置对象 必须要 加一个 isErrorPage=”true” 这时 exception内置对象才会被创建

(3) pageEncoding 和contentType
contentType : 相当于 servlet中的
response.setContentType(“text/html;charset=utf-8”);

作用:

1.设置服务器输出的编码方式是utf-8(生成页面的编码) 默认是ISO-8859-1 Latin-1 西欧文字 1个字节 256

2.提示浏览器使用utf-8解码

2.include 指令(静态包含)

<%@include file="reused.jsp"%>

3.taglib

<%@taglib prefix="c"   uri="taglibURI" %>

(四)脚本元素 3个
1.声明

<%!  成员变量或成员方法%>

被转换成servlet中的成员变量和成员方法

2.JSP表达式

<%="你好,世界"%>相当于<%    out.println("你好,世界");%>

转化成servlet中的JspWriter out;

3.scriptlets

<%    int a = 10;%>

多一个<% %> 会合成一个 一起转换成Servlet中的service(_jspService)
在<%%>里定义的变量是局部变量,这样同名的局部变量把实例变量隐藏了,想访问实例变量要加this.a

(五)动作元素 7个

1.动态包含

<jsp:include page="reused.jsp" flush="true">        <jsp:param name="username" value="zzy"/> </jsp:include>

flush: 表示在reused页面包含进来之前,是否刷新include1.jsp页面,一定要改成true

2.传参

“`
< jsp:param name=”username” value=”zzy”/>

3.转发

转发
< jsp:forward page=”msg.jsp”/>
重定向
<%
response.sendRedirect(“msg.jsp”);
%>

4.< jsp:useBean>、< jsp:setProperty>、< jsp:getProperty>三个

5.< jsp:plugin>
可以使用它来插入Applet或者JavaBean

转发和重定向的区别 3个

(1)转发它是服务器的内部行为 URL地址不变 一个请求一个响应
重定向服务器的外部行为,强制用户发出另一个请求,两个请求,两个响应,URL地址改变

(2)由于转发是服务器的内部行为,只能转发到本服务器上的其他资源(jsp、servlet) 不能跳到其他服务器的资源 如百度; 重定向由于是服务器的外部行为,可以跳转到其他服务器的资源。

(3)转发以后的代码不会被执行(因为转换后的servlet中有句return,表示结束该方法,所以后面都不执行了)
重定向 后的代码仍然会被执行

静态包含和动态包含的区别 3个
(1) 静态包含是将被导入页面的代码完全融入,两个页面融合成一体,转换成一个servlet
动态包含中 页面和 被导入页面 会转换成两个servlet,在servlet中使用include那句话把运行结果导入

(2)静态包含 被导入页面的指令元素也会被导入;
动态包含指令元素不会被导入

这样如果静态包含 页面 和 被导入的页面定义了不同的contentType,由于静态包含指令元素也会被导入,这样会发生contentType冲突的情况,而动态包含不会.

(3)动态包含还可以传参

0 0
原创粉丝点击