JSP开发Web应用系统

1.动态网站开发基础

1-1:动态网页
a.为什么需要动态网页(当我们需要修改网页内容的时候,都要重新上传一次覆盖原来的页面。而且,制作必须要通过专用的网页制作工具,比如:Dreamweaver、Frontpage等,但是使用动态网页就可以解决这两个问题。)
b.什么是动态网页(例如:百度搜索工具,储存数据、反馈数据、随机获得数据、随时变化页面内容等等)三个特性:交互性、自动更新、随机性
c.如何实现动态网页(谷歌搜索工具,储存了10200000项符合Java技术的结果,而且超链接,排列的顺序都是通过精心设计安排的,你是否会问,这是怎么实现的呢?)
1-2:B/S技术
a.为什么学习B/S技术(C/S技术,在每一安装软件需要更新的时候都必须重新安装,而且,维护性能差。但是,B/S技术就可以避免这两个问题。)
b.什么是B/S技术(B/S结构比C/S结构有如下优势:(1)维护和升级方式简单(2)用户访问范围更大 但是,B/S技术不能做出想Office这样界面丰富的软件)
c.B/S技术特点(用户录入信息,解释执行HTML文件发送请求信息到服务器运行JSP等服务器端脚本程序,然后访问数据库,接着数据库服务器返回结果到应用服务器,最后从服务器检索到信息返回响应。)
d.B/S开发涉及的技术内容(使用JSP开发动态网站,我们要具备java知识、掌握HTML与JavaScript技术、掌握面向对象的编程思想,另外,我们要使用数据库存储数据,数据库基础是必须的,我们的JSP技术就需要结合以上知识开发动态网站,后面我们会学习《JSP/Servlet/JavaBean的网上交易系统》这门课程,将引入MVC架构模式,并教授大家如何使用 JSP+Servlet+JavaBean的方式构建基于MVC的企业级应用,还有《开发基于Struts/Spring/Hibernate/Ajax的网上信息发布平台》将为大家引进目前最流行的架构技术,提高大家B/S开发的效率,引领大家进入更专业的B/S开发领域。)
1-3:开发JSP动态网站的步骤
a.创建一个Web项目
b.设计Web项目的目录结构
c.编写Web项目的代码
d.部署Web项目
e.运行Web项目
1-4:Web程序的调试与排错(常见错误:)
a.未启动Tomcat服务
b.未部署Web应用
c.URL输入错误
d.目录不能被引用

