第1章 动态网站开发基础
1. 动态网页是指服务器端运行的程序或者网页,它们会随不同客户,不同时间,返回不同的内容。
2. 随着Internet技术的兴起,B/S结构是对C/S结构的一种变化或者改进的结构。在这种结构下,程序完全放在应用服务器上,并通过应用服务器同数据库服务器进行通信。
3. 开发JSP动态网站的步骤如下:
a) 创建一个Web项目
b) 设计Web项目的目录结构
c) 编写Web项目的代码
d) 部署Web项目
e) 运行Web项目
4. 做Web程序开发时,要避免如下错误:
a) 未启动Tomcat服务,或者没有在预期的端口中启动Tomcat服务。
b) 未部署Web应用,就试图运行Web程序
c) 运行时,URL输入错误。
d) 存放文件的目录无法对外引用,如文件放入了Web-INF、Mate-inf等文件夹中。
第2章 用集合存储对象
1. 集合框架
由于数组在存放元素时必须要确定初始元素的个数。所以引入使用集合存储。
2. Java集合框架包含的内容
java集合框架 提供了一套性能优良、使用方便的接口和类。完整的Java集合框架位于java.uril包中,包含众多的接口和类。
a) 接口
Collection是最基本的集合接口,一个Collection代表一组元素。
List接口继承自Collection接口。List是有序集合,允许有相同的元素。
Map提供key(键)到value(值)的映射。一个Map中不能包含 相同的key,每个key只能映射一个value。
b) 具体类
实现List接口的常用的类有ArrayList和LinkedList。它们都可以容纳所有类型的对象,包括null。
ArrayList实现了可变大小的数组。它的优点在于遍历元素和随机访问元素的效率比较高。
LinkedList可以在其首部或尾部进行插入或者删除操作。
HashMap是Map接口的实现类,实现了一个键到值的映射的哈希表。
3. List接口和ArrayList类
List接口中定义的各种常用方法
返回类型 | 方 法 | 说 明 |
boolean | add(Object o) | 在列表的末尾顺序添加元素,起始 索引位置从0开始 |
int | size() | 返回列表中的元素个数 |
Object | get(int index) | 返回指定索引位置处的元素 注意:取出的元素是Object类型,使用前需要进行强制类型转换 |
void | add(int index; Object o) | 在指定的索引位置添加元素 注意:索引位置必须介于0和列表中元素个数之间 |
boolean | contains(Object o) | 判断列表中是否存在指定元素 |
boolean | remove(Object o) | 从列表中删除元素 |
4. List接口和LinkedList类
LinkedList的一些特殊方法
返回类型 | 方 法 | 说 明 |
void | addFirst(Object o ) | 在列表的首部添加元素 |
void | addList(Object o) | 在列表的末尾添加元素 |
Object | getFirst() | 返回列表中的第一个元素 |
Object | getLast() | 返回列表中的最后一个元素 |
Object | removeFirst() | 删除并返回列表中的第一个元素 |
Object | removeLast() | 删除并返回列表中的最后一个元素 |
5. Map接口和HashMap类
HashMap的常用方法
返回类型 | 方 法 | 说 明 |
Object | put(Object key,Object value) | 以“键-值对”的方式进行存储 注意:键必须是唯一的,值可以重复。如果试图添加重复的键,那么最后加入的键-值对将替换掉原先的键-值对 |
Set | keySet() | 返回键的集合 |
Collection | values() | 返回值的集合 |
boolean | containsKey(Object key) | 如果存在由指定的键映射的“键-值对”,返回true |
Object | get(Object key) | 根据检返回相关联的值,如果不存在指定的键,返回null |
Object | remove(Object key) | 删除由指定的键映射的“键-值对” |
第3章 访问数据库
1. JDBC API
JDBC API可做三件事:与数据库建立连接、发送SQL语句、处理结果。
JDBC API工作的4个环节:
(1)DriverManager类:依据数据库的不同,管理JDBC驱动。
(2)Connection接口:负责连接数据库并担任传送数据的任务。
(3)Statement接口:由Connection产生,负责执行SQL语句
(4)ResultSet接口:负责保存Statement执行后所产生的查询结果。
2. JDBC程序的代码模块
1) 把JDBC驱动类装载入Java虚拟机中。
Class.forName(“JDBC驱动类的名称”)
2) 加载驱动,并与数据库建立 连接。
Connection con = DriverManager.getConnection(数据连接字符串,数据库用户名,密码)
3) 发送SQL语句,并得到结果集
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(“select a,b,c from table1”);
4) 处理结果
while(rs.next()){
int x = rs.getInt(“a”);
String s = rs.getString(“b”);
float f = rs.getFloat(“c”);
}
3. Statement语句
Statement接口中执行SQL命令的三个方法:
a) ResulSet executeQuery(String sql):可以执行SQL查询并获取到ResultSet对象。
b) int executeUpdate(String sql):可以执行插入、删除、更新等操作,返回值是执行该操作所影响的行数。
c) boolean execute(String sql ):这是一个最为一般的执行方法,可以执行任意SQL语句,然后获得一个布尔值,表示是否返回ResultSet。
4. PreparedStatement语句
PreparedStatement接口继承自Statement接口,PreparedStatement比普通的Statement对象使用起来更加灵活、更有效率。
PreparedStatement实例包含已编译的SQL语句,SQL语句可具有一个或多个输入参数。这些输入参数的值在SQL语句创建时未被指定,而是为每个输入参数保留一个问号(“?”)作为占位符。
PreparedStatement pstmt = con.prepareStatement(“update table set a= ? where b = ? ” );
在执行时:pstmt.setLong(1.123456789); pstmt.setInt(2,10);
PreparedStatement对象的executeUpdate()方法 可以执行对数据的增、删、改的操作。返回一个int类型的值。
executeQuery()方法 可以执行对数据的查询。返回一个结果集。
第4章 JSP简介
1. JSP的页面组成
JSP是通过在HTML中嵌入Java脚本语言来响应页面动态请求。
JSP页面由静态内容、指令、表达式、小脚本、声明、标准动作、注释等元素构成。
a) 指令
JSP指令一般也“<%@”开始,以“%>”结束。
例:
<%@ page language=”java” import=”java.util.*,java.text.*” contextType=”text/html; charset = GBK”%>
b) 小脚本
小脚本可以包含任意的Java片段,编写方法就是将Java程序片断插入到<% %>标记中。
例:
<%
//使用预定格式将日期转换为字符串
SimpleDateFormat formater = new SimpleDateFormat(“yyyy年MM月dd日”);
String strCurrentTime = formatter.format(new Date());
%>
c) 表达式
当需要在页面中获取一个Java变量或者表达式值时,可以使用表达式。基本语法是:<%=Java表达式%>
例:
<%=strCurrentTime%>
d) 注释
<!--这是HTML注释(客户端可以看到源代码)-->
<%--这是JSP注释(客户端不可以看到源代码)--%>
<% /* 多行注释 */ %>
<%
//使用预定格式将日期转换为字符串
%>
2. Web容器处理JSP文件请求需要经过三个阶段
l 翻译(translation)阶段。JSP文件会被Web容器中的JSP引擎转换成Java源码。
l 编译(compilation)阶段。Java源码会被编译成可执行的字节码。
l 执行阶段。容器接受了客户端的请求后,执行编译成字节码的JSP文件。处理完请求后,容器把生成德页面反馈个给客户端进行显示。
第5章 JSP指令和脚本元素
1. page指令 就是通过设置内部的多个属性来定义JSP文件中的全局特性。page指令只能对当前自身页面进行设置。即每个页面都有自身的page指令。
page指令常用属性
属 性 | 描 述 |
language | 指令JSP页面使用的脚本语言,默认为Java |
import | 通过该属性来引用脚本语言中使用到的类文件 |
contentType | 用来指定JSP页面所采用的编码方式,默认为text/html |
1) language属性
page指令中的language属性用来指定当前JSP页面所采用的脚本语言。
例:<%@page language=”java”%>
2) import属性
通过import属性可以在JSP文件的脚本片段中引用外在的类文件。如果一个import属性引入多个类文件时,需要在多个类文件之间用逗号隔开。
例:
<%@ page import=”java.util.*,java.text.*” %>
2. JSP脚本元素
在JSP页面中可以包含静态内容、指令、表达式、小脚本、声明、标准动作以及注释。
其中,表达式(expression)、小脚本(scriptlet)、声明(declaration)统称为Java脚本元素。用来嵌入Java代码,实现页面动态请求。
3. JSP九个内置对象
1) out
2) page
3) pageContent
4) request
5) response
6) session
7) application
8) Exception
9) config
第6章 使用JSP处理客户端请求
一、HTML表单
表单的标记是<form>,它的两个重要参数:action和method。
action表示表单要提交到的地点 method表示表单发送的方法。一般用post
二、JSP内置对象
1. request对象
例:
<%
request.setCharacterEncoding(“GBK”);
String titleName=request.getParameter(“titlename”);
%>
request对象的几个常用的方法
方法名称 | 说 明 |
String getParameter(String name) | 根据页面表单组件名称获取页面提交数据 |
String[] getParameterValues(String name) | 获取一个页面表单组件对应多个值时的用户的请求数据 |
void setCharacterEncoding(String charset) | 指定每个请求的编码,在调用request.getParameter()方法之前进行设定,可以用于解决中文乱码问题 |
request.getRequestDispatcher(String path) | 返回一个javax.servlet.RequestDispatcher对象,该对象的formard方法用于转发请求 |
2. out对象
例:
<%
out.print(“hello ACCP”);
%>
3. response对象
response对象的常用方法void sendRedirect(String location),这个方法用来将请求重定向到一个不同的URL。
例:
String name = request.getParameter(“userName”);
String pwd = request.getParameter(“pwd”);
if(name.equal(“sa”) && pwd.equals(“sa”)){
response.sendRedirect(“welcome.jsp”);
}
当需要类型转换时用Integer.parseInt(“获取到的东西”);
例:int parentTitleId = Integer.parseInt(request.getParameter(“parenttitle”));
第7章JSP页面的访问控制
一、JSP内置对象session
session对象用来存储有关用户会话的所有信息
session对象的常用方法:
a) void setAttribute(String key,Object value):以键/值的方式,将一个对象的值存放到session中去。例如:session.setAttribute(“name”,”admin”); 含义是把字符串admin存放到session中去,它对应的键时name。
b) Object getAttribute(String key):根据键去获取session中存放的对象的值。
例: String name = (String) session.getAttribute(“name”); 通过名称name的键获取session中存放的对象的值。
每个session对象都与浏览器一一对应,也就是说,重新开启一个浏览器窗口。相当于重新创建一个session对象。
二、include指令
include指令可以将一些共性的内容写入一个单独的文件中,然后通过include指令引用该文件,从而缓解代码的冗余问题。
例:
<%@ include file=”checklogin.jsp”%>
三、内置对象application
application对象的常用方法:
1. void setAttribute(String key,Object value):以键/值的方式,将一个对象的值存放到application中。
2. Object getAttribute(String key):根据键去获取application中存放对象的值。
例:
if(rs.next()){
User logineduser = new User(name,pass);
session.setAttribute(“Logined_user”,logineduser);
List loginedUsers = new ArrayList(); //访问者列表
//全局范围内取出原有的访问者列表
if(application.getAttribute(“Logined_user”) !=null){
loginedUsers = (List)application.getAttribute(“Logined_user”);
}
//把新登录用户的信息存入访问者列表中
loginedUsers.add(logineduser);
//在全局范围内存入访问者列表
application.setAttribute(“Logined_user”,loginedUsers);
}
JSP的几个常用的内置对象
内置对象名称 | 说 明 |
out对象 | 用于向客户输出数据 |
request对象 | 主要用于客户端的请求处理 |
response对象 | 用于响应客户请求并向客户端输出信息 |
session对象 | 用来存储有关用户会话的所有信息 |
application对象 | 类似于系统的全局变量,用于实现用户之间的数据共享 |
page |
|
Exception |
|
pageContent |
|
config |
|