Tomcat与JavaWeb开发技术详解(第3版) PDF 高质量版

  • 更新时间:
  • 5954人关注
  • 点击下载

Tomcat与JavaWeb开发技术详解(第3版)》是一本关于JavaWeb相关的电子书资源,介绍了关于Tomcat、JavaWeb、开发技术方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小39 MB ,孙卫琴编写,目前豆瓣、亚马逊、当当、京东等综合评分为:9.8分,一起来看下具体内容。

编辑推荐

本书全面深刻揭示Java Web开发的核心思想,全面阐述Java Web开发的全新技术和实用技巧,详细介绍Tomcat高级配置方法,贯穿面向对象编程思想,穿插UML常用设计模式,提供精心设计的习题,是Java初学者的优质研习参考。

内容简介

本书结合全新的Tomcat 9版本,详细介绍了开发Java Web应用的各种技术。主要内容包括:Tomcat和Java Web开发的基础知识,Java Web开发的高级技术,在Java Web应用中运用第三方提供的实用软件(如Spring、Velocity和Log4J)的方法,以及Tomcat的各种高级功能。书中内容注重理论与实践相结合,列举了大量具有典型性和实用价值的Web应用实例,并提供了详细的开发和部署步骤。由于Java Web技术是Oracle公司在Java Servlet规范中提出的通用技术,因此本书讲解的Java Web应用例子可以运行在任何一个实现Oracle的Servlet规范的Java Web服务器上。随书附赠光盘内容为本书所有范例源程序,视频教程,以及本书涉及的部分软件的全新版本的安装程序。本书语言深入浅出,通俗易懂。无论对于Java Web开发的新手还是行家来说,本书都是精通Tomcat和开发Java Web应用的必备的实用手册。本书还可作为高校的学习Java Web开发的教材,以及企业Java Web培训教材。

作者简介

孙卫琴,知名IT作家和Java专家,毕业于上海交通大学,随后主要从事基于Java的软件开发工作,在此其间还从事Java方面的培训和咨询工作。2002年开始Java技术领域的创作,文风清晰严谨、深入浅出,深受读者欢迎,其多部作品的销量在同类书籍中一度位居全国榜首。代表著作有:《大话Java程序设计从入门到精通》《Java面向对象编程》《Java网络编程精解》《Java逍遥游记》《Hibernate逍遥游记》《精通Hibernate: Java对象持久化技术详解》 《精通Struts: 基于MVC的Java Web设计与开发》 《Tomcat与Java Web开发技术详解》 《Java 2认证考试指南与试题解析》