2.用集合存储对象
2-1:集合框架
a.为什么需要集合框架(如果写程序时并不知道程序运行时会需要多少对象,或者,需要更复杂的方式存储对象-那么,可以使用Java集合框架)
b.Java集合框架包含的内容
(1)接口(Collection是最基本的集合接口,一个Collection代表一组元素。List接口继承自Collection接口,List是有序集合,允许有相同的元素 Map提供key(键)到value(值)的映射。一个Map中不能包含相同的key,每个key只能映射一个value。)
(2)具体类(实现List接口的常用类有ArrayList和LinkedList。它们包含都可以容纳所有类型的对象,包括null,并且都保证元素的存储顺序。ArrayList实现了可变大小的数组,它的优点在于遍历元素和随机访问元素的效率比较高)
(3)算法(请使用Collection的时候可以查阅JDK帮助文档,此处就不列出!)
2-2:List接口和ArrayList类
a.开发任务描述(根据需求确定新闻标题的存储方式、确定欲存储的对象、完成具体实现的顺序来完成这一开发任务,并从中掌握ArrayList类的使用场景及具体语法。)
b.确定存储方式(ArrayList实现了可变大小的数组,在进行随机访问和遍历元素时,它提供更好的性能。这样,我们最终把目标锁定在ArrayList类上。 查询快速)
c.确定存储对象(例如:ID、名称、创建者、创建时间)
d.具体实现
例如:
package s2jsp.sg.ch02;
import java.util.*;
public class FirstLevelTitleDB1{
public static void main(String[] args){
FirstLevelTitle car=new FirstLevelTitle(1,"汽车","管理员",new Date());
FirstLevelTitle test=new FirstLevelTitle(2,"高考","管理员",new Date());
List newsTitleList=new ArrayList();
newsTitleList.add(car);
newsTitleList.add(test);
System.out.pritln("新闻标题数目为:"+newsTitleList.size()+"条");
print(newsTitleList);
}
}
/*
*逐条打印每个新闻标题的名称
*/
public static void print(List newsList){
for(int i=0;i<newsList.size();i++){
FirstlevelTitle title=(FirstLevelTitle)newsList.get(i);
System.out.println(i+1+":"+title.getTitleName());
}
}
注意:一些常用的方法 add(Object o) size() get(int index) add(int index,Objecct o) contains(Object o) remove(Object o)
2-3:List接口和LinkedList类
a.a.开发任务描述(根据需求确定新闻标题的存储方式、确定欲存储的对象、完成具体实现的顺序来完成这一开发任务,并从中掌握ArrayList类的使用场景及具体语法。)
b.确定存储方式(LinkedList在首、尾部插入或者删除操作,而且,相当于ArrayList,在插入或删除元素时,LinkedList提供更好的性能。因此,在存储方式上,我们选择LinkedList。 删除和增加速度快)
c.具体实现
例如:
package s2jsp.sg.ch02;
import java.util.*;
public class FirstLevelTitleDB3{
public static void main(String[] args){
FirstLevelTitle car=new FirstLevelTitle(1,"汽车","管理员",new Date());
FirstLevelTitle medical=new FirstLevelTitle(2,"医学","管理员",new Date());
LinkedList newsTitleList=new LinkedList();
//添加头条新闻标题
newsTitleList.addFirst(car);
//添加最末条新闻标题
newsTitleList.addLast(medical);
//获取头条新闻标题
FirstLevelTitle first=(FirstLevelTitle)newsTitleList.getFirst();
System.out.pritln("头条的新闻标题为:"+first.getTitleName());
//获取最末条新闻标题
FirstLevelTitle last=(FirstLevelTitle)newsTitleList.getLast();
System.out.pritln(" 排在最后的新闻标题为:"+last.getTitleName());
//删除头条新闻标题
newsTitleList.removeFirst();
//删除最末条新闻标题
newsTitleList.removeLast();
System.out.pritln("目前新闻标题的总数为:"+newsTitleList.size());
}
}
注意:一些常用的方法 addFirst(Object o) addLast(Object o) getFirst() getLast() removeFirst() removeLast()
2-4:Map接口和HashMap类
a.开发任务描述(Map提供键到值的映射 例如:现在外企公司,每个人都有一个英文名称。如果一旦涉及到数据的存储,怎么存储?如何存储?存储什么?等等。这一系列的问题HashMap类就可以给我们实现。)
b.确定存储方式(我们把英文名理解为:"键",学员理解为:"值"。这样就把存储方式锁定在HashMap上。)
c.确定存储对象(例如:中心名称、学员名称等等。)
d.具体实现
例如:
package s2jsp.sg.ch02;
import java.util.*;
public class MapTest{
public static void main(String[]args){
AccpStudent student1=new AccpStudent("李明","北京中心");
AccpStudent student1=new AccpStudent("刘丽","天津中心");

Map students=new HashMap();
//把英文名称与中文名称对象按"键-值对"的方式存储在HashMap中
students.put("Jack","student1");
students.put("Rose","student2");

//分别打印键集、值集以及键-值对集合
System.out.println("键集"+students.keySet());
System.out.println("值集:"+students.values());
System.out.println("键-值对集合:"+students());

String key="Jack";
//判断是否存在某个键,如果是,则根据键获取相应的值
if(students.containKey(key)){
System.out.println(students.get(key));
}
//根据键删除某天记录
students.remove(key);
System.out.println("键-值对集合:",students);
}
}
注意:一些常用的方法 put(Object key,Object value) keySet() values() containsKey(Object key) get(Object key) remove(Object key)

