• 1. Java Web之高级应用讲师:张孝祥—献给中国SD2C软件技术大会北京传智播客教育 www.itcast.cn
  • 2. 中国SD2C软件技术大会之Java Web主题大纲Tomcat中的类装载器 为Tomcat配置Https协议功能 为站点增加自动登录和单点登录功能 解决Web开发中的相对路径问题 为网站配置相同页眉和页脚的技巧 总结分析Web开发中的各种字符乱码问题北京传智播客教育 www.itcast.cn
  • 3. Tip1:Tomcat中的类装载器context.xml: MailServlet.java: Context initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); Session session = (Session) envCtx.lookup("mail/Session");北京传智播客教育 www.itcast.cn
  • 4. Tip2:为Tomcat配置Https协议功能一些基本的安全知识 Keytool工具的使用 SSL/TLS的工作原理 Tomcat的体系结构北京传智播客教育 www.itcast.cn
  • 5. 一些基本的安全知识数字摘要与MD5/SHA算法 作用:数据的完整性校验 对称加密与非对称加密 对称加密速度快,但加密和解密的钥匙必须相同,只有通信双方才能知道钥匙 非对称加密速度慢,加密和解密的钥匙不相同,某一个人持有私钥,任何人都可以知道公钥 问题:想让任何陌生人都可以与你进行加密数据的交换,且加密速度要快,如何实现呢? 数字签名 功能:必须能够验证内容没有修改,必须能够验证内容确实是被发送方签署 方案:发送方的公钥可以验证发送方签名的真实性,数字摘要可以验证内容没有修改 数字证书 问题:如何确认对方提供的公钥的真实性。 方案:每个人或机构的公钥和私钥由一些权威的机构产生!北京传智播客教育 www.itcast.cn
  • 6. 数字摘要的基本应用:数据的完整性校验北京传智播客教育 www.itcast.cn
  • 7. Keytool工具的使用KeyStore的介绍 存储多个私钥和其附带的数字证书 存储信任的第三方数字证书 KeyStore中的每一个私钥和信任的第三方数字证书用一个alias进行标识 Keytool的应用 产生私钥与导入第三方证书 导出证书与生成CSR(Certificate Signing Request)文件 修改KeyStore与其中存储项的密码 打印KeyStore与其中的存储项信息 删除KeyStore中的存储项北京传智播客教育 www.itcast.cn
  • 8. SSL/TLS的工作原理基本概念 SSL(Secure Socket Layer)是netscape公司设计的主要用于web的安全传输协议。这种协议在WEB上获得了广泛的应用。 IETF(www.ietf.org)将SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),从技术上讲,TLS1.0与SSL3.0的差别非常微小。 基本原理:先非对称加密传递对称加密所要用的钥匙,然后双方用该钥匙对称加密和解米往来的数据。 工作过程 浏览器向服务器发出请求,询问对方支持的对称加密算法和非对称加密算法;服务器回应自己支持的算法。 浏览器选择双方都支持的加密算法,并请求服务器出示自己的证书;服务器回应自己的证书。 浏览器随机产生一个用于本次会话的对称加密的钥匙,并使用服务器证书中附带的公钥对该钥匙进行加密后传递给服务器;服务器为本次会话保持该对称加密的钥匙。第三方不知道服务器的私钥,即使截获了数据也无法解密。非对称加密让任何浏览器都可以与服务器进行加密会话。 浏览器使用对称加密的钥匙对请求消息加密后传送给服务器,服务器使用该对称加密的钥匙进行解密;服务器使用对称加密的钥匙对响应消息加密后传送给浏览器,浏览器使用该对称加密的钥匙进行解密。第三方不知道对称加密的钥匙,即使截获了数据也无法解密。对称加密提高了加密速度。 要求 服务器端需安装数字证书,用户可能需要确认证书。 会话过程中的加密与解密过程由浏览器与服务器自动完成,对用户完全透明。 北京传智播客教育 www.itcast.cn
  • 9. Tomcat体系结构 北京传智播客教育 www.itcast.cn
  • 10. 为Tomcat配置SSL功能的实验步骤使用keytool创建或导入Web服务器所需要的证书。 修改server.xml文件,为Tomat增加一个支持SSL功能的连接器。取消其中对SSL连接器的注释,并根据安装的数字证书信息对一些参数进行调整即可。 编写一个用于检查访问协议是否是https的jsp程序,如果不是,则将请求重定向为https协议。北京传智播客教育 www.itcast.cn
  • 11. Tip3:为站点增加自动登录和单点登录功能自动登录的实现原理 自动登陆的几种编码技术 单点登录的概念与功能 单点登录的两种解决方案北京传智播客教育 www.itcast.cn
  • 12. 自动登录功能与实现原理需求分析 用户一旦使用浏览器登录某个站点和关闭浏览器后,在以后两个星期内,只要用户启动该浏览器访问该站点的任何页面时,都将自动完成登录。 很显然,该功能要求浏览器一旦登录以后的两个星期内,浏览器所在客户机上必须保留有用户帐号信息,并且,浏览器在以后设定的时间期限内访问该站点时,必须自动向服务器提交保留在客户机上的用户帐号信息。 实现原理 想一想:用什么样的Web技术可以实现这样的功能呢? 保存在浏览器所在客户机上的信息必须尽可能的安全,即使被人窃取,也无法识别其中的信息。Cookie值采用如下算法来生成: username + ":" + expiryTime + ":" + Md5Hex(username + ":" + expiryTime + ":" + password + ":" + key) 北京传智播客教育 www.itcast.cn
  • 13. Cookie的传送过程示意图 ①第一次访问不存在 Server1的Cookie ④写入Server1 的Cookie③第一次响应 Set-Cookie2: name=value ②第一次访问请求 WEB Server1 WEB Server2 浏览器 Server1 的Cookie Server2 的CookieCookie存储区 ⑤后续访问存在 Server1的Cookie ⑥后续访问请求 Cookie: name=value 北京传智播客教育 www.itcast.cn
  • 14. Set-Cookie2响应头字段Set-Cookie2头字段用于指定WEB服务器向客户端传送的Cookie内容,但是按照Netscape规范实现Cookie功能的WEB服务器,使用的是Set-Cookie头字段,两者的语法和作用类似。 Set-Cookie2头字段中设置的cookie内容是具有一定格式的字符串,它必须以Cookie的名称和设置值开头,格式为“名称=值”,后面可以加上0个或多个以分号(;)和空格分隔的其它可选属性,属性格式一般为“属性名=值”。 举例:Set-Cookie2: user=it315; Version=1; Path=/ 除了“名称=值”对必须位于最前面外,其它的可选属性的先后顺序可以任意。 Cookie的名称只能由普通的英文ASCII字符组成,浏览器不用关心和理解Cookie的值部分的意义和格式,只要WEB服务器能理解值部分的意义就行。 大多数现有的WEB服务器都是采用某种编码方式将值部分的内容编码成可打印的ASCII字符,RFC 2965规范中没有明确限定编码方式。北京传智播客教育 www.itcast.cn
  • 15. Set-Cookie2头字段中的属性 Comment=value Discard Domain=value 例如:Set-Cookie2: user=it315; Version=1; Path=/; Domain=.it315.org Max-Age=value Path=value Port[="portlist"] Secure Version=value 北京传智播客教育 www.itcast.cn
  • 16. 自动登录的几种编码技术模板方法设计模式 所有的Servlet或者Struts框架的Action采用模板方法设计模式进行设计,且要求所有的请求只能指向Servlet或者Struts框架的Action 自定义标签 在所有的JSP页面中都要加入自动登录的标签,且要求客户端的所有请求都只能指向JSP页面。 过滤器(Filter) 可以对指向各种资源的访问请求进行拦截,并附加实现自动登录功能,不要求对现有的Servlet和JSP进行任何改造,对以后编写的任何Servlet和JSP也没有特殊要求。过滤器(Filter)应该成为自动登录功能的首先编程技术。北京传智播客教育 www.itcast.cn
  • 17. 单点登录单点登录的概念与功能 单点登录的英文简称为SSO(single sign on),即用户只要登陆系统一次,该用户的身份信息就可以被系统中的多台计算机所识别,不需要在访问每台计算机时再分别进行登陆。 单点登录的两种解决方案 在某个域范围内的全局Cookie 例如:Set-Cookie2: user=it315; Version=1; Path=/; Domain=.it315.org 通过专用的代理服务器进行登录 北京传智播客教育 www.itcast.cn
  • 18. 通过代理服务器实现的SSOSSO ServerWeb ServerBrowser②③④⑦⑧⑨⑩①https://SSOServer/login?service=http%3A%2F%2FWebServer/visitingUrlhttp://WebServer/visitingUrl?ticket=xxxxxxxxxxxxxxxxxxx⑤⑥北京传智播客教育 www.itcast.cn
  • 19. Tip4:解决Web开发中的相对路径问题如果logon.jsp页面的内容如下,LogonServlet内部在登录失败时将请求又转发给logon.jsp,
    元素中的action属性设置会有什么问题?
    *第二次访问的路径相对logon.jsp的路径为servlet/servlet/LogonServlet解决方案:
    张孝祥 北京传智播客教育 www.itcast.cn
  • 20. Tip5:为网站配置相同页眉和页脚的技巧常见的应用: <%@ include file=“”%>与 一般人不知道的应用: *.jsp /header.jsp /footer.jsp 北京传智播客教育 www.itcast.cn
  • 21. 页面布局代码的重用要生成一批如左图所示的具有相同页眉,页尾,以及左侧栏的页面,这些页面的内容不同,要想充分实现HTML代码的复用,每个页面应该用几个局部网页来合成呢?页面布局代码:
    header
    Menu
    footer
    页面布局代码的重用方式: Apache的Tiles框架 Filter + 布局文件(例如,Sitemesh)北京传智播客教育 www.itcast.cn
  • 22. Tip6:Web开发中的各种字符乱码问题字符编码的基本理论 举例:记事本的中文乱码问题,xml的字符编码问题 Java程序编译时的中文乱码分析 Java程序运行时的中文乱码分析 举例:更改操作系统的Locale,利用PrintWriter/PrintStream输出字符串 Servlet输出时的中文乱码分析 Servlet读取请求参数时的中文乱码分析 JSP的乱码分析 Servlet实现文件下载时的中文文件名的乱码分析 Apache文件上传组件所遇到的中文乱码分析 利用Javamail API创建MIME邮件时的中文乱码分析 Mysql数据库的中文乱码分析 Ajax中的字符乱码问题分析 请求参数不进行url编码导致长度为奇数的中文字符串的最后一个字符混乱北京传智播客教育 www.itcast.cn
  • 23. JSP程序所涉及到的字符编码转换 北京传智播客教育 www.itcast.cn
  • 24. 字符乱码与解决办法的原理分析北京传智播客教育 www.itcast.cn
  • 25. 推荐我所编写的书籍《Java就业培训教程》 《Javascript网页开发》 《Java邮件开发详解》 《深入体验Java Web开发内幕—核心基础》 《深入体验Java Web开发内幕—高级特性》北京传智播客教育 www.itcast.cn
  • 26. 结束语 热烈欢迎各软件公司到传智播客公司预定和招聘软件开发人才! 谢谢!北京传智播客教育 www.itcast.cn