目录

  • 第1篇
  • Java Web开发技术详解
  • 第1 章 Web 运作原理探析.......................1
  • 1.1 Web 的概念.............................................2
  • 1.2 HTML简介.............................................3
  • 1.3 URL简介................................................5
  • 1.4 HTTP 简介..............................................6
  • 1.4.1 HTTP 请求格式..........................8
  • 1.4.2 HTTP 响应的格式....................10
  • 1.4.3 正文部分的MIME类型...........12
  • 1.4.4 HTTP 各个版本的特点.............12
  • 1.5 用Java 套接字创建HTTP 客户与服务器
  • 程序.......................................................14
  • 1.5.1 演示异构系统之间用HTTP 协议
  • 通信..............................................18
  • 1.5.2 演示对网页中超链接的处理过程
  • ......................................................21
  • 1.5.3 演示对网页中图片的处理过程22
  • 1.6 Web 的发展历程...................................22
  • 1.6.1 发布静态HTML文档..............23
  • 1.6.2 发布静态多媒体信息................23
  • 1.6.3 提供浏览器端与用户的动态交互
  • 功能..............................................24
  • 1.6.4 提供服务器端与用户的动态交互
  • 功能..............................................25
  • 1.6.5 发布Web应用..........................30
  • 1.6.6 发布Web服务..........................31
  • 1.6.7 Web2.0:全民共建的Web.......34
  • 1.6.8 Web3.0:智能化处理海量信息35
  • 1.7 处理HTTP 请求参数以及HTML表单35
  • 1.8 客户端向服务器端上传文件................38
  • 1.9 小结.......................................................44
  • 1.10 思考题.................................................44
  • 第2章 Tomcat简介................................49
  • 2.1 Tomcat 概述...........................................50
  • 2.2 Tomcat 作为Servlet 容器的基本功能..51
  • 2.3 Tomcat 的组成结构...............................52
  • 2.4 Tomcat 的工作模式...............................55
  • 2.5 Tomcat 的版本.......................................57
  • 2.6 安装和配置Tomcat 所需的资源..........59
  • 2.7 安装Tomcat...........................................60
  • 2.8 启动Tomcat 并测试Tomcat 的安装....61
  • 2.9 Tomcat 的运行脚本...............................63
  • 2.10 小结.....................................................64
  • 2.11 思考题.................................................64
  • 第3章 第一个JavaWeb应用.................67
  • 3.1 JavaWeb 应用简介................................67
  • 3.2 创建JavaWeb 应用...............................68
  • 3.2.1 JavaWeb 应用的目录结构........68
  • 3.2.2 创建HTML文件......................70
  • 3.2.3 创建Servlet 类..........................70
  • 3.2.4 创建JSP 文件...........................72
  • 3.2.5 创建web.xml 文件....................72
  • 3.3 在Tomcat 中发布JavaWeb应用74
  • 3.3.1 Tomcat 的目录结构..................74
  • 3.3.2 按照默认方式发布JavaWeb 应用
  • .....................................................75
  • 3.3.3 Web组件的URL......................76
  • 3.3.4 配置Tomcat 的<Context>元素.80
  • 3.3.5 配置Tomcat 的虚拟主机..........82
  • 3.4 创建、配置和使用自定义JSP 标签....85
  • 3.5 用批处理文件或ANT编译范例..........89
  • 3.6 小结.......................................................90
  • 3.7 思考题...................................................91
  • 第4章 Servlet技术(上).....................93
  • 4.1 Servlet API.............................................94
  • 4.1.1 Servlet接口...............................95
  • 4.1.2 GenericServlet 抽象类...............96
  • 4.1.3 HttpServlet 抽象类....................98
  • 4.1.4 ServletRequest接口................101
  • 4.1.5 HttpServletRequest接口.........102
  • 4.1.6 ServletResponse 接口..............104
  • 4.1.7 HttpServletResponse接口.......106
  • 4.1.8 ServletConfig 接口..................108
  • 4.1.9 ServletContext 接口................110
  • 4.2 JavaWeb 应用的生命周期.................. 113
  • 4.2.1 启动阶段.................................113
  • 4.2.2 运行时阶段.............................113
  • 4.2.3 终止阶段.................................114
  • 4.2.4 用Tomcat 的管理平台管理Web
  • 应用的生命周期........................114
  • 4.3 Servlet 的生命周期............................. 116
  • 4.3.1 初始化阶段.............................116
  • 4.3.2 运行时阶段.............................117
  • 4.3.3 销毁阶段.................................117
  • 4.3.4 演示Servlet 的生命周期的范例
  • ....................................................118
  • 4.4 ServletContext 与Web 应用范围........121
  • 4.4.1 在Web 应用范围内存放共享数据
  • 的范例........................................122
  • 4.4.2 使用ServletContextListener 监听
  • 器................................................124
  • 4.5 Servlet 的服务方法抛出异常..............127
  • 4.6 防止页面被客户端缓存......................128
  • 4.7 使用Annotation 标注配置Servlet......129
  • 4.8 处理HTTP 请求参数中的中文字符编码
  • .............................................................131
  • 4.9 小结.....................................................133
  • 4.10 思考题...............................................135
  • 第5章 Servlet技术(下).....................139
  • 5.1 下载文件.............................................139
  • 5.2 上传文件.............................................141
  • 5.2.1 利用Apache开源类库实现文件上
  • 传................................................142
  • 5.2.2 利用Servlet API中的Part 接口实
  • 现文件上传................................146
  • 5.3 动态生成图像.....................................149
  • 5.4 读写Cookie.........................................152
  • 5.5 访问Web 应用的工作目录.................159
  • 5.6 转发和包含.........................................161
  • 5.6.1 请求转发.................................162
  • 5.6.2 包含.........................................166
  • 5.6.3 请求范围.................................168
  • 5.7 重定向.................................................168
  • 5.8 访问Servlet 容器内的其他Web 应用172
  • 5.9 避免并发问题.....................................173
  • 5.9.1 合理决定在Servlet中定义的变量
  • 的作用域类型............................176
  • 5.9.2 使用Java 同步机制对多线程同步
  • ...................................................178
  • 5.9.3 被废弃的SingleThreadModel接口
  • ...................................................179
  • 5.10 对客户请求的异步处理....................181
  • 5.10.1 异步处理的流程...................181
  • 5.10.2 异步处理的范例...................182
  • 5.10.3 异步监听器...........................186
  • 5.10.4 非阻塞I/O.............................187
  • 5.11 服务器端推送....................................191
  • 5.12 小结...................................................193
  • 5.13 思考题...............................................196
  • 第6章 JSP 技术....................................199
  • 6.1 比较HTML、Servlet 和JSP..............199
  • 6.1.1 静态HTML文件....................199
  • 6.1.2 用Servlet 动态生成HTML 页面
  • ....................................................200
  • 6.1.3 用JSP 动态生成HTML页面201
  • 6.2 JSP 语法..............................................205
  • 6.2.1 JSP 指令(Directive)............206
  • 6.2.2 JSP 声明..................................208
  • 6.2.3 Java程序片段(Scriptlet)....209
  • 6.2.4 Java表达式.............................210
  • 6.2.5 隐含对象.................................212
  • 6.3 JSP 的生命周期...................................214
  • 6.4 请求转发.............................................216
  • 6.5 包含.....................................................218
  • 6.5.1 静态包含.................................218
  • 6.5.2 动态包含.................................220
  • 6.5.3 混合使用静态包含和动态包含
  • ....................................................222
  • 6.6 JSP 异常处理.......................................229
  • 6.7 再谈发布JSP.......................................232
  • 6.8 预编译JSP ..........................................232
  • 6.9 PageContext 类的用6