3.访问数据库
3-1:JDBC简介
a.为什么需要JDBC
Java语言具有、健壮、安全、易于使用、易于理解等特性。然而JDBC则充当了Java应用程序与各种不同数据库之间进行对话的媒介。
JDBC是Java数据库连接(Java DataBaseConnectivity)技术的简称,提供连接各种常用数据库的能力。如果我们要访问数据库,
就只需要用JDBC写一个程序就够了。
b.JDBC程序的工作原理
Java应用程序 JDBC API JDBC DriverManager---JDBC驱动和JDBC驱动---SqlServer数据库和Oracle数据库 详细请看P47
(1)JDBC API 如:Connection连接接口、Statement接口、PreparedStatement接口、ResultSet结果集接口等等
(2)JDBC Driver Manager
(3)JDBC驱动
c.JDBC API
(1)DriverManager类 管理JDBC驱动
(2)Connection接口 负责连接数据库并担任传送数据的任务
(3)Statement接口 由Connection产生,负责执行SQL语句
(4)ResultSet接口 负责保存Statement执行后所产生的查询结果
d.JDBC程序的代码模板
(1)把JDBC驱动类装载如Java虚拟机中 例如:Class.forName("JDBC驱动类的名称");
(2)加载驱动,并与数据库建立连接 例如;Connection con=DriverManager.getConnection(数据库连接字符串,数据库用户名,密码);
(3)发生SQL语句,并得到结果集 例如:Statement stmt=con.createStatement(); ResultSet rs=stmt.executeQuery(SQL语句);
(4)处理结果 例如:while(rs.next){
int x=rs.getInt("a");
String s=rs.getString("b");
}
例如:
//把JDBC驱动类装载如Java虚拟机种
Class.forName(JDBC驱动类的名称);
//加载驱动,并与数据库建立连接,其只数据库连接字符串用来标识数据库
Connection con=DriverManager.getConnction(数据库连接字符串,数据库用户名,密码);
//执行SQL语句,并得到结果集
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(SQL语句);
//处理结果
while(rs.next()){
int x=rs.getInt("a");
String s=rs.getString("b");
float f=rs.getFloat("c");
}
注意:JDBC URL的标准语法由以下三个部分组成,各部分之间用冒号分隔。
jdbc:<子协议>:<子名称>
JDBC URL三个部分可分解如下:
其中jdbc----代表协议;<子协议>----驱动程序名或数据库连接机制的名称;<子名称>----一种标识数据库的方法
例如:()jdbc:odbc:news (2)jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=news
3-2:JDBC驱动
a.两种常用的驱动方式
第一种:JDBC-ODBC桥连,使用于个人的开发与测试,它通过ODBC与数据库进行连接。
第二种:是纯Java驱动方式,它直接同数据库进行连接,在生产型开发中,推荐纯Java驱动方式
b.JDBC-ODBC桥连
JDBC-ODBC桥连就是将对JDBC API的调用转换为对另一组数据库连接(即ODBC)API的调用详细请看P51
应用 例如:
package s2jsp.sg.ch03;
import java.sql*;
public class NewFirstTitleDB1{
public static void main(String[]args){
Connection con=null;
Statement statement=null;
try{
String strSql="insert into FirstLevelTitle values(1,'军事','网管',getdate())";
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}catch(ClassNotException e){
System.out.println("无法找到驱动类!");
}
con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=news","sa","sa");
statement=con.createStatement();
statement.executeUpdatement(strSql);
}catch(SQLException sqlE){
sqlE.printStackTrace();
}finally{
closeStatement(statement);
closeConnection(con);
}
}
}
public static void closeStatement(Statement stat){
try{
if(stat !=null){
stat.close();
stat=null;
}
}catch(SQLException e){
e.printStackTrack();
}
}
pubilc static void closeConnection(Connection dbConnection){
try{
if(dbConnection !=null &&(!dbConnection.isClosed())){
dbConnection.close();
}
}catch(SQLException sqlEx){
sqlEx.printStackTrace();
}
}
c.纯Java驱动方式
纯Java驱动方式有JDBC驱动直接访问数据库,驱动程序完全由Java语言编写,运行速度快,而且具备了跨平台的特点
应用 例如:
package s2jsp.sg.ch02;
import java.sql*;
public class NewFirstTitleDB2{
public static void main(String[]args){
Connection con=null;
Statement statement=null;
try{
String strSql="insert into FirstLevelTitle values(1,'军事','网管',getdate())";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotException e){
System.out.println("无法找到驱动类!");
}
con=DriverManager.getConnection("jdbc:odbc:news",sa","sa");
statement=con.createStatement();
statement.executeUpdatement(strSql);
}catch(SQLException sqlE){
sqlE.printStackTrace();
}finally{
closeStatement(statement);
closeConnection(con);
}
}
}
public static void closeStatement(Statement stat){
try{
if(stat !=null){
stat.close();
stat=null;
}
}catch(SQLException e){
e.printStackTrack();
}
}
pubilc static void closeConnection(Connection dbConnection){
try{
if(dbConnection !=null &&(!dbConnection.isClosed())){
dbConnection.close();
}
}catch(SQLException sqlEx){
sqlEx.printStackTrace();
}
}
注意:因为厂家不同,所以我们在使用Java纯驱动的时候,首先要下载数据库厂商提供的驱动程序jar包,并将其引入到工程中。
3-3:JDBC应用
a.开发任务描述
(1)新闻标题存储在SQL Server2000中
(2)通过JDBC对新闻标题进行增、删、改、查操作
b.Statement语句
(1)ResultSet executeQuery(String sql):可以执行SQL查询并获取到ResultSet对象
(2)int executeUpdate(String sql):可以执行增、删、改、查等操作,返回值是执行该操作所影响的行数
(3)boolean execute(String sql):这是一个最为一般的执行方法,可以执行任意SQL语句,然后获得一个布尔值,表示返回ResultSet。
c.使用Statement插入数据 详细请看P53
d.PreparedStatement语句 详细请看P57
e.使用PreparedStatement插入数据 详细请看P58
f.使用PreparedStatement删除数据 详细请看P59
g.使用PreparedStatement更新数据 详细请看P60
h.使用PreparedStatement查询数据 详细请看P61


