JSP 简介
全名为Java Server Pages,其根本是一个简化的Servlet设计,实现了在Java当中使用HTML标签。JSP是一种动态网页技术标准,也是JavaEE的标准,JSP与Servlet一样,是在服务器端执行的。
软件开发三大方向:
- 桌面应用程序
- Web应用程序
- 嵌入式应用程序(手机的APP)
一、Web 开发知识补充
1.1 静态网页 VS 动态网页
1.1.1 静态网页
- 内容固定,不会更新
- HTML,CSS
1.1.2 动态网页
- 通过程序动态显示,自动更新
- 所需技术:HTML,CSS,JS,XML,数据库库,一门高级语言(Java,C#,PHP)
- 主流的动态网页脚本技术:JSP/Asp.net/php
1.2 搭建 Java Web
JDK , Tomcat, IDE
推荐:JDK1.7,Tomcat7.0,MyEclipse10
1.2.1 Tomcat 目录结构
目录 | 说明 |
---|---|
/bin | 存放各种平台下用于启动和停止Tomcat的命令文件 |
/conf | 存放Tomcat服务器的各种配置文件 |
/lib | 存放Tomcat服务器所需的各种JAR文件 |
/logs | 存放Tomcat的日志文件 |
/temp | Tomcat运行时用于存放临时文件 |
/webapps | 当发布Web应用时 |
/work | Tomcat把由JSP生成的Servlet放于此目录下 |
1.2.2 WEB-INF 目录结构
- WEB_INF:Java的Web应用的安全(客户端无法访问,只有服务端可以访问的)目录。
- web.xml 项目部署文件
- classes:放置*.class文件,放在WEB_INF目录下,IDEA需要手动建立
- lib文件夹:放置需要的jar包,放在WEB_INF目录下,IDEA需要手动建立
1.3 如何修改Tomcat的端口?
修改 Tomcat的conf/server.xml的:
修改Port就能成功修改Tomcat的默认端口
1.4 常见动态网站开发技术对比
- JSP:Java平台,安全性高,适合开发大型的,企业级的Web应用程序
- Asp.net:.Net平台,简单易学,但是安全性以及跨平台性差
- PHP:简单,高效,成本低开发周期短,特别适合中小型企业的Web应用开发(LAMP:Linux+Apache+MySQL+PHP)
JSP 适合分布式的,Hadoop
二、JSP 基础语法
页面元素组成:
- 静态内容
- 指令
- 注释
- 脚本
- 声明
- 表达式
2.1 JSP指令
指令 | 说明 |
---|---|
page | 通常位于JSP页面的顶端,同一个页面可以有多个page指令 |
include | 将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句 |
taglib | 使用标签库定义新的自定义标签,在JSP页面中启用定制行为 |
2.1.1 page指令
语法:
<%@ page 属性1="属性值" 属性2="属性值1,属性值2"... 属性n="属性值n" %>
属性 | 描述 | 默认值 |
---|---|---|
language | 指定JSP页面使用的脚本语言 | Java |
import | 通过该属性来引用脚本语言中使用到的类文件 | 无 |
contentType | 用来指定JSP页面所采用的编码方式 | text/html,ISO-8859-1 |
2.2 JSP 注释
HTML 注释
//客户端可见,审查元素时
JSP的注释:
<%-- JSP 的注释 -- %> //客户端不可见
JSP 脚本注释:客户端不可见
// 单行注释
/* 多行注释
*/
2.3 JSP 脚本
语法:
<% Java代码 %>
2.4 JSP 声明
在JSP中定义变量或者方法
语法:
<%! Java代码%>
例子:
<%!
String s = "张三"; //声明了一个字符串
int add(int x, int y){ //声明了一个函数,返回两个整数的求和
return x+y
}
%>
2.5 JSP的表达式
JSP中执行的表达式
<%= 表达式%> // 注意表达式不以分号结束
三、JSP 内置对象
3.1 内置对象简介
JSP内置对象是web容器创建的一组对象,不用new关键字就可以使用的内置对象
<%
int[] value = {60,70,80}
for(int i:value){
out.println(i)
}
%>
JSP内置对象:
- out
- request
- response
- session
- application
- Page/pageContext/exception/config
3.2 out
JspWriter类的实例,向客户端(浏览器)输出内容常用的对象
常用方法如下:
- void println()向客户端打印字符串
- void clear() 清除缓冲区的内容,如果在flush之后调用会抛出异常
- void clearBuffer() 清除缓冲区的内容,如果在flush之后调用不会抛出异常
- void flush() 将缓冲区内容输出到客户端
- int getBufferSize() 返回缓冲区以字节数的大小,如不设缓冲区则为0
- int getRemaining() 返回缓冲区还剩余多少可用
- boolean isAutoFlush() 返回缓冲区满时,是自动清空还是抛出异常
- void close() 关闭输出流
3.3 request/response
客户端的请求信息被封装在Request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。