JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
它实现了Html语法中的java扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(Java Server Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
PS:其实就是JSP是用来处理界面,Servlet用来处理业务逻辑,Java用来处理数据访问,这样来实现MVC分层,至于具体实现可以参考我的另一篇博客《Web MVC模式实现》。
参考文档:http://tomcat.apache.org/tomcat-7.0-doc/jspapi/index.html?index-all.html
参考文档:http://www.runoob.com/jsp/jsp-tutorial.html
PS:JSP运行之后会在Tomcat服务器主目录下的work目录中生成相应的.java和.class文件
其格式为tomcat主目录名\work\Catalina\主机名\应用名\org\apache\jsp\文件名
注意:.java文件和.class文件是在一起的
<body> This is my JSP page. <br> </body>
out.write(" <body>\r\n"); out.write(" This is my JSP page. <br>\r\n"); out.write(" </body>\r\n");
<% int i=90; int j=i+90; %> <% out.println("j="+j); %>
public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { // 隐式对象创建 int i=90; int j=i+90; // 代码块 // out.write(“j=” + j + “\r\n”); // 代码块 }
用于从jsp发送一个信息到容器,比如设置全局变量,文字编码,引入包等等
基本用法:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
常用的属性:
import,contentType,pageEncoding,errorPage
import 引入外部包
contentType 设置HTTP响应contentType属性
pageEncoding 指定Servlet引擎以什么方式从jsp->servlet,并指定网页以什么方式显示
errorPage 设置错误页面
基本用法:
<%@ include file=”文件路径” %>
PS:路径是相对路径,通过该方式引入的JSP文件不能包含唯一HTML标签,比如<head><body>等,并且该方式并不会将引入的JSP文件翻译成Servlet然后编译,也就是说只会产生一个servlet文件,因此这种引入方式也叫作静态引入。
参考博客:http://www.biaodianfu.com/jsp-taglib.html
基本语法:
<%! int i=90; %>
<%! public int getResult(int a,int b){return a+b;}%>
<% java 代码 %>
<%=表达式 %>
<%=78 %>
PS:
声明相当于定义Java的成员变量和成员方法。
小脚本相当于定义jsp service方法中的局部变量。
表达式相当于out.write(表达式);,其作用是将表达式的返回值输出到页面中
该文档写的非常详细:http://www.runoob.com/jsp/jsp-actions.html
PS:
<%@include file=”文件路径”> 静态引入
<jsp:include page=”文件路径”></jsp:include> 动态引入
两者的区别是前者把两个jsp翻译成一个Servlet,所以被引入的文件不能包含<html><body>之类的唯一HTML标记,后者是将两个jsp分别翻译,然后将一个页面的结果引入到另一个页面,所以被引入的jsp包含有<html><body>也可以。
<jsp:forward page=”文件路径”>也是常用的动作元素,用于把请求转发到另外的页面。
JSP注释有两种方式,一种是<%-- 要注释的内容 --%>,另一种是<!-- 要注释的内容 -->
PS:前者是不会在HTML源码中看到并且不会被编译,叫做JSP注释,后者能在HTML源码中看到,但是不会显示在HTML页面中,叫做HTML注释。建议统一用JSP注释,这样既节省内存也安全。
JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP隐式对象也被称为预定义变量。JSP一共支持九大隐式对象。
对象名 |
类型 |
作用域 |
request请求对象 |
javax.servlet.ServletRequest |
Request |
response响应对象 |
javax.servlet.ServletResponse |
Page |
pageContext页面上下文对象 |
javax.servlet.jsp.PageContext |
Page |
session会话对象 |
javax.servlet.http.HttpSession |
Session |
out输出对象 |
javax.servlet.jsp.JspWriter |
Page |
config配置对象 |
javax.servlet.ServletConfig |
Page |
page页面对象 |
java.lang.Object 相当于this |
Page |
exception异常对象 |
java.lang.Throwable |
Page |
application应用程序对象 |
javax.servlet.ServletContext |
Application |
1、jsp运行在服务器
2、jsp(java server page)
3、jsp的基础是servlet(相当于对servlet进行一个包装)
4、jsp是综合技术 jsp=html+css+javascript+java代码+jsp标签(servlet)
5、jsp无需配置.直接使用,如果修改了jsp文件,不需要重新reload web应用.
6、jsp如何方法 http://ip:8080/web应用名/jsp路径
7、jsp是一种动态网页技术
8、为了防止直接访问JSP文件,可以将JSP文件放入WEB-INF目录下,然后通过<jsp:forward>从WebRoot目录下跳转当访问文件。
PS:上述只是JSP语法和使用的一部分知识,其他内容可以参考API文档和教程,已在基本概述中给出。
----------参考《韩顺平.细说JSP》