4.JSP简介
4-1:JSP简介
a.为什么需要JSP
在前面已经说到,静态页面的现实内容是保持不变的,静态网页既不能实现与用户的交互,又不利于系统的扩展。
所以,我们需要基于B/S技术的动态网页。 详细执行流程请看P69
例如:
<% @ page language="java" import="java.util.*,java.text.*" contentType="text/html;charset=gbk" %>
<html>
<head>
<title>输出当前日期</title>
</head>
<body>
你好,ACCP!今天是
<%
SimpleDateFormat formater=new SimpleDateFormat("yyyy年MM月dd日");
String strCurrentTime=formater.format(new Date());
%>
<%=strCurrentTime %>
</body>
</html>
b.什么是JSP
Java服务器页面(Java Server Pages,JSP)技术是指在HTML中嵌入Java脚本语言,然后后服务器中的JSP引擎来编译和执行,最后返回到客户端。请看P71
c.JSP的页面组成(静态内容、指令、表达式、小脚本、声明、标准动作、注释等元素构成)
(1)指令 以"<%@"开始,以"%>"结束 例如:<%@ page language="java" import="java.util.*,java.text.*" contentType="text/html;charset=gbk" %>
(2)小脚本 小脚本可以包含任意的Java片段,编写方法就是将Java程序片段插入到<% %>标记中。
例如:
<%
//使用预定格式将日期转换为字符串
SimpleDateFormat formater=new SimpleDateFormat("yyyy年MM月dd日");
String strCurrentTime=formater.format(new Date());
%>
(3)表达式 当需要在页面中获取一个Java变量或者表达式值时,使用表达式格式是非常方便的。
语法: <%=Java表达式%>
例如: <%=strCurrentTime %>
(4)注释
I.HTML的注释方法 <!--这是HTML注释(客户端可以看到源代码)-->
II.JSP注释标记 <%--这是JSP注释(客户端不可以看到源代码)-->
III.在JSP脚本中使用注释 <% //使用预定格式将日期转换为字符串 %>
(5)静态内容
静态内容是JSP页面中的镜头文本,它基于HTML文本,与Java和JSP语法无关。
例如:
<% @ page language="java" import="java.util.*,java.text.*" contentType="text/html;charset=gbk" %>
<html>
<head>
<title>输出当前日期</title>
</head>
<!--这是HTML注释(客户端可以看到源代码)-->
<%--这是JSP注释(客户端不可以看到源代码)--%>
<body>
你好,ACCP!今天是
<%
SimpleDateFormat formater=new SimpleDateFormat("yyyy年MM月dd日");
String strCurrentTime=formater.format(new Date());
%>
<%=strCurrentTime %>
</body>
</html>
4-2:创建JSP页面
a.设计目录结构
b.创建JSP页面
(图片路径出错 该改为:<img src="../images/banner.jpg" width="935" height="100")
c.中文乱码问题(将charset=gbk 例如:<% @ page language="java" import="java.util.*,java.text.*" contentType="text/html;charset=gbk" %>)
d.设置欢迎页面
例如:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>

4-3:JSP执行过程
a.Web容器处理JSP文件请求
(1)翻译(translation)阶段(翻译成Java代码)
(2)编译(conpilation)阶段(编译成Class文件)
(4)执行阶段(编译后的Class文件)
b.JSP运行环境
Web容器(如Tomcat)提供JSP引擎,负责JSP文件的执行,提供JSP的运行环境。详细请看P81


5.JSP指令和脚本元素
5-1:page指令
a.为什么需要page指令
b.什么是page指令
5-2:JSP脚本元素
a.什么是小脚本
b.什么是表达式
c.小脚本和表达式的综合应用
d.方法声明


6.使用JSP处理客户端请求
6-1:HTML表单
a.为什么需要使用HTML表单
b.回顾HTML表单
6-2:处理表单请求
a.表单处理的编程模式
b.添加新闻一级标题
c.JavaScript页面验证与JSP的集成
6-3:JSP内置对象
a.JSP内置对象out
b.JSP内置对象request
c.JSP内置对象response
6-4:处理表单请求进阶


7.JSP页面的访问控制
7-1:访问控制
a.如何实现访问控制
b.什么是会话
c.JSP内置对象session
d.为新闻发布系统增加访问控制
e.include指令

7-2:已访问人数统计
a.为新闻发布系统增加已访问人数统计
b.JSP内置对象application
7-3:分级浏览
a.创建前台首页面
b.完成新闻发布系统的一级新闻浏览功能
c.完成新闻发布系统的二级新闻浏览功能

转载于:https://www.cnblogs.com/cykj/p/JSP-development-of-Web-application-system.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值