Java读取xml文件(项目实战+源码+详细解析)

java读取xml文件(项目实战)

废话不多说,今天来记录一下我这周做的一个项目,最近刚入职,主管就要求我开发一个小项目,该项目很简单,具体项目要求如下:

1.网页前端主页

读入一个XML文件,解析里面的内容,将该XML文件中的Code元素读取出来。代码示例如下:

 `<DataField>
        <Data Code="81634910196183669298" Actor="User1" ActDate="2022-08-13 16:04:59" FromCorpID="" CorpOrderID="2" />
        <Data Code="81634910196195965561" Actor="User1" ActDate="2022-08-13 16:04:59" FromCorpID="" CorpOrderID="2" />
        <Data Code="81634910190969596093" Actor="User1" ActDate="2022-08-13 16:04:59" FromCorpID="" CorpOrderID="2" />
      </DataField>`
  

所以我们现在要做一个前端网页,用于传入XML文件;
该网页要求很简单,有一个标题,有一个选择文件的按钮,和一个上传文件的按钮,只需一小会即可完成,最后大概效果如图所示:
在这里插入图片描述
该网页源码如下:

<!DOCTYPE html>
<html>
<head>
    <title>仓库溯源系统</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f0f0f0;
        }

        h1 {
            text-align: center;
            margin-top: 50px;
        }

        form {
            width: 50%;
            margin: 50px auto;
            padding: 20px;
            background-color: #fff;
            border-radius: 5px;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
        }

        label {
            display: block;
            margin-bottom: 10px;
            font-weight: bold;
        }

        input[type="file"] {
            display: block;
            margin-bottom: 20px;
        }

        input[type="submit"] {
            display: block;
            margin: 0 auto;
            padding: 10px 20px;
            background-color: #3e8e41;
            color: #fff;
            border: none;
            border-radius: 5px;
            cursor: pointer;
        }

        input[type="submit"]:hover {
            background-color: #4CAF50;
        }
    </style>
</head>
<body>
<h1>仓库溯源系统</h1>
<form method="post" enctype="multipart/form-data" action="/upload">
    <label for="file">请选择一个您要传入的XML文件:</label>
    <input type="file" name="file" id="file">
    <input type="submit" value="上传">
</form>
</body>
</html>

2.读入并解析传入文件

接着要求我们读出该文件中DateField中的Code元素;

<Data Code="81634910196183669298"/>

并存储在一个类型为List的Java对象里面。
所以我们需要写一个接受客户端传来数据的方法,doPost()方法,其用于从客户端接收JSON格式的字符串,将其转换为Java对象,并进行一些处理。在这个方法中,它使用HttpServletRequest对象的getReader()方法获取客户端发送的数据。然后使用Google Gson库将这个数据转换成一个类型为List的Java对象。
方法写好了后,还得做一个结果展现的网页;
该网页要求也很简单,一个标题,然后每一个Code元素单独成一行,后面需要加入两个输入框,以便后面导出新的XML文件,最后再有两个按钮,一个是保存数据到服务器,另一个是导出服务器里面保存的数据,生成新的XML文件。
网页如图所示:
在这里插入图片描述

3.调用解析后传入文件的值

然后现在要求前端页面能够调用刚刚传入List里的值。
所以我们现在又要写一个方法,doGet()方法,其用于获取Code属性值列表并将其转换为JSON格式的字符串,然后将其发送给客户端。在这个方法中,它调用了一个Java程序来获取Code属性值列表,并将其转换成JSON格式的字符串。然后设置响应的内容类型为JSON,使用PrintWriter对象将JSON格式的数据发送给客户端。
前端网页调用如下图所示:

在这里插入图片描述
上图可以看到,我们已经能在网页端显示传入的XML文件中里Code属性的值了。下面是以上两个方法的源码实现:

@WebServlet("/DataCodesServlet")
public class DataCodesServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        BufferedReader reader = request.getReader();
        Gson gson = new Gson();
        List<String> codes = gson.fromJson(reader, new TypeToken<List<String>>(){}.getType());
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 调用Java程序获取Code属性值列表
        List<String> codes = new ArrayList<>();
        // ...

        // 将Code属性值列表转换为JSON格式
        Gson gson = new Gson();
        String json = gson.toJson(codes);

        // 设置响应内容类型为JSON
        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");

        // 将JSON格式的Code属性值列表发送给客户端
        PrintWriter out = response.getWriter();
        out.print(json);
        out.flush();
    }
}