展开阅读
精选笔记1:JavaWeb 使用Session实现一次性验证码功能

2小时40分钟前回答

表单

<form action="loginServlet" method="post">
 请输入验证码:<input type="text" name="code" />
 <img src="getCodeServlet" /><br />
 <button type="submit">提交</button>
</form>

载入页面时,会自动请求getCodeServlet,获取图片(验证码)。

getCodeServlet,产生验证码

@WebServlet("/getCodeServlet")
public class GetCodeServlet extends HttpServlet {
  //验证码的宽、高
  private static int WIDTH=80;
  private static int HEIGHT=25;
  //绘制背景
  private void drawBg(Graphics g){
    //rgb
    g.setColor(new Color(128, 128, 128));
    //绘制矩形。x,y,wigth,height
    g.fillRect(0,0,WIDTH,HEIGHT);
    //随机绘制100个干扰点
    Random random=new Random();
    for (int i=0;i<100;i++){
      //产生(0,1)上的小数,*WIDTH|HEIGHT,再取整也行
      int x=random.nextInt(WIDTH);
      int y=random.nextInt(HEIGHT);
      g.drawOval(x,y,1,1);
      //干扰点的颜色也可以随机,随机产生red,green,blue即可
      //g.setColor(new Color(red,green,blue));
    }
  }
  //绘制验证码
  private void drawCode(Graphics g,char[] code){
    g.setColor(Color.BLACK);
    //字体、样式(多个时竖线分隔)、字号
    g.setFont(new Font("serif",Font.ITALIC|Font.BOLD,18));
    //在不同位置绘制验证码字符,参数:要绘制的String、横、纵坐标。+""是为了char转String。
    g.drawString(code[0]+"",1,17);
    g.drawString(code[1]+"",16,15);
    g.drawString(code[2]+"",31,18);
    g.drawString(code[3]+"",46,16);
  }
  //随机产生4位验证码
  private char[] getCode(){
    String chars="0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
    char[] code=new char[4];
    Random random=new Random();
    for (int i=0;i<4;i++){
      //[0,62)
      int index= random.nextInt(62);
      code[i]=chars.charAt(index);
    }
    return code;
  }
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
    HttpSession session = request.getSession();
    ServletOutputStream sos = response.getOutputStream();
    response.setContentType("image/jpeg");
    //设置浏览器不缓存此图片
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires",0);
    //创建内存图片
    BufferedImage bufferedImage = new BufferedImage(WIDTH, HEIGHT, TYPE_INT_RGB);
    Graphics g= bufferedImage.getGraphics();
    char[] code=getCode();
    //将验证码放到session域中。session对象要在提交响应之前获得
    session.setAttribute("code",new String(code));
    drawBg(g);
    drawCode(g,code);
    g.dispose();
    //将图片输出到浏览器
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ImageIO.write(bufferedImage,"JPEG",baos);
    baos.writeTo(sos);
    baos.close();
    sos.close();
  }
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
    doPost(request,response);
  }
}

loginServlet,处理表单

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=utf-8");
    HttpSession session = request.getSession();
    String trueCode= (String) session.getAttribute("code");
    String code=request.getParameter("code");

    if (code.equals(trueCode)){
      response.getWriter().write("验证码正确");
    }
    else {
      response.getWriter().write("验证码错误");
    }
  }

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request,response);
  }
}

上面的处理方式要区分验证码的大小写。

不区分大小写:

