zoukankan      html  css  js  c++  java
  • 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.完成新闻发布系统的二级新闻浏览功能

  • 相关阅读:
    Hibernate初级
    Servlet, Listener 、 Filter.
    DBCP数据源
    数据库连接池
    MySQL入门笔记
    20170330 webservice代理类测试
    20170330 ABAP代理生成
    20170329 隐士增强问题
    ABAP rfc 发布webservice 错误
    ABAP 性能优化001
  • 原文地址:https://www.cnblogs.com/cykj/p/JSP-development-of-Web-application-system.html
Copyright © 2011-2022 走看看