4.输入新值并与原值一起保存

接下来的需求就是将输入框的两个用户输入的值分别赋给CorpOrderID和ToCorpID,然后点击保存后可以按如下XML文件格式保存到服务器上;

<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="终端接口XML Schema-3.0.xsd" SN="BZ010" Version="3.0" License="1001122">
<Events>
<Event Name="SalesWareHouseOut" MainAction="WareHouseOut">
<ActionMaping>
<Action Name="WareHouseOut">
<ActionData>CorpOrderID</ActionData>
<ActionData>Actor</ActionData>
<ActionData>ToCorpID</ActionData>
<ActionData>ActDate</ActionData>
<ActionData>Code</ActionData>
</Action>
</ActionMaping>
<DataMaping>
<MetaData Name="CorpOrderID" Type="String"/>
<MetaData Name="Actor" Type="String"/>
<MetaData Name="ActDate" Type="Date"/>
<MetaData Name="ToCorpID" Type="String"/>
<MetaData Name="Code" Type="String"/>
</DataMaping>
<DataField>
<Data Code="81634910196183669298" CorpOrderID="1" Actor="admin" ActDate="2023-04-17 01:07:43" DisCorpID="1000127" AssCorpID="" ToCorpID="2" FromPerson="admin"/>
<Data Code="81634910196195965561" CorpOrderID="1" Actor="admin" ActDate="2023-04-17 01:07:43" DisCorpID="1000127" AssCorpID="" ToCorpID="2" FromPerson="admin"/>
<Data Code="81634910190969596093" CorpOrderID="1" Actor="admin" ActDate="2023-04-17 01:07:43" DisCorpID="1000127" AssCorpID="" ToCorpID="2" FromPerson="admin"/>
</DataField>
</Event>
</Events>
</Document>

其中CorpOrderID和ToCorpID是用户自己输入的值,ActDate为系统时间;
最终结果网页图示例如下:
在这里插入图片描述

该结果页面的源码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>XML Data</title>
    <style>
        table {
            border-collapse: collapse;
            width: 100%;
        }
        #my-form button {
            background-color: #007bff;
            color: white;
            border: none;
            padding: 10px 20px;
            border-radius: 5px;
            cursor: pointer;
            font-size: 16px;
        }

        #my-form button:hover {
            background-color: #0069d9;
        }
        #my-form1 button {
            background-color: #007bff;
            color: white;
            border: none;
            padding: 10px 20px;
            border-radius: 5px;
            cursor: pointer;
            font-size: 16px;
        }

        #my-form1 button:hover {
            background-color: #0069d9;
        }

        th, td {
            text-align: center;
            padding: 8px;
            white-space: pre-wrap;
        }

        th {
            background-color: #007bff;
            color: white;
        }

        tr:nth-child(even) {

            background-color: #f2f2f2;
        }

        .hidden {
            display: none;
        }

        .form {
            display: inline-block;
        }

        .input-field {
            margin-left: 10px;
        }
        body {
            margin: 0;
            padding: 0;
        }

        table {
            margin: 0 auto;
        }

        #my-form {
            text-align: center;
            margin-top: 20px;
        }

        h1, h3 {
            margin-top: 20px;
            margin-bottom: 20px;
        }


        .form-text {
            margin-right: 10px;
        }
    </style>
</head>

<body>
<div style="text-align: center;">
    <h1>仓库溯源系统</h1>
</div>
<table>
    <thead>
    <tr>
        <th>Primary Code</th>
        <th>Input Data</th>
    </tr>
    </thead>
    <tbody></tbody>
</table>
<div style="text-align: center;">
    <div style="display: inline-block; text-align: left;">
        <h4>点击保存数据将以上表单数据生成XML文件</h4>
        <h4>点击下载将导出生成XML的文件(注意,请先保存再下载!!!)</h4>
    </div>
</div>
    <div style="text-align: center;">
    <form id="my-form" style="display: inline-block;">
        <!-- 表单元素 -->
        <button type="submit">保存数据</button>
    </form>
    <form id="my-form1" style="display: inline-block;">
        <!-- 表单元素 -->
        <button onclick="exportXML()">下载</button>
    </form>
</div>


<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
    function exportXML() {
        event.preventDefault(); // 阻止默认的表单提交行为
        window.location.href = "http://192.168.2.22:8081/downloadFile?fileName=NewOut.xml";
        alert("已导出XML文件"); // 显示导出文件的消息
    }
    $(document).ready(function() {
        $.ajax({
            type: "GET",
            url: "http://192.168.2.22:8081/data/codes",
            dataType: "json",
            success: function(data) {
                var codes = data.codes;
                var codesArray = codes.toString().split(",");
                var tbody = $("tbody");
                for (var i = 0; i < codesArray.length; i++) {
                    var code = codesArray[i].trim();
                    tbody.append("<tr><td class='code-cell'>" + code + "</td><td class='form-cell'><span class='form-text'>CorpOrderID:</span><input type='text' name='input1' class='input-field' ><span class='form-text'>        ToCorpID:</span><input type='text' name='input2' class='input-field' ></td></tr>");
                }
            }
        });

        $("#my-form").submit(function(event) {
            event.preventDefault();

            var xmlString = '<?xml version="1.0" encoding="utf-8"?><Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="终端接口XML Schema-3.0.xsd" SN="BZ010" Version="3.0" License="1001122"><Events><Event Name="SalesWareHouseOut" MainAction="WareHouseOut"><ActionMaping><Action Name="WareHouseOut"><ActionData>CorpOrderID</ActionData><ActionData>Actor</ActionData><ActionData>ToCorpID</ActionData><ActionData>ActDate</ActionData><ActionData>Code</ActionData></Action></ActionMaping><DataMaping><MetaData Name="CorpOrderID" Type="String"/><MetaData Name="Actor" Type="String"/><MetaData Name="ActDate" Type="Date"/><MetaData Name="ToCorpID" Type="String"/><MetaData Name="Code" Type="String"/></DataMaping><DataField>';

            $("tr").each(function() {
                var code = $(this).find(".code-cell").text().trim();
                var input1 = $(this).find("input[name='input1']").val();
                var input2 = $(this).find("input[name='input2']").val();
                var actDate = new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '');

                if (code != "" && input1 != "" && input2 != "") {
                    xmlString += '<Data Code="' + code + '" CorpOrderID="' + input1 + '" Actor="admin" ActDate="' + actDate + '" DisCorpID="1000127" AssCorpID="" ToCorpID="' + input2 + '" FromPerson="admin"/>';
                }
            });

            xmlString += '</DataField></Event></Events></Document>';

            $.ajax({
                type: "POST",
                url: "http://192.168.2.22:8081/dataout/save",
                data: xmlString,
                contentType: "application/xml",
                success: function() {
                    alert("XML file saved successfully");
                },
                error: function() {
                    alert("Failed to save XML file");
                }
            });
        });
    });
</script>
</body>
</html>

5.将新文件保存

接下来还需写一个保存文件的接口,用于处理HTTP POST请求,当点击下载按钮时,接收一个XML格式的字符串,并将其保存到文件中。文件名为Newout.xml;
源码实现如下:

@PostMapping(value = "/save", consumes = MediaType.APPLICATION_XML_VALUE)
public ResponseEntity<String> saveData(@RequestBody String xmlData) {
    try {
        // 指定保存XML文件的目录
        String filePath = "fileout/NewOut.xml";
        File xmlFile = new File(filePath);

        // 将XML数据转换为字节数组
        byte[] xmlBytes = xmlData.getBytes(StandardCharsets.UTF_8);

        // 将XML数据写入文件
        FileUtils.writeByteArrayToFile(xmlFile, xmlBytes);

        return ResponseEntity.ok("XML文件保存成功。");
    } catch (IOException e) {
        e.printStackTrace();
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("保存XML文件时出错:" + e.getMessage());
    }
}

6.源码

至此我们项目的功能已基本实现;

  1. 传入一个XML文件,读出其中指定的数据;
  2. 将数据每行独立展示并附有输入框;
  3. 将输入框里用户新输入的数据、原XML文件读出的数据,按一定格式输出为一个新的XML文件;

完整源码地址:
链接:https://pan.baidu.com/s/1gjCdZv57J_ddLr5Nmz9aQw?pwd=1213
提取码:1213

以上为初次参与的第一个小项目,如有不足请各位大佬指正,也欢迎大家找我探讨代码问题!祝看官们生活如意,人生就如代码一样一路AC!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于Java和Python的爬虫项目实战码.zip 自己动手写网络爬虫》,并基于Python3和Java实现 为什么采用宽度优先搜索策略? 深度优先遍历可能会在深度上过“深”而陷入“黑洞”; 重要的网页往往距离种子网页比较近,越深的网页的重要性越低; 万维网深度最多17层,但到达某面总存在一条很短的路径,宽度优先遍历会以最快的速度达到这个网页; 宽度优先遍历有利于多爬虫的合作抓取,多爬虫合作通常先抓取站内链接,抓取的封闭性很强; 解析HTML网页---Jsoup Maven中配置: <dependency> <groupId>org.jsoup</gorup> <artifactId>jsoup</artifactId> <version>1.10.3</version> </dependency> 正则表达式: 对URL进行过滤,只提取符合特定格式的链接; 提取网页内容; HTMLParser: 文本抽取; 链接抽取; 资抽取; 链接检查; 站点检查; URL重写; 广告清除; 将HTML页面转化成XML页面; HTML页面清理; Rhino是一个由Java实现的JavaScript语言解析引擎,Rhino的主要功能是管理脚本执行时的运行环境 非HTML解析: PDF文件:PDFBox解析PDF文件 FontBox:处理PDF字体的Java类库 JempBox处理XMP元数据 的Java类库 Office文档:POI项目 POI读写Excel、Word、PPT文件 POI-HSMF读写Outlook POI-HDGF读写Visio POI-HPBF支持Publisher 其他文件 多媒体内容抽取: 抽取视频内容 视频内容一般分为四部分:帧、镜头、情节和节目 关键帧的提取---动态规则策略、基于视觉模型的自适应关键帧提取策略、基于镜头边界系数的关键帧提取策略 基于镜头边界系数的关键帧提取分3个步骤进行: 设置最大关键帧数M 每个镜头的非边界过渡区的第一帧确定为关键帧 【找镜头边界:基于帧差的镜头边界检测方法、基于模型的镜头边界检测方法、基于学习的镜头边界检测方法】 使用非极大值抑制法确定镜头边界系数极大值并排序,以实现基于镜头边界系数的关键帧提取 JMF(Java视频处理): 功能 a)在Java Applet和应用程序中播放贵重物品媒体文件,如AVI、MPEG、WAV等; b)可以播放从互联网上下载的媒体流; c)可以利用麦克风、摄像机等设备截取音频和视频,并只在成多媒体文件; d)处理多媒体文件,转换成文件格式; e)向互联网上传音频和视频数据流; f)在互联网上播放音频和视频数据; 组件 a)数据,如一个媒体文件 b)截取设备,如麦克风、摄像机等 c)播放器-Player,JMF中的接口是Player,将音频/视频数据流作为输入,将数据流输出到音箱或屏幕上 d)处理器-Processor,Processor接口继承了Player接口,支持Player对象所支持的功能外还可以控制对于输入的多媒体数据流进行何种处理以及通过数据向其他Player对象或Processor对象输出数据 e)数据格式-Format,保存多媒体格式信息 f)管理器,4种管理器Manager、PackageManager、CaptureDeviceManager、PlugInManager Sourceforge-org.farng.mp3(Java音频处理): 音乐:歌手名+歌曲名等元信息,以MP3文件大体分为三部分: a) TAG_V2(ID3V2) 包含了作者、作曲、专辑等信息,长度不固定,扩充ID3V1信息 b) Frame 一系列的帧,由帧头(MP3的位率、采样率、版本等信息)和数据实体两部分组成 c) TAG_V1(ID3V1) 包含作者、作曲、专辑等信息,长度128字节 解析Json数据---Json Maven中配置: <dependency> <groupId>com.alibabap</gorup> <artifactId>fastjson</artifactId> <version>1.2.35.3</version> </dependency> 评估页面的重要程度 链接的欢迎程度---反向链接(即指向当前URL的链接)的数量和质量决定的,定义为IB(P); 链接的重要程度---关于URL字符串的函数,仅仅考察字符串本身,比如认为".com"和"home"的URL比".cc"和"map"高,定义为IL(P); 平均链接的深度---根据上面所分析的宽度优先的原则,计算全站的平均链接深度,然后认为距离种子站点越近的重要性越高
第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素概览 2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript简介 2.3.1、JavaScript的基本语法 2.3.2、事件处理 2.3.3、window对象 2.4、本章摘要 2.5、开发实战讲解 第3章 XML简介 3.1、认识XML 3.2、XML解析 3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、编写第一个jsp文件 4.5、交互性 4.6、本章摘要 4.7、开发实战讲解 第5章 JSP基础语法 5.1、JSP注释 5.2、Scriptlet 5.2.1、第一种Scriptlet: 5.2.2、第二种Scriptlet: 5.2.3、第三种Scriptlet: 5.3、Scriptlet标签 5.4、page指令 5.4.1、设置页面的MIME 5.4.2、设置文件编码 5.4.3、错误页的设置 5.4.4、数据库连接操作 5.5、包含指令 5.5.1、静态包含 5.5.2、动态包含 5.6、跳转指令 5.7、实例操作:用户登陆程序实现(JSP + JDBC实现) 5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于Oracle数据库) 第6章 JSP内置对象 6.1、JSP内置对象概览 6.2、四种属性范围 6.2.1、page属性范围(pageContext范围) 6.2.2、request属性范围 6.2.3、session属性范围 6.2.4、application属性范围 6.2.5、深入研究page属性范围 6.3、request对象 6.3.1、乱码解决 6.3.2、接收请求参数 6.3.3、显示全部的头信息 6.3.4、角色验证 6.3.5、其他操作 6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1、取得Session Id 6.5.2、登陆及注销 6.5.3、判断新用户 6.5.4、取得用户的操作时间 6.6、application对象 6.6.1、取得虚拟目录对应的绝对路径 6.6.2、范例讲解:网站计数器 6.6.3、查看application范围的属性 6.7、WEB安全性及config对象 6.7.1、WEB安全性 6.7.2、config对象 6.8、out对象 6.9、pageContext对象 6.10、本章摘要 6.11、开发实战讲解(基于Oracle数据库) 第7章 JavaBean 7.1、JavaBean简介 7.2、在JSP中使用JavaBean 7.2.1、WEB开发的标准目录结构 7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用指令 7.3、JavaBean与表单 7.4、设置属性: 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性: 7.6、JavaBean的保存范围 7.6.1、page范围的JavaBean 7.6.2、request范围的JavaBean 7.6.3、session范围的JavaBean 7.6.4、application范围的JavaBean 7.7、JavaBean的删除 7.8、实例操作:注册验证 7.9、DAO设计模式 7.9.1、DAO设计模式简介 7.9.2、DAO开发 7.9.
第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素概览 2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript简介 2.3.1、JavaScript的基本语法 2.3.2、事件处理 2.3.3、window对象 2.4、本章摘要 2.5、开发实战讲解 第3章 XML简介 3.1、认识XML 3.2、XML解析 3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、编写第一个jsp文件 4.5、交互性 4.6、本章摘要 4.7、开发实战讲解 第5章 JSP基础语法 5.1、JSP注释 5.2、Scriptlet 5.2.1、第一种Scriptlet: 5.2.2、第二种Scriptlet: 5.2.3、第三种Scriptlet: 5.3、Scriptlet标签 5.4、page指令 5.4.1、设置页面的MIME 5.4.2、设置文件编码 5.4.3、错误页的设置 5.4.4、数据库连接操作 5.5、包含指令 5.5.1、静态包含 5.5.2、动态包含 5.6、跳转指令 5.7、实例操作:用户登陆程序实现(JSP + JDBC实现) 5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于Oracle数据库) 第6章 JSP内置对象 6.1、JSP内置对象概览 6.2、四种属性范围 6.2.1、page属性范围(pageContext范围) 6.2.2、request属性范围 6.2.3、session属性范围 6.2.4、application属性范围 6.2.5、深入研究page属性范围 6.3、request对象 6.3.1、乱码解决 6.3.2、接收请求参数 6.3.3、显示全部的头信息 6.3.4、角色验证 6.3.5、其他操作 6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1、取得Session Id 6.5.2、登陆及注销 6.5.3、判断新用户 6.5.4、取得用户的操作时间 6.6、application对象 6.6.1、取得虚拟目录对应的绝对路径 6.6.2、范例讲解:网站计数器 6.6.3、查看application范围的属性 6.7、WEB安全性及config对象 6.7.1、WEB安全性 6.7.2、config对象 6.8、out对象 6.9、pageContext对象 6.10、本章摘要 6.11、开发实战讲解(基于Oracle数据库) 第7章 JavaBean 7.1、JavaBean简介 7.2、在JSP中使用JavaBean 7.2.1、WEB开发的标准目录结构 7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用指令 7.3、JavaBean与表单 7.4、设置属性: 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性: 7.6、JavaBean的保存范围 7.6.1、page范围的JavaBean 7.6.2、request范围的JavaBean 7.6.3、session范围的JavaBean 7.6.4、application范围的JavaBean 7.7、JavaBean的删除 7.8、实例操作:注册验证 7.9、DAO设计模式 7.9.1、DAO设计模式简介 7.9.2、DAO开发 7.9.
第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素概览 2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript简介 2.3.1、JavaScript的基本语法 2.3.2、事件处理 2.3.3、window对象 2.4、本章摘要 2.5、开发实战讲解 第3章 XML简介 3.1、认识XML 3.2、XML解析 3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 4.3.1、Tomcat下载 4.3.2、Tomcat安装 4.3.3、服务器配置 4.4、编写第一个jsp文件 4.5、交互性 4.6、本章摘要 4.7、开发实战讲解 第5章 JSP基础语法 5.1、JSP注释 5.2、Scriptlet 5.2.1、第一种Scriptlet: 5.2.2、第二种Scriptlet: 5.2.3、第三种Scriptlet: 5.3、Scriptlet标签 5.4、page指令 5.4.1、设置页面的MIME 5.4.2、设置文件编码 5.4.3、错误页的设置 5.4.4、数据库连接操作 5.5、包含指令 5.5.1、静态包含 5.5.2、动态包含 5.6、跳转指令 5.7、实例操作:用户登陆程序实现(JSP + JDBC实现) 5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于Oracle数据库) 第6章 JSP内置对象 6.1、JSP内置对象概览 6.2、四种属性范围 6.2.1、page属性范围(pageContext范围) 6.2.2、request属性范围 6.2.3、session属性范围 6.2.4、application属性范围 6.2.5、深入研究page属性范围 6.3、request对象 6.3.1、乱码解决 6.3.2、接收请求参数 6.3.3、显示全部的头信息 6.3.4、角色验证 6.3.5、其他操作 6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1、取得Session Id 6.5.2、登陆及注销 6.5.3、判断新用户 6.5.4、取得用户的操作时间 6.6、application对象 6.6.1、取得虚拟目录对应的绝对路径 6.6.2、范例讲解:网站计数器 6.6.3、查看application范围的属性 6.7、WEB安全性及config对象 6.7.1、WEB安全性 6.7.2、config对象 6.8、out对象 6.9、pageContext对象 6.10、本章摘要 6.11、开发实战讲解(基于Oracle数据库) 第7章 JavaBean 7.1、JavaBean简介 7.2、在JSP中使用JavaBean 7.2.1、WEB开发的标准目录结构 7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用指令 7.3、JavaBean与表单 7.4、设置属性: 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性: 7.6、JavaBean的保存范围 7.6.1、page范围的JavaBean 7.6.2、request范围的JavaBean 7.6.3、session范围的JavaBean 7.6.4、application范围的JavaBean 7.7、JavaBean的删除 7.8、实例操作:注册验证 7.9、DAO设计模式 7.9.1、DAO设计模式简介 7.9.2、DAO开发 7.9.3、JSP调用DAO 7.10、本章摘要 7.11、开发实战讲解(基于Oracle数据库) 第8章 文件上传 8.1、smartupload上传组件 8.1.1、上传单个文件 8.1.2、混合表单 8.1.3、为上传文件自动命名 8.1.4、批量上传 8.2、FileUpload 8.2.1、使用FileUpload接收上传内容 8.2.2、保存上传内容 8.2.3、开发FileUpload组件的专属操作类 8.3、本章摘要 8.4、开发实战讲解(基于Oracle数据库) 第9章 Servlet程序开发 9.1、Servlet简介 9.2、永远的“HelloWorld”:第一个Servlet程序 9.3、Servlet与表单 9.4、Servlet生命周期 9.5、取得初始化配置信息 9.6、取得其他内置对象 9.6.1、取得HttpSession实例 9.6.2、取得ServletContext实例 9.7、Servlet跳转 9.7.1、客户端跳转 9.7.2、服务器端跳转 9.8、WEB开发模式:Mode I与Mode II 9.8.1、Mode I 9.8.2、Mode II:Model-View-Controller 9.9、实例操作:MVC设计模式应用 9.10、过滤器 9.10.1、过滤器的基本概念 9.10.2、实现过滤器 9.10.3、过滤器的应用 9.11、监听器 9.11.1、对application监听 9.11.2、对session监听 9.11.3、对request监听 9.11.4、监听器实例 —— 在线人员统计 9.12、本章摘要 9.13、开发实战讲解(基于Oracle数据库) 第10章 表达式语言 10.1、表达式语言简介 10.2、表达式语言的内置对象 10.2.1、访问四种属性范围的内容 10.2.2、调用内置对象操作 10.2.3、接收请求参数 10.3、集合操作 10.4、在MVC中应用表达式语言 10.5、运算符 10.6、本章摘要 10.7、开发实战讲解(基于Oracle数据库) 第11章 Tomcat数据 11.1、数据操作原理 11.2、在Tomcat中使用数据库连接池 11.3、查找数据 11.4、本章摘要 第12章 JSP标签编程 12.1、标签编程简介 12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5、定义有标签体的标签库 12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 12.9、使用BodyTagSupport开发迭代输出 12.10、简单标签 12.11、DynamicAttributes接口 12.12、本章摘要 第13章 标准标签库(JSTL) 13.1、JSTL简介 13.2、安装JSTL 1.2 13.3、核心标签库 13.3.1、标签 13.3.2、标签 13.3.3、标签 13.3.4、标签 13.3.5、标签 13.3.6、、、标签 13.3.7、标签 13.3.8、标签 13.3.9、标签 13.3.10、标签 13.3.11、标签 13.4、国际化标签库 13.4.1、标签 13.4.2、标签 13.4.3、读取文件 13.4.4、数字格式化标签 13.4.5、日期时间格式化标签 13.4.6、设置时区 13.5、SQL标签库 13.5.1、 13.5.2、数据库操作标签 13.5.3、事务处理 13.6、XML标签库 13.6.1、XPath简介 13.6.2、标签 13.6.3、标签 13.6.4、标签 13.6.5、标签 13.6.6、、、标签 13.6.7、标签 13.7、函数标签库 13.8、本章摘要 13.9、开发实战讲解(基于Oracle数据库) 第14章 AJAX开发技术 14.1、AJAX技术简介 14.2、XMLHttpRequest对象 14.3、第一个AJAX程序 14.4、异步验证 14.5、返回XML数据 14.6、本章摘要 14.7、开发实战讲解(基于Oracle数据库) 第15章 Struts基础开发 15.1、Struts简介 15.2、配置Struts开发环境 15.3、开发第一个Struts程序 15.4、Struts工作原理 15.5、深入Struts应用 15.6、本章摘要 15.7、开发实战讲解(基于Oracle数据库) 第16章 Struts常用标签库 16.1、Struts标签库简介 16.2、Bean标签 16.2.1、标签 16.2.2、标签 16.2.3、资访问标签 16.2.4、标签 16.2.5、标签 16.2.6、标签 16.2.7、国际化与标签 16.3、Logic标签 16.3.1、标签和标签 16.3.2、标签和标签 16.3.3、关系运算标签 16.3.4、标签 16.3.5、重定向标签: 16.4、Html标签 16.4.1、<html:form>标签 16.4.2、<html:text>与<html:password>标签 16.4.3、<html:radio>标签 16.4.5、<html:textarea>标签 16.4.6、<html:hidden>标签 16.4.7、按钮标签 16.4.8、实例:编写基本表单 16.4.9、复选框标签 16.4.10、下拉列表框 16.5、本章摘要 16.6、开发实战讲解(JSP + Oracle) 第17章 Struts高级开发 17.1、Struts多人开发 17.2、Token 17.3、文件上传 17.4、动态ActionForm 17.5、Action深入 17.5.1、ForwardAction 17.5.2、IncludeAction 17.5.3、DispatchAction 17.6、验证框架 附录A:实用工具 18.1、JavaMail 18.1.1、James邮件服务器的下载及配置 18.1.2、JavaMail简介及配置 18.1.3、发送普通邮件 18.1.4、发送带附件的HTML风格邮件 18.2、操作Excel文件 18.2.1、JExcelAPI简介 18.2.2、创建一个Excel文件 18.2.3、读取Excel文件 18.2.4、格式化文本 18.3、本章摘要 附录B:MyEclipse开发工具 19.1、MyEclipse简介 19.2、MyEclipse的安装 19.3、MyEclipse的使用 19.4、配置Tomcat服务器 19.5、MyEclipse卸载 19.6、本章摘要 附录C:HTTP状态码及头信息 20.1、HTTP状态码 20.2、HTTP头信息

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值