//先转换为全大写|全小写,再判断
    trueCode=trueCode.toLowerCase();
    code=code.toLowerCase();
    //trueCode=trueCode.toUpperCase();
    //code=trueCode.toUpperCase();

总结

以上所述是小编给大家介绍的JavaWeb 使用Session实现一次性验证码功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对码农之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

展开阅读

JavaWeb相关资源

  • 21天学通HTML+CSS+JavaScript Web开发

    21天学通HTML+CSS+JavaScript Web开发

    21天学通HTML CSS JavaScript Web开发(第7版) 是全球畅销书《21天学通使用HTML与CSS发布Web站点》的全新升级版本,作者在本书囊括了新的HTML5与CSS3技术,并采用易于理解的步骤式教程讲解了这些技

    大小:104.9 MB前端

    立即下载
  • Web前端开发精品课 JavaScript基础教程

    Web前端开发精品课 JavaScript基础教程

    《JavaScript基础教程》 共分为2大部分,第1部分是JavaScript基础知识,主要学习JavaScript基础概念如变量、运算符、表达式等。第二部分是JavaScript进阶知识,主要学习DOM、事件操作以及各种开发技

    大小:9.7 MB前端

    立即下载
  • Java高手真经系统架构卷:Java Web系统设计与架构

    Java高手真经系统架构卷:Java Web系统设计与架构

    Java高手真经:JavaWeb系统设计与架构(系统架构卷UML建模+设计模式+面向服务架构) 作者:刘中兵编著 出版时间:2009-12-1 【图书简介】 本书讲解JavaWeb系统设计与架构,包括Java与UML建模技术、Java设计模式、面向服务架构SOA、面向资源架构ROA、面向云架构COA,这5部分内容层层递进,涵盖了JavaEE开发中的各种设计与架构技术。讲解的主要内容包括如下。Java与UML建模:讲解UML建模的5类10种图,包括用例图、静态图(类图、对象图、包图)、实现图(组件图、

    大小:252.34MBJava

    立即下载
  • Web编程基础:CSS、JavaScript、jQuery

    Web编程基础:CSS、JavaScript、jQuery

    《 Web编程基础:CSS、JavaScript、jQuery 》紧密围绕网页设计师在进行Web前台开发中实际需要掌握的技术,全面介绍了使用DIV+CSS、JavaScript、jQuery进行Web页面设计和制作技巧。《Web编程基础:CSS、

    大小:35 MBWeb编程

    立即下载
  • Java RESTful Web Service实战

    Java RESTful Web Service实战

    Java RESTful Web Service实战(第2版) 全书共10章,包括JAX-RS2入门、RESTAPI设计、REST请求处理、REST服务与异步、REST客户端、REST测试、微服务、容器化、JAX-RS调优、REST安全等内容。书中从基础概念开始

    大小:38.2 MBJava

    立即下载

学习笔记

13小时7分钟前回答

java web中的servlet3 upload上传文件实践

Servlet 3.0之前的版本中,文件上传是个挺让人头疼的问题,虽然有第三方框架来实现,但使用也还是比较麻烦,在Servlet 3.0中,这些问题将不复存在,Servlet 3.0对文件上传提供了直接支持,配合Servlet 3.0中基于Annotations的配置,大大简化上传件的操作。 一、javax.servlet.http中Part接口 public interface Part 要上传文件必须使用multipart/form-data作为request body。 版本: Servlet 3.1 - Apache Tomcat 8.0.33 二、方法概述 方法 描述 void delete() 删除磁盘上关于此part对象的缓存文件 java.lang.String getContentType() 获取浏览器传递过来的ContentType java.lang.String getHeader(java.lang.String name) 获取浏览器传递过来的特定的header,参数是header的名字 ja……

14小时35分钟前回答

Java处理Webp图片格式转换的示例代码

前言 Webp是Google推出的一种新型图片格式,相比于 传统的PNG/JPG图片有着更小体积的优势,在Web中有着广泛的应用。由于Webp格式推出比较晚, Jdk 内置的图片编解码库对此并不支持。 网上给出的Java环境解决方案往往需要手动在java.library.path中安装对应的动态链接库,windows是dll文件,linux是so文件。这对于开发部署非常不方便。 本文提供一种无需手动安装动态链接库,同时可以方便处理Webp的解决方案 WebP是谷歌的图片格式,java 类库imageio 是不支持此种格式的。目前除了在线转换以及工具以外,第三方类库转webp格式 大致有: linux:Google libwebp 既是类库也可以在命令行调用 Python:Python Image Library(PIL)及其……