- JSP简介:JSP全称是Java Server Page,是sun公司发布的跨平台的技术标准,用于动态的web开发,是基于Java Servlet模型的视图层技术,JSP是Servlet的扩展。由JSP标记、HTML标记和java代码组成。
- JSP运行原理:
- 当一个jsp文件第一次被请求时,jsp引擎把jsp文件转换成一个Servlet源文件即.java文件(jsp引擎本身也是一个Servlet),若不是第一次被请求跳转到第3步
- jsp引擎把转换成功的Servlet源文件编译成字节码文件
- 执行字节码文件,创建一个Servlet实例(创建Servlet实例时,jspInit()方法被自动调用,然后调用jspService()方法,jspService方法调用结束或出现错误时,jspDestroy()方法被调用)
- Servlet最后被标记,由gc回收释放内存
- 访问一个jsp页面的过程:
- 客户端向服务器发送请求
- 服务器收到请求后加载jsp资源
- web服务器中的jsp引擎把被加载的jsp转化为Servlet源文件
- jsp引擎再把源文件转化为字节码并执行
- 服务器把执行结果返回给客户端,浏览器把结果显示出来
- jsp用到的一些东西:JavaScript/CSS/Ajax/jQuery(搜索引擎中的自动补全就是这个的杰作)
之前说JSP页面由JSP标记、HTML标记和java代码组成。除了普通的html代码之外,嵌入jsp页面的其他成分主要有:脚本元素(js)、指令、动作
1、脚本用来嵌入java代码,将成为Servlet的一部分,jsp预定义了一组可以直接使用的变量如request/response/out/session/application/config/page-Context
2、jsp指令用来从整体上控制Servlet的结构
3、动作用来引入现有的组件或者控制jsp引擎的行为
- 脚本:
1、jsp表达式<%= ... %>
有请求如localhost:8080/HelloWorld?message=you loss
<%=
request.getParameter(“message”)
%>
页面上打印出来的就是you loss
2、jsp脚本<% ... %>
<%
String str = "hello world";
out.println("hello world");
%>
3、jsp声明<%! ... %>
<%! code %>
4、jsp注释
<%-- 注释 --%>这个注释在jsp转换为Servlet时被自动忽略
<-- 注释 -->这个是html的注释,在转化为Servlet时会被包含进去
这里一般都会有个问题就是jsp脚本、声明、表达式有啥区别呢?
是这样,jsp脚本呢就是写java代码的地方,不推荐使用,毕竟现在都流行前后端分离,前端尽量用专业的前端语言工具;表达式看上去就是println的作用,但其实用处还有很多,比如说我们form提交的时候写action的时候要求像这样action="../login.jsp?id=<%= request.getParameter("id")%>",起到一个拼接的作用,这是与脚本println区别的地方。至于声明,其实也是写java代码的地方,但是声明语法(<%! %>)一般被用做声明定义一些变量,方便在脚本(<% %>)中使用的变量,当然了一个jsp页面中的声明只在这个页面中有效。jsp声明中的变量仅在jsp第一次被请求时初始化一次,一旦初始化结束,之后对这个声明的使用一直是这个值。
- 指令:
1、page指令
<%@ page ...>
page中的属性比较多这里就不一一赘述功能了,自行百度吧。合法的属性如下
import = //导入的包
contentType = “text/html;charset=UTF-8”
isThreadSafe = “true/false”
session = “true/false”
buffer = “size kb/none”
autoflush = “true/false”
extends = “***.class”
info =
errorPage = “url”
isErrorPage = “true/false”
language = “java”
2、include指令//在转化为Servlet时包含引入的文件
<%@ include file=”...” %>
ps:此处使用jsp:include动作可以在请求文件的时候再引入文件,不用包含在Servlet中
- 动作:
1、jsp:include
<jsp:include page = “” flush=”true/false” />
2、jsp:useBean//声明创建一个bean实例
<jsp:useBean id = “” class = “” />
其他可能的属性:
scope = ”page/request/session/application”
type = ””
beanName = ””
3、jsp:setProperty//设置bean中的属性
<jsp:setProperty name=”” property=””>
name = ””
property = “”
param = “”
value = “”
4、jsp:getProperty//获得bean中的属性
<jsp:getProperty name = “” value = “” />
5、jsp:plugin与applet有关
<jsp:plugin attribute = “value”>
6、jsp:forward//转发
<jsp:forward page = “url”>
最后,说一下特别标签以及html5
html5中调整了一些标签,因为强调html只注重语义,css只注重样式,所以html中的有关于样式的标签将在html5中被废弃如<center>/<strong>/<ins>/<del>/<em>,但是仍然给出了替代品,这些替代的样式标签尽量别用
<em> -- <i>标签内的文字斜体</i>
<strong> -- <b>加粗</b>
<ins> -- <u>下划线</u>
<del> -- <s>删除线</s>
<center>标签在html5中被废弃了