HTTP协议及Servlet详解

目录

HTTP协议

1、HTTP协议简介

2、HTTP协议特点

3、HTTP协议通信流程(工作原理)

 4、HTTP报文格式

4.1、HTTP请求报文

4.2、HTTP响应报文

4.3、HTTP状态消息

Servlet详解

1、Servlet核心接口和类

1.1、Servlet接口

 1.2、GenericServlet抽象类

1.3、HttpServlet类

2、Servlet两种创建方式

2.1、实现Servlet接口

3、Servlet两种配置方式

3.1、使用web.xml配置

3.2、资源配置属性

3.3使用注释配置

3.4、@WebServlet注解常用属性

Servlet应用

1、Request对象

 1.1、got和post区别

1.2、request主要方法

1.3request应用

 1.4、get请求收参问题

1.5、get中文乱码

1.6、post中文乱码

2、response对象

 2.1、response主要方法

2.2、response应用

 2.3、解决输出中文乱码


HTTP协议

1、HTTP协议简介

HTTP(HyperText Transfer Protocol),超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个基于请求与响应模式的、无状态的、应用层的协议,运行于TCP协议基础之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

2、HTTP协议特点

(1)支持客户端(浏览器)/服务器模式。

(2)简单快速:客户端只向服务器发送请求方法和路径,服务器即可响应数据,因而通信速度很快。请求方法常用的有get和post等。

(3)灵活:HTTP允许传输任意类型的数据,传输的数据类型由Content-Type标识。

(4)无连接:无连接指的是每次TC连接只处理一个或多个请求,服务器处理完客户的请求后,即断开连接。采用这种方式可以节省传输时间。

HTTP1.0版本一个请求响应之后,直接就断开了。称为短连接。

HTTP1.1版本不是响应之后直接就断开了,而是等几秒钟,这几秒钟之内有新的请求,那么还是通过之前的连接通道来收发消息,如果过了这几秒钟用户没有发送新的请求,就会断开连接。称为长连接。

(5)无状态:HTTP协议是无状态协议。

无状态是指协议对于事务处理没有记忆能力。

3、HTTP协议通信流程(工作原理)

HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:

(1)客户端与服务器建立连接(三次握手)。

(2)客户向服务器发送请求。

(3)服务器接受请求,并根据请求返回响应的文件作为应答。

(4)客户与服务器关闭连接(四次挥手)。

客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接。这种一次性连接主要考虑到WWW服务器面向的是Internet中成千上万个用户,且只能提供有限个连接,故服务器不会让一个连接处于等待状态,及时地释放连接可以大大提高服务器的执行效率。

HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。HTTP是一种面向对象的协议。允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。当用户在一个HTML文档中定义了一个超文本链后,浏览器将通过TCP/IP协议与指定的服务器建立连接。

HTTP支持持久连接,在HTTP / 0.9和1.0中,连接在单个请求/响应对之后关闭。在HTTP / 1.1中,引入了保持活动机制,其中连接可以重用于多个请求。这样的持久性连接可以明显减少请求延迟,因为在发送第一个请求之后,客户端不需要重新协商TCP 3-Way-Handshake连接。另一个积极的副作用是,通常,由于TCP的缓慢启动机制,连接随着时间的推移而变得更快。

该协议的1.1版还对HTTP / 1.0进行了带宽优化改进。例如,HTTP / 1.1引入了分块传输编码,以允许流传输而不是缓冲持久连接上的内容。HTTP流水线进一步减少了延迟时间,允许客户端在等待每个响应之前发送多个请求。协议的另一项附加功能是字节服务,即服务器仅传输客户端明确请求的资源部分。

从技术上讲是客户在一个特定的TCP端口(端口号一般为80)上打开一个套接字。如果服务器一直在这个周知的端口上倾听连接,则该连接便会建立起来。然后客户通过该连接发送一个包含请求方法的请求块。

HTTP规范定义了9种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和POST。服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。

 4、HTTP报文格式

HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应构成。

4.1、HTTP请求报文

当浏览器向Web服务器发出请求时,它向服务器传送了一个数据块,也就是所谓的请求信息(请求报文),HTTP请求信息由4个部分组成,分别是:1、请求行 请求方法/地址/ URI协议/版本 2、请求头(Request Header) 3、空行 4、请求正文

4.2、HTTP响应报文

HTTP响应报文与HTTP请求报文相似,HTTP响应报文也由4个部分组成:1、状态行 2、响应头(Response Header) 3、空行 4、响应正文

4.3、HTTP状态消息

HTTP的状态消息有很多,在这里主要列举最常见的一些状态消息。

状态代码状态描述说明
200OK客户端请求成功
302Found临时重定向
403Forbidden服务器收到请求,但是拒绝提供服务。 服务器通常会在响应正文中给出不提供服务的原因
404Not Found请求的资源不存在,最常见的就是输入了错误的路径
500Internal Server Error服务器发生不可预期的错误,导致无法完成客户端的请求

Servlet详解

1、Servlet核心接口和类

在Servlet体系结构中,除了第三节中讲的实现Servlet接口,还可以通过继承GenericServlet或HttpServlet类,完成自定义Servlet的编写。

1.1、Servlet接口

在Servlet API中最重要的是Servlet接口,所有Servlet都会直接或间接的与该接口发生联系,或是直接实现该接口,或间接继承自实现了该接口的类。该接口中包括以下5个方法:

destroy()
ServletConfig getServletConfig()
String getServletInfo()
void init(ServletConfig arg0)
void service(ServletRequest arg0, ServletResponse arg1)

 1.2、GenericServlet抽象类

GenericServlet使编写Servlet变得更容易。它提生命周期方法init和destroy的简单实现,要编写一般的Servlet,只需要重写service方法即可。

1.3、HttpServlet类

1)HttpServlet是在继承GenericServlet的基础上进一步的扩展。提供将要被子类化以创建适用于Web站点的HTTP servlet的抽象类。

