java servlet学习(一)
Servlet学习(二)Request和Response
Servlet学习(三)Servlet请求与cookie
Servlet学习(三)图解Session
Servlet学习(四)ServletContext 和ServletConfig
JavaWeb信息管理系统
JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。
浏览器发起请求,请求 JSP,请求被 Tomcat 服务器接收,执行JspServlet 将请求的 JSP 文件转义成为对应的 java 文件(也是Servlet),然后执行转义好的 java 文件。
JSP指令控制JSP编译器如何去生成servlet
静态引入
<%@include file=“要引入的jsp文件的相对路径” %>
特点:
会将引入的jsp文件和当前jsp文件转译成一个java(Servlet)文件使用。
在网页中也就显示了合并后的显示效果。
注意:
静态引入的jsp文化不会单独转译成java(Servlet)文件。
当前文件和静态引入的jsp文件中不能够使用java代码块声明同名变量。
<%@page 属性名=“属性值” 属性名=“属性值”…%>
language:声明jsp要被转译的语言。
import:声明转译的java文件要导入的包,不同的包使用逗号隔开。
pageEncoding:设置jsp文件的数据编码格式。
contentType=“text/html; charset=utf-8” 设置jsp数据响应给浏览器时,浏览器的解析和编码格式。
session:设置转译的servlet中是否开启session支持,默认开启,true表示开启。false表示关闭。
errorPage:设置jsp运行错误跳转的页面.
extends:设置jsp转译的java文件要继承的父类(包名+类名)。
注意:
在同一个JSP文件中只有“import”导入页面指令可以被多次使用。
标签库指令taglib –标签库指令描述了要使用的JSP标签库。该指令需要指定一个前缀prefix(和C++的命名空间很类似)和标签库的描述URI:
eg: <%@ taglib prefix = “myprefix” uri = “taglib/mytag.tld” %>
eg: <% java代码 %>
局部代码块中声明的java代码会被原样转译到jsp对应的servlet文件的_JspService方法中代码块中声明的变量都是局部变量。
局部代码块在servlet进行请求逻辑处理,使用jsp进行页面展现。but书写麻烦,阅读困难。
eg:<%! java代码 %>
声明的java代码作为全局代码转译到对应的servlet类中。全局代码块声明的代码,需要使用局部代码块调用。
eg:<%=变量名或方法 %>
快速的获取变量或者方法的返回值作为数据响应给浏览器。
JSP动作是一系列可以调用内建于网络服务器中的功能的XML标签。
动态引入
特点:
会将引入的jsp文件单独转译,在当前文件转译好的java文件中调用引入的jsp文件的转译文件。
在网页中显示合并后的显示效果。
注意:
动态引入允许文件中声明同名变量。
可以在jsp:include, jsp:forward或jsp:params块之间使用。指定一个将加入请求的当前参数组中的参数。
转发标签
使用:
特点:
一次请求
地址栏信息不改变。
注意:
在转发标签的两个标签中间除了写
name属性为附带的数据的键名
value为附带的数据内容
注意:会将数据以?的形式拼接在转发路径的后面。
jsp:getProperty 从指定的JavaBean中获取一个属性值。
jsp:setProperty 在指定的JavaBean中设置一个属性值。
jsp:useBean 创建或者复用一个JavaBean变量到JSP页。
eg:
scope属性可以是request, page, session or application,它有以下用意:
上述例子将会用一个创建一个类的实例,并且把该实例存储在属性中,该属性将在该请求的生命周期内有效。它可以在所有被包含或者从主页面(最先接收请求的页面)转向到的JSP页之间共享。
jsp文件在转译成其对应的Servlet文件的时候自动生成的并声明的对象。可在jsp页面中直接使用。
内置对象在jsp页面中使用,使用局部代码块或者脚本段语句来使用。不能够在全局代码块中使用。