JSP开发Web应用程序



JSP开发Web应用程序

第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