2)HTTPServlet的子类至少必须重写一个方法,该方法通常是:

  • doGet():用于HTTP GET请求

  • doPost():用于HTTP POST请求

  • doPut():用于HTTP PUT请求

  • doDelete():用于HTTP DELETE请求

2、Servlet两种创建方式

2.1、实现Servlet接口

使用这种方式创建Servlet类比较麻烦,需要重写Servlet接口中的所有方法

package com.cxyzxc.www.servlet01;

import javax.servlet.*;
import java.io.IOException;

/**
 * 使用实现Servlet接口创建的Servlet类
 */

public class MyServlet01 implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("使用实现Servlet接口创建的MyServlet类");
        servletResponse.getWriter().println("Servlet is very interesting ");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

2.2、继承HttpServlet(推荐使用)

package com.cxyzxc.www.servlet01;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 使用继承HttpServlet类创建的MyServlet类,开发中推荐使用这种方式
 */

public class MyServlet02 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("使用继承HttpServlet类创建的MyServlet类");
        resp.getWriter().println("Servlet is very funny ");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       doGet(req, resp);
    }
}

3、Servlet两种配置方式

3.1、使用web.xml配置

这种配置是Servlet2.5之前使用的

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <!-- Servlet名称 -->
        <servlet-name>myServlet01</servlet-name>
        <!-- Servlet的全称类名 -->
        <servlet-class>com.cxyzxc.www.servlet01.MyServlet01</servlet-class>
       <!-- 启动的优先级,数字越小越先起作用 -->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Servlet映射配置 -->
    <servlet-mapping>
        <!-- Servlet名称 -->
        <servlet-name>myServlet01</servlet-name>
        <!-- 资源的匹配原则:精确匹配 -->
        <url-pattern>/servlet01</url-pattern>
    </servlet-mapping>
</web-app>

3.2、资源配置属性

 url-pattern定义匹配规则,取值说明:
    精确匹配        /具体的名称  只有url路径是具体的名称的时候才会触发Servlet
    后缀匹配        *.xxx      只要是以xxx结尾的就匹配触发Servlet
    通配符匹配      /*         匹配所有请求,包含服务器的所有资源
    通配符匹配      /          匹配所有请求,包含服务器的所有资源,不包括.jsp

 load-on-startup
    1)元素标记容器是否应该在web应用程序启动的时候就加载这个servlet。
    2)它的值必须是一个整数,表示servlet被加载的先后顺序。
    3)如果该元素的值为负数或者没有设置,则容器会当servlet被请求时再加载。
    4)如果值为整数或0时,表示容器在应用启动时就加载并初始化这个servlet,值越小,servlet的优先级越高,就越先被加载。值相同时,容器就会自己选择顺序来加载。

3.3使用注释配置

这种配置是Servlet3.0之后使用的,推荐使用这种方式

@WebServlet("/servlet02")
public class MyServlet02 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("使用继承HttpServlet类创建的MyServlet类");
        resp.getWriter().println("Servlet is very funny ");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       doGet(req, resp);
    }
}

3.4、@WebServlet注解常用属性

  • name:Servlet名字(可选)

  • value:配置url路径,可以配置多个

  • urlPatterns:配置url路径,和value作用一样,不能同时使用

  • loadOnStartup:配置Servlet的创建的时机,如果是0或者正数,启动程序时创建,如果是负数,则访问时创建。数字越小优先级越高。

Servlet应用

1、Request对象

在Servlet中用来处理客户端请求需要用doGet或doPost方法中的request对象。

 1.1、got和post区别

get请求

  • get提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连

  • get方式明文传递,数据量小,不安全

  • 效率高,浏览器默认请求方式为get请求

  • 对应的Servlet的方法是doGet()

post请求

  • post方法是把提交的数据放在HTTP包的body中

  • 密文传递数据,数据量大,安全

  • 效率没有get高

  • 对应的Servlet的方法是doPost()

1.2、request主要方法

方法名方法说明
String getParameter(String name)根据表单组件名称获取提交的数据
void setCharacterEncoding(String charset)指定每个请求的编码

1.3request应用

c

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>欢迎页面</title>
</head>
<body>
    <h1>欢迎你</h1>
    <form action="welcomeServlet" method="post">
        <label>姓名:</label><input type="text" name="username" /><br />
        <label>年龄:</label><input type="text" name="userage" /><br />
        <input type="submit" value="提交" />
    </form>
</body>
</html>

1.3.2、编写Servlet页面

package com.cxyzxc.www.demo01;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/welcomeServlet")
public class WelcomeServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取表单提交的姓名
        String username = req.getParameter("username");
        //获取表单提交的年龄
        String userage = req.getParameter("userage");
        //服务器端输出获取到的数据
        System.out.println("客户端发来的信息:姓名:"+username+",年龄:"+userage);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req,resp);
    }
}

1.3.3、浏览器提交

 1.3.4、后台获取数据

 1.4、get请求收参问题

get请求发送后,在服务器端获取数据产生乱码,是因为服务器和客户端沟通的编码不一致造成的,所以解决办法是在客户端和服务器之间设置一个统一的编码,之后就按照设置的编码进行数据的传输和接收。

1.5、get中文乱码

在Tomcat7及以下版本,客户端以UTF-8的编码传输数据到服务器端,而服务器端的request对象使用的是ISO8859-1这个字符编码来接收数据,服务器和客户端沟通的编码不一致,因此会产生中文乱码。

1)解决办法:在接收到数据后,先获取request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题。

2)Tomcat8的版本中get不会出现乱码了,因为服务器对url的编码格式可以自动转换。

1.6、post中文乱码

由于客户端是以UTF-8字符编码将表单数据传输到服务器端的,因此服务器端也需要设置以UTF-8字符编码进行接收。

解决方法:使用从ServletRequest接口继承而来的setCharacterEncoding(charset)方法进行统一的编码设置。

2、response对象

response对象用于响应客户请求并向客户端输出信息

 2.1、response主要方法

方法名称方法作用
setHeader(name,value)设置响应信息头
setContenType(String)设置响应文件类型、响应式的编码格式
setCharacterEncoding(String)设置服务端响应内容编码格式
getWriter()获取字符输出流

2.2、response应用

 

 如果输出内容包含中文,则出现乱码,因为服务器默认采用ISO8859-1编码响应内容

 2.3、解决输出中文乱码

方式一:设置服务器端响应的编码格式和设置客户端响应内容的头内容的文件类型及编码格式,这种方式不推荐

 方式二:同时设置服务端的编码格式和客户端响应的文件类型及响应时的编码格式,推荐此方式

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
全书一共被压缩为5个rar,这是第二个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.   本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很多例子都是目前web开发中经常使用的功能,具有相当的实用价值。本书不仅可以作为java web开发的学习用书,还可以作为从事java web开发的程序员的参考用书和必备手册。此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml与dtd 2 1.1 xml的产生 2 1.2 w3c介绍 2 1.3 关于xml的几个问题 3 1.4 xml与html的比较 4 1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有一个根元素 6 1.5 xml的编辑工具 7 1.6 xml文档 8 1.6.1 xml声明 9 1.6.2 文档类型声明 10 1.6.3 元素 11 1.6.4 注释 15 1.6.5 处理指令 15 1.6.6 空白处理 16 1.6.7 行尾处理 16 1.6.8 语言标识 16 1.7 格式良好的xml 17 .1.8 dtd 18 1.8.1 在xml文档中引入dtd 18 1.8.2 dtd的结构 21 1.9 有效的xml 35 1.10 xml处理器/解析器 35 1.11 小结 36 第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd 43 2.4 小结 45 第3章 对xml文档进行分析 46 3.1 dom、sax和jaxp 46 3.2 使用dom解析xml文档 47 3.2.1 dom结构模型 47 3.2.2 dom解析器工厂 50 3.2.3 jaxp的错误类和异常类 52 3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理机制 66 3.3.2 配置sax解析器 69 3.3.3 sax解析器工厂 70 3.3.4 sax的异常类 71 3.3.5 errorhandler接口 73 3.3.6 使用sax解析xml文档实例 74 3.4 jdom 83 3.4.1 下载并配置jdom 83 3.4.2 jdom api介绍 84 3.5 dom4j 88 3.5.1 下载并配置dom4j 88 3.5.2 dom4j api介绍 88 3.5.3 第一个实例 92 3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 xslt概述 101 4.2 xalan处理器 105 4.3 模板规则 106 4.4 [xsl:apply-templates]元素 107 4.5 [xsl:value-of]元素 108 4.6 [xsl:for-each]元素 110 4.7 匹配节点的模式 111 4.8 mode属性 113 4.9 内置的模板规则 114 4.10 对空白的处理 115 4.11 xpath语言 116 4.11.1 xpath上下文 116 4.11.2 位置路径 117 4.11.3 表达式 121 4.11.4 核心函数库 123 4.12 创建结果树 126 4.12.1 创建元素和属性 127 4.12.2 创建文本 131 4.12.3 创建处理指令 133 4.12.4 创建注释 133 4.12.5 复制节点 134 4.12.6 输出格式化的数字 135 4.13 条件处理 144 4.13.1 [xsl:if] 144 4.13.2 [xsl:choose] 145 4.14 排序 146 4.15 变量和参数 150 4.15.1 变量 150 4.15.2 参数 152 4.16 命名模板 153 4.17 合并样式表 154 4.17.1 导入样式表 154 4.17.2 包含样式表 155 4.18 模板规则冲突的解决 156 4.19 [xsl:output]元素 157 4.19.1 指定输出文档的格式 158 4.19.2 输出xml声明 158 4.19.3 输出文档类型定义 159 4.19.4 输出cdata段 160 4.19.5 指定文档缩进 161 4.19.6 指定媒体类型 161 4.20 xslt中的函数 162 4.21 数字格式化 162 4.22 查询和分组 164 4.23 处理多个输入文档 172 4.24 jaxp中的xslt api 175 4.24.1 转换器工厂 175 4.24.2 transformer和templates 176 4.24.3 一个例子 178 4.25 小结 179 第2部分 servlet篇 第5章 servlet与tomcat 182 5.1 servletservlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动分析 189 5.5.4 tomcat的体系结构 191 5.6 tomcat的管理程序 193 5.6.1 admin web应用程序 193 5.6.2 manager web应用程序 194 5.7 小结 195 第6章 servlet技术 196 6.1 servlet api 196 6.1.1 servlet接口 196 6.1.2 servlet相关接口与实现类 197 6.2 几个实例 205 6.2.1 实例一:simplehello 205 6.2.2 实例二:welcomeyou 210 6.2.3 实例三:outputinfo 216 6.2.4 实例四:loginservlet 220 6.3 servlet异常 223 6.3.1 servletexception类 224 6.3.2 unavailableexception类 224 6.4 servlet生命周期 224 6.5 servlet上下文 226 6.5.1 servletcontext接口 226 6.5.2 页面访问量统计实例 228 6.6 请求转发 231 6.6.1 requestdispatcher接口 232 6.6.2 得到requestdispatcher对象 232 6.6.3 请求转发的实例 233 6.6.4 sendredirect()和forward()方法的区别 238 6.7 小结 239 第7章 web应用程序的部署 240 7.1 配置任意目录下的web应用程序 240 7.2 war文件 242 7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素 249 7.5 一个实例 250 7.6 小结 253 第8章 数据库访问 254 8.1 驱动程序的类型 254 8.1.1 jdbc-odbc桥 254 8.1.2 部分本地api java驱动程序 255 8.1.3 jdbc网络纯java驱动程序 255 8.1.4 本地协议的纯java驱动程序 256 8.2 安装数据库 256 8.3 jdbc api 260 8.3.1 加载并注册数据库驱动 261 8.3.2 建立到数据库的连接 263 8.3.3 访问数据库 264 8.3.4 事务处理 289 8.3.5 可滚动和可更新的结果集 296 8.4 jdbc数据源和连接池 299 8.5 mysql对中文的处理 302 8.6 小结 302 第9章 会话跟踪 303 9.1 用于会话跟踪的技术 303 9.1.1 ssl会话 304 9.1.2 cookies 304 9.1.3 url重写 305 9.2 java servlet api的会话跟踪 306 9.2.1 httpsession接口 306 9.2.2 session的生命周期 307 9.2.3 cookie的应用 319 9.2.4 httpsessionbindinglistener接口 328 9.2.5 在线人数统计程序 329 9.3 小结 335 第10章 servlet的异常处理机制 337 10.1 声明式异常处理 338 10.1.1 http错误代码的处理 338 10.1.2 java异常的处理 341 10.2 程序式异常处理 343 10.2.1 在try-catch语句中处理异常 343 10.2.2 使用requestdispatcher来处理异常 346 10.3 小结 349 第11章 开发线程安全的servlet 350 11.1 多线程的servlet模型 350 11.2 线程安全的servlet 351 11.2.1 变量的线程安全 351 11.2.2 属性的线程安全 360 11.3 singlethreadmodel接口 362 11.4 小结 363 11.5 思考题 363 第3部分 jsp篇 第12章 jsp技术 366 12.1 jsp简介 366 12.2 jsp的运行机制 366 12.3 jsp的语法 371 12.3.1 指令元素(directive elements) 371 12.3.2 脚本元素(scripting elements) 374 12.3.3 动作元素(action elements) 376 12.3.4 注释 383 12.4 jsp的隐含对象 383 12.4.1 pagecontext 384 12.4.2 out 385 12.4.3 page 385 12.4.4 exception 386 12.5 对象和范围 387 12.6 留言板程序 389 12.7 留言板管理程序 397 12.8 jsp文档 402 12.8.1 jsp文档的标识 404 12.8.2 jsp文档中的元素语法 404 12.9 小结 407 第13章 jsp与javabean 409 13.1 javabean简介 409 13.1.1 属性的命名 409 13.1.2 属性的类型 411 13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 13.2.2 [jsp:setproperty] 413 13.2.3 [jsp:getproperty] 414 13.2.4 示例 414 13.3 网上书店程序 418 13.4 小结 440 第14章 jsp开发的两种模型 441 14.1 模型1 441 14.2 模型2 445 14.3 小结 449 第15章 标签库(tag library) 450 15.1 标签库api 450 15.1.1 标签的形式 451 15.1.2 tag接口 451 15.1.3 iterationtag接口 453 15.1.4 bodytag接口 454 15.2 标签库描述符 455 15.2.1 [taglib]元素 456 15.2.2 [validator]元素 457 15.2.3 [listener]元素 457 15.2.4 [tag]元素 458 15.2.5 [tag-file]元素 460 15.2.6 [function]元素 461 15.3 传统标签的开发 462 15.3.1 实例一:[hello]标签 462 15.3.2 实例二:[max]标签 465 15.3.3 实例三:[greet]标签 467 15.3.4 实例四:[switch]标签 469 15.3.5 实例五:[iterate]标签 473 15.4 简单标签的开发 479 15.4.1 simpletag接口 479 15.4.2 实例一:[welcome]标签 480 15.4.3 实例二:[max_ex]标签 481 15.5 小结 483 第16章 表达式语言(el) 484 16.1 语法 484 16.1.1 “[ ]”和“.”操作符 484 16.1.2 算术操作符 484 16.1.3 关系操作符 485 16.1.4 逻辑操作符 485 16.1.5 empty操作符 485 16.1.6 条件操作符 485 16.1.7 圆括号 486 16.1.8 操作符的优先级 486 16.2 隐含对象 486 16.3 命名变量 487 16.4 保留的关键字 488 16.5 函数 488 16.6 小结 489 第17章 jsp标准标签库(jstl) 490 17.1 jstl简介 490 17.2 配置jstl 491 17.3 core标签库 491 17.3.1 一般用途的标签 492 17.3.2 条件标签 496 17.3.3 迭代标签 498 17.3.4 url相关的标签 501 17.4 i18n标签库 506 17.4.1 国际化标签 506 17.4.2 格式化标签 511 17.5 sql标签库 520 17.5.1 [sql:setdatasource] 520 17.5.2 [sql:query] 521 17.5.3 [sql:param] 524 17.5.4 [sql:dateparam] 525 17.5.5 [sql:update] 526 17.5.6 [sql:transaction] 527 17.6 xml标签库 529 17.6.1 核心操作 529 17.6.2 流程控制 532 17.6.3 转换操作 536 17.7 functions标签库 539 17.7.1 fn:contains 539 17.7.2 fn:containsignorecase 539 17.7.3 fn:startswith 540 17.7.4 fn:endswith 541 17.7.5 fn:indexof 541 17.7.6 fn:replace 542 17.7.7 fn:substring 543 17.7.8 fn:substringbefore 544 17.7.9 fn:substringafter 544 17.7.10 fn:split 545 17.7.11 fn:join 546 17.7.12 fn:tolowercase 547 17.7.13 fn:touppercase 547 17.7.14 fn:trim 548 17.7.15 fn:escapexml 548 17.7.16 fn:length 549 17.8 小结 549 第18章 标签文件(tag files) 551 18.1 标签文件的语法 551 18.2 一个简单的标签文件 551 18.3 标签文件的隐含对象 554 18.4 标签文件的指令 555 18.4.1 tag指令 555 18.4.2 attribute指令 556 18.4.3 variable指令 557 18.5 标签文件实例讲解 558 18.5.1 实例一:[welcome]标签 558 18.5.2 实例二:[tohtml]标签 559 18.6 [jsp:invoke]动作元素 561 18.7 [jsp:dobody]动作元素 562 18.8 小结 562 第4部分 应用篇 第19章 使用log4j进行日志操作 564 19.1 log4j介绍 564 19.1.1 logger组件 564 19.1.2 appender组件 566 19.1.3 layout组件 567 19.2 使用log4j 568 19.3 log4j使用实例 572 19.4 ndc和mdc 585 19.5 小结 587 第20章 filter在web开发中的应用 588 20.1 过滤器概述 588 20.2 filter api 589 20.2.1 filter接口 589 20.2.2 filterconfig接口 590 20.2.3 filterchain接口 590 20.3 过滤器的部署 591 20.4 过滤器的开发 592 20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与国际化 610 21.1 中文乱码问题产生的由来 610 21.1.1 常用字符集 610 21.1.2 对乱码产生过程的分析 612 21.2 中文乱码问题的解决方案 614 21.3 使用过滤器解决中文问题 616 21.4 让tomcat支持中文文件名 620 21.5 国际化与本地化 621 21.5.1 locale 621.. 21.5.2 资源包 623 21.5.3 编写国际化的web应用程序 625 21.6 小结 629 第22章 使用jbuilder2005开发web 第22章 应用程序 630 22.1 jbuilder2005简介 630 22.2 集成开发环境介绍 631 22.2.1 菜单栏 631 22.2.2 主工具栏 632 22.2.3 工程工具栏和工程窗口 632 22.2.4 结构窗口 633 22.2.5 文件标签和内容窗口 634 22.2.6 文件视图标签 634 22.2.7 消息窗口 637 22.3 jbuilder2005的基本配置 638 22.3.1 配置jdk 638 22.3.2 配置web服务器 640 22.4 文件的上传和下载 642 22.4.1 基于表单的文件上传 642 22.4.2 文件上传格式分析 643 22.4.3 commons-fileupload组件 644 22.4.4 文件上传实例 646 22.4.5 文件下载实例 656 22.5 给图片添加水印和文字 664 22.6 小结 667 第23章 开发安全的web应用程序 668 23.1 概述 668 23.2 理解验证机制 669 23.2.1 http basic authentication 669 23.2.2 http digest authentication 670 23.2.3 https client authentication 670 23.2.4 form based authentication 671 23.3 声明式安全 671 23.3.1 [security-constraint]元素 671 23.3.2 [login-config]元素 673 23.3.3 基本验证的实现 674 23.3.4 基于表单验证的实现 676 23.3.5 使用数据库保存用户名和密码 678 23.4 程序式安全 682 23.5 sql注入攻击的防范 685 23.6 小结 687 第24章 web应用程序开发实例 688 24.1 图像的缩放 688 24.2 如何动态生成验证码 692 24.3 如何避免表单的重复提交 696 24.3.1 在客户端避免表单的重复提交 697 24.3.2 在服务器端避免表单的重复 24.3.2 提交 700 24.4 小结 706 第25章 使用ant辅助web应用程序 第25章 开发 707 25.1 ant介绍 707 25.2 安装并配置ant 708 25.2.1 下载并安装ant 708 25.2.2 设置ant的运行环境 708 25.3 编写ant的构建文件 709 25.3.1 准备工作 709 25.3.2 工程([project]) 712 25.3.3 目标([target]) 713 25.3.4 任务 714 25.3.5 path-like structures 728 25.3.6 引用(references) 729 25.4 部署到tomcat 730 25.5 运行ant 732 25.6 小结 732 第26章 xml和xslt在web开发中的 第26章 应用 733 26.1 功能概述 733 26.2 程序设计 733 26.2.1 软件架构 733 26.2.2 页面设计 735 26.2.3 数据库设计 747 26.3 程序实现 749 26.3.1 org.sunxin.guestbook 749 26.3.2 org.sunxin.guestbook.beans 750 26.3.3 org.sunxin.guestbook.util 758 26.3.4 org.sunxin.guestbook.parser 762 26.3.5 org.sunxin.guestbook.controller 765 26.3.6 org.sunxin.guestbook.view 787 26.3.7 page.xsl 791 26.3.8 web.xml 797 26.3.9 context.xml 798 26.4 小结 798 附录a 快速掌握html 799 附录b 解析http 820 附录c server.xml文件 833 附录d web.xml文件 840 索引 852...
全书一共被压缩为5个rar,这是第三个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.   本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。.. 本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很多例子都是目前web开发中经常使用的功能,具有相当的实用价值。本书不仅可以作为java web开发的学习用书,还可以作为从事java web开发的程序员的参考用书和必备手册。此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml与dtd 2 1.1 xml的产生 2 1.2 w3c介绍 2 1.3 关于xml的几个问题 3 1.4 xml与html的比较 4 1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有一个根元素 6 1.5 xml的编辑工具 7 1.6 xml文档 8 1.6.1 xml声明 9 1.6.2 文档类型声明 10 1.6.3 元素 11 1.6.4 注释 15 1.6.5 处理指令 15 1.6.6 空白处理 16 1.6.7 行尾处理 16 1.6.8 语言标识 16 1.7 格式良好的xml 17 .1.8 dtd 18 1.8.1 在xml文档中引入dtd 18 1.8.2 dtd的结构 21 1.9 有效的xml 35 1.10 xml处理器/解析器 35 1.11 小结 36 第2章 xml名称空间 38 2.1 声明名称空间 38 2.2 名称空间在元素和属性中的运用 39 2.2.1 名称空间在元素中的运用 39 2.2.2 默认名称空间 41 2.2.3 名称空间在属性中的运用 42 2.3 名称空间和dtd 43 2.4 小结 45 第3章 对xml文档进行分析 46 3.1 dom、sax和jaxp 46 3.2 使用dom解析xml文档 47 3.2.1 dom结构模型 47 3.2.2 dom解析器工厂 50 3.2.3 jaxp的错误类和异常类 52 3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理机制 66 3.3.2 配置sax解析器 69 3.3.3 sax解析器工厂 70 3.3.4 sax的异常类 71 3.3.5 errorhandler接口 73 3.3.6 使用sax解析xml文档实例 74 3.4 jdom 83 3.4.1 下载并配置jdom 83 3.4.2 jdom api介绍 84 3.5 dom4j 88 3.5.1 下载并配置dom4j 88 3.5.2 dom4j api介绍 88 3.5.3 第一个实例 92 3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和名称空间 98 3.7 小结 99 第4章 xsl转换 101 4.1 xslt概述 101 4.2 xalan处理器 105 4.3 模板规则 106 4.4 [xsl:apply-templates]元素 107 4.5 [xsl:value-of]元素 108 4.6 [xsl:for-each]元素 110 4.7 匹配节点的模式 111 4.8 mode属性 113 4.9 内置的模板规则 114 4.10 对空白的处理 115 4.11 xpath语言 116 4.11.1 xpath上下文 116 4.11.2 位置路径 117 4.11.3 表达式 121 4.11.4 核心函数库 123 4.12 创建结果树 126 4.12.1 创建元素和属性 127 4.12.2 创建文本 131 4.12.3 创建处理指令 133 4.12.4 创建注释 133 4.12.5 复制节点 134 4.12.6 输出格式化的数字 135 4.13 条件处理 144 4.13.1 [xsl:if] 144 4.13.2 [xsl:choose] 145 4.14 排序 146 4.15 变量和参数 150 4.15.1 变量 150 4.15.2 参数 152 4.16 命名模板 153 4.17 合并样式表 154 4.17.1 导入样式表 154 4.17.2 包含样式表 155 4.18 模板规则冲突的解决 156 4.19 [xsl:output]元素 157 4.19.1 指定输出文档的格式 158 4.19.2 输出xml声明 158 4.19.3 输出文档类型定义 159 4.19.4 输出cdata段 160 4.19.5 指定文档缩进 161 4.19.6 指定媒体类型 161 4.20 xslt中的函数 162 4.21 数字格式化 162 4.22 查询和分组 164 4.23 处理多个输入文档 172 4.24 jaxp中的xslt api 175 4.24.1 转换器工厂 175 4.24.2 transformer和templates 176 4.24.3 一个例子 178 4.25 小结 179 第2部分 servlet篇 第5章 servlet与tomcat 182 5.1 servletservlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动分析 189 5.5.4 tomcat的体系结构 191 5.6 tomcat的管理程序 193 5.6.1 admin web应用程序 193 5.6.2 manager web应用程序 194 5.7 小结 195 第6章 servlet技术 196 6.1 servlet api 196 6.1.1 servlet接口 196 6.1.2 servlet相关接口与实现类 197 6.2 几个实例 205 6.2.1 实例一:simplehello 205 6.2.2 实例二:welcomeyou 210 6.2.3 实例三:outputinfo 216 6.2.4 实例四:loginservlet 220 6.3 servlet异常 223 6.3.1 servletexception类 224 6.3.2 unavailableexception类 224 6.4 servlet生命周期 224 6.5 servlet上下文 226 6.5.1 servletcontext接口 226 6.5.2 页面访问量统计实例 228 6.6 请求转发 231 6.6.1 requestdispatcher接口 232 6.6.2 得到requestdispatcher对象 232 6.6.3 请求转发的实例 233 6.6.4 sendredirect()和forward()方法的区别 238 6.7 小结 239 第7章 web应用程序的部署 240 7.1 配置任意目录下的web应用程序 240 7.2 war文件 242 7.3 tomcat中servlet的另一种运行方式 244 7.4 与servlet配置相关的元素 247 7.4.1 [servlet]元素及其子元素 247 7.4.2 [servlet-mapping]元素及其子元素 249 7.5 一个实例 250 7.6 小结 253 第8章 数据库访问 254 8.1 驱动程序的类型 254 8.1.1 jdbc-odbc桥 254 8.1.2 部分本地api java驱动程序 255 8.1.3 jdbc网络纯java驱动程序 255 8.1.4 本地协议的纯java驱动程序 256 8.2 安装数据库 256 8.3 jdbc api 260 8.3.1 加载并注册数据库驱动 261 8.3.2 建立到数据库的连接 263 8.3.3 访问数据库 264 8.3.4 事务处理 289 8.3.5 可滚动和可更新的结果集 296 8.4 jdbc数据源和连接池 299 8.5 mysql对中文的处理 302 8.6 小结 302 第9章 会话跟踪 303 9.1 用于会话跟踪的技术 303 9.1.1 ssl会话 304 9.1.2 cookies 304 9.1.3 url重写 305 9.2 java servlet api的会话跟踪 306 9.2.1 httpsession接口 306 9.2.2 session的生命周期 307 9.2.3 cookie的应用 319 9.2.4 httpsessionbindinglistener接口 328 9.2.5 在线人数统计程序 329 9.3 小结 335 第10章 servlet的异常处理机制 337 10.1 声明式异常处理 338 10.1.1 http错误代码的处理 338 10.1.2 java异常的处理 341 10.2 程序式异常处理 343 10.2.1 在try-catch语句中处理异常 343 10.2.2 使用requestdispatcher来处理异常 346 10.3 小结 349 第11章 开发线程安全的servlet 350 11.1 多线程的servlet模型 350 11.2 线程安全的servlet 351 11.2.1 变量的线程安全 351 11.2.2 属性的线程安全 360 11.3 singlethreadmodel接口 362 11.4 小结 363 11.5 思考题 363 第3部分 jsp篇 第12章 jsp技术 366 12.1 jsp简介 366 12.2 jsp的运行机制 366 12.3 jsp的语法 371 12.3.1 指令元素(directive elements) 371 12.3.2 脚本元素(scripting elements) 374 12.3.3 动作元素(action elements) 376 12.3.4 注释 383 12.4 jsp的隐含对象 383 12.4.1 pagecontext 384 12.4.2 out 385 12.4.3 page 385 12.4.4 exception 386 12.5 对象和范围 387 12.6 留言板程序 389 12.7 留言板管理程序 397 12.8 jsp文档 402 12.8.1 jsp文档的标识 404 12.8.2 jsp文档中的元素语法 404 12.9 小结 407 第13章 jsp与javabean 409 13.1 javabean简介 409 13.1.1 属性的命名 409 13.1.2 属性的类型 411 13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 13.2.2 [jsp:setproperty] 413 13.2.3 [jsp:getproperty] 414 13.2.4 示例 414 13.3 网上书店程序 418 13.4 小结 440 第14章 jsp开发的两种模型 441 14.1 模型1 441 14.2 模型2 445 14.3 小结 449 第15章 标签库(tag library) 450 15.1 标签库api 450 15.1.1 标签的形式 451 15.1.2 tag接口 451 15.1.3 iterationtag接口 453 15.1.4 bodytag接口 454 15.2 标签库描述符 455 15.2.1 [taglib]元素 456 15.2.2 [validator]元素 457 15.2.3 [listener]元素 457 15.2.4 [tag]元素 458 15.2.5 [tag-file]元素 460 15.2.6 [function]元素 461 15.3 传统标签的开发 462 15.3.1 实例一:[hello]标签 462 15.3.2 实例二:[max]标签 465 15.3.3 实例三:[greet]标签 467 15.3.4 实例四:[switch]标签 469 15.3.5 实例五:[iterate]标签 473 15.4 简单标签的开发 479 15.4.1 simpletag接口 479 15.4.2 实例一:[welcome]标签 480 15.4.3 实例二:[max_ex]标签 481 15.5 小结 483 第16章 表达式语言(el) 484 16.1 语法 484 16.1.1 “[ ]”和“.”操作符 484 16.1.2 算术操作符 484 16.1.3 关系操作符 485 16.1.4 逻辑操作符 485 16.1.5 empty操作符 485 16.1.6 条件操作符 485 16.1.7 圆括号 486 16.1.8 操作符的优先级 486 16.2 隐含对象 486 16.3 命名变量 487 16.4 保留的关键字 488 16.5 函数 488 16.6 小结 489 第17章 jsp标准标签库(jstl) 490 17.1 jstl简介 490 17.2 配置jstl 491 17.3 core标签库 491 17.3.1 一般用途的标签 492 17.3.2 条件标签 496 17.3.3 迭代标签 498 17.3.4 url相关的标签 501 17.4 i18n标签库 506 17.4.1 国际化标签 506 17.4.2 格式化标签 511 17.5 sql标签库 520 17.5.1 [sql:setdatasource] 520 17.5.2 [sql:query] 521 17.5.3 [sql:param] 524 17.5.4 [sql:dateparam] 525 17.5.5 [sql:update] 526 17.5.6 [sql:transaction] 527 17.6 xml标签库 529 17.6.1 核心操作 529 17.6.2 流程控制 532 17.6.3 转换操作 536 17.7 functions标签库 539 17.7.1 fn:contains 539 17.7.2 fn:containsignorecase 539 17.7.3 fn:startswith 540 17.7.4 fn:endswith 541 17.7.5 fn:indexof 541 17.7.6 fn:replace 542 17.7.7 fn:substring 543 17.7.8 fn:substringbefore 544 17.7.9 fn:substringafter 544 17.7.10 fn:split 545 17.7.11 fn:join 546 17.7.12 fn:tolowercase 547 17.7.13 fn:touppercase 547 17.7.14 fn:trim 548 17.7.15 fn:escapexml 548 17.7.16 fn:length 549 17.8 小结 549 第18章 标签文件(tag files) 551 18.1 标签文件的语法 551 18.2 一个简单的标签文件 551 18.3 标签文件的隐含对象 554 18.4 标签文件的指令 555 18.4.1 tag指令 555 18.4.2 attribute指令 556 18.4.3 variable指令 557 18.5 标签文件实例讲解 558 18.5.1 实例一:[welcome]标签 558 18.5.2 实例二:[tohtml]标签 559 18.6 [jsp:invoke]动作元素 561 18.7 [jsp:dobody]动作元素 562 18.8 小结 562 第4部分 应用篇 第19章 使用log4j进行日志操作 564 19.1 log4j介绍 564 19.1.1 logger组件 564 19.1.2 appender组件 566 19.1.3 layout组件 567 19.2 使用log4j 568 19.3 log4j使用实例 572 19.4 ndc和mdc 585 19.5 小结 587 第20章 filter在web开发中的应用 588 20.1 过滤器概述 588 20.2 filter api 589 20.2.1 filter接口 589 20.2.2 filterconfig接口 590 20.2.3 filterchain接口 590 20.3 过滤器的部署 591 20.4 过滤器的开发 592 20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与国际化 610 21.1 中文乱码问题产生的由来 610 21.1.1 常用字符集 610 21.1.2 对乱码产生过程的分析 612 21.2 中文乱码问题的解决方案 614 21.3 使用过滤器解决中文问题 616 21.4 让tomcat支持中文文件名 620 21.5 国际化与本地化 621 21.5.1 locale 621.. 21.5.2 资源包 623 21.5.3 编写国际化的web应用程序 625 21.6 小结 629 第22章 使用jbuilder2005开发web 第22章 应用程序 630 22.1 jbuilder2005简介 630 22.2 集成开发环境介绍 631 22.2.1 菜单栏 631 22.2.2 主工具栏 632 22.2.3 工程工具栏和工程窗口 632 22.2.4 结构窗口 633 22.2.5 文件标签和内容窗口 634 22.2.6 文件视图标签 634 22.2.7 消息窗口 637 22.3 jbuilder2005的基本配置 638 22.3.1 配置jdk 638 22.3.2 配置web服务器 640 22.4 文件的上传和下载 642 22.4.1 基于表单的文件上传 642 22.4.2 文件上传格式分析 643 22.4.3 commons-fileupload组件 644 22.4.4 文件上传实例 646 22.4.5 文件下载实例 656 22.5 给图片添加水印和文字 664 22.6 小结 667 第23章 开发安全的web应用程序 668 23.1 概述 668 23.2 理解验证机制 669 23.2.1 http basic authentication 669 23.2.2 http digest authentication 670 23.2.3 https client authentication 670 23.2.4 form based authentication 671 23.3 声明式安全 671 23.3.1 [security-constraint]元素 671 23.3.2 [login-config]元素 673 23.3.3 基本验证的实现 674 23.3.4 基于表单验证的实现 676 23.3.5 使用数据库保存用户名和密码 678 23.4 程序式安全 682 23.5 sql注入攻击的防范 685 23.6 小结 687 第24章 web应用程序开发实例 688 24.1 图像的缩放 688 24.2 如何动态生成验证码 692 24.3 如何避免表单的重复提交 696 24.3.1 在客户端避免表单的重复提交 697 24.3.2 在服务器端避免表单的重复 24.3.2 提交 700 24.4 小结 706 第25章 使用ant辅助web应用程序 第25章 开发 707 25.1 ant介绍 707 25.2 安装并配置ant 708 25.2.1 下载并安装ant 708 25.2.2 设置ant的运行环境 708 25.3 编写ant的构建文件 709 25.3.1 准备工作 709 25.3.2 工程([project]) 712 25.3.3 目标([target]) 713 25.3.4 任务 714 25.3.5 path-like structures 728 25.3.6 引用(references) 729 25.4 部署到tomcat 730 25.5 运行ant 732 25.6 小结 732 第26章 xml和xslt在web开发中的 第26章 应用 733 26.1 功能概述 733 26.2 程序设计 733 26.2.1 软件架构 733 26.2.2 页面设计 735 26.2.3 数据库设计 747 26.3 程序实现 749 26.3.1 org.sunxin.guestbook 749 26.3.2 org.sunxin.guestbook.beans 750 26.3.3 org.sunxin.guestbook.util 758 26.3.4 org.sunxin.guestbook.parser 762 26.3.5 org.sunxin.guestbook.controller 765 26.3.6 org.sunxin.guestbook.view 787 26.3.7 page.xsl 791 26.3.8 web.xml 797 26.3.9 context.xml 798 26.4 小结 798 附录a 快速掌握html 799 附录b 解析http 820 附录c server.xml文件 833 附录d web.xml文件 840 索引 852...
网络应用安全技术详解 网络应用安全技术详解全文共57页,当前为第1页。 知识域:网络应用安全 知识子域:Web安全基础及安全配置 理解Web工作机制及Web应用安全问题产生的原因 了解常见Web应用安全威胁,理解注入攻击和跨站脚本攻击特点和危害 了解Web应用程序开发编码安全要点 了解IIS和Apache的安全配置要点 了解浏览器上网安全威胁和IE安全配置方法 2 网络应用安全技术详解全文共57页,当前为第2页。 Web工作机制 什么是WEB 万维网(World Wide Web),是一个由许多互相链接的超文本文档组成的系统。 Web的重要概念 资源:web系统中对象称为资源 URI:统一资源标识符,用于标识一个资源(HTML文档、图像、视频片段、程序) URL:统一资源定位符(URI的一个子集) HTTP:超文本传输协议,用于传输资源,使用者通过http来获得资源 WEB应用越来越广泛 3 网络应用安全技术详解全文共57页,当前为第3页。 超文本传输协议 什么是超文本传输协议(HTTP) 一种通信协议 使用超文本标记语言 (HTML) 将资源从服务器传送到客户端 超文本传输协议特点 请求、响应模式 协议简单,客户端只需传输请求方法和路径 无连接(一个请求一个连接,完成后断开) 无状态 4 网络应用安全技术详解全文共57页,当前为第4页。 HTTP协议工作过程 HTTP 请求(Requests) 一个HTTP请求包含三个部分: 方法,URL,协议/版本(Method-URI-Protocol/Version) 请求包头(Request headers) 实体包(Entity body) HTTP 响应(Responses) 一个HTTP响应也包含三个部分 协议状态代码描叙(Protocol-Status code-Description) 响应包头(Response headers) 实体包(Entity body) 5 网络应用安全技术详解全文共57页,当前为第5页。 HTTP协议工作过程 HTTP请求范例:   POST /servlet/default.JSP HTTP/1.1  Accept: text/plain; text/HTML  Accept-Language: en-gb  Connection: Keep-Alive  Host: localhost  Referer: http://localhost/ch0/SendDetails.htm   User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)  Content-Length: 33  Content-Type: application/x-www-form-urlencoded   Accept-Encoding: gzip, deflate LastName=Franks&FirstName=Michael 6 网络应用安全技术详解全文共57页,当前为第6页。 HTTP协议工作过程-响应范例 HTTP响应范例:   HTTP/1.1 200 OK  Server: Microsoft-IIS/6.0   Date: Mon, 3 Jan 2010 13:13:33 GMT  Content-Type: text/HTML  Last-Modified: Mon, 11 Jan 2010 13:23:42 GMT  Content-Length: 112      Welcome to CISP. 7 第一行的响应包头和请求包头很相似。第一行说明协议是使用的HTTP1.1,响应请求已成功(200表示成功),一切已OK。 响应包头和请求包头相似,也包含一些有用的信息。响应的实体是HTML那一部分的内容。包头和实体也都是被CRLF序列分离开的 网络应用安全技术详解全文共57页,当前为第7页。 Web服务常见威胁 网络层面 拒绝服务、电子欺骗、嗅探 系统层面 Web服务漏洞、配置错误 应用层面 代码缺陷(SQL注入、XSS……) 信息泄露 电子欺骗 钓鱼、流程缺陷 8 网络应用安全技术详解全文共57页,当前为第8页。 常见Web应用安全威胁(一) 注入攻击 Injection WEB应用程序对用户输入数据的合法性判断不够,对用户输入过滤不足 SQL注入和命令注入 跨站脚本攻击 Cross Site Scripting,XSS 恶意攻击者往Web页面里插入恶意代码,当其他用户浏览该页之时,嵌入其中的恶意代码会被执行,从而达到恶意攻击用户的特殊目的 9 网络应用安全技术详解全文共57页,当前为第9页。 常见Web应用安全威胁(二) 失效的验证和会话管理 不安全的对象直接引用 跨站请求伪造 不安

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值