栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Head First Servlets and JSP(三)(jsp+servlet)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Head First Servlets and JSP(三)(jsp+servlet)

文章目录

第十一章 部署Web应用第十二章 Web应用安全第十三章 过滤器和包装器第十四章 企业设计模式:模式和Struts

第十一章 部署Web应用

WAR文件只是Web应用结构的一个快照,实际上就是一个JAR文件;
在Tomcat中,WAR文件的文件名就会成为Web应用的名字;
在Tomcat中部署Web应用时,Tomcat会解开WAR文件,创建上下文目录;
部署静态HTML和JSP时,可以选择是否允许从Web应用外部直接访问;把文件放在WEB-INF下就能避免访问;
每个servlet映射有两个部分——元素和元素,/定义一个servlet名和类,定义了映射至一个servlet名的URL模式;
DD中的URL模式不会映射到DD中元素以外的其他元素;
元素是servlet映射的键,它们把请求映射到具体的servlet类;
servlet映射的规则:容器首先会查找完全匹配,再查找目录匹配,再查找扩展名匹配;如果请求与多个目录匹配,容器会选择最长的匹配;
在DD中配置欢迎文件;无论请求哪个目录,容器会从所列的第一个欢迎文件开始,选择找到的第一个匹配;
在DD中配置错误页面:

//声明一个“普遍”型错误页面

	java.lang.Throwable
	/errorPage.jsp

//根据一个HTTP状态码声明错误页面

	404
	/notFoundError.jsp

可以调用HttpServeltResponse的sendError()方法生成错误码;
希望在部署时加载servlet而不是等到第一个请求到来才加载,可以在DD中使用元素;
在DD中可以配置扩展名和MIME类型之间的映射;
资源的位置放置:

第十二章 Web应用安全

Impersonator,Upgrader和Eavesdropper;
servlet安全可以划分为4大概念:认证、授权、机密性和数据完整性;
开发商会提供某种方法维护你的公司特定的认证数据,存储在一个关系数据库或LDAP系统中;
授权:

定义角色:部署人员在DD中创建元素,使容器将角色映射到用户;定义资源、方法约束:以声明方式指定资源/方法组合,只能由特定角色的用户访问;
元素的规则:告诉容器那些资源和HTTP方法组合要以某种方式受约束;
如果两个不同的非空元素应用于同一个受限资源,那么两个元素中所有角色的并集都允许访问;
程序式安全,不同于声明式安全,由三个方法与之相关:
getUserPrincipal(),getRemoteUser(),isUserInRole();
调用isUserInRole()前,用户要得到认证,否则总会返回false;如果用户可以映射到参数角色,容器返回true;

认证:询问一个用户名和口令,再验证它们是否匹配——4种认证类型;
BASIC认证、DIGEST认证、CLIENT认证、FORM认证;
表单认证要为用户登录创建你自己的定制HTML表单,创建一个定制的HTML错误页面,在DD中使用元素把这两个表单关联起来;使用基于表单的认证,要启用SSL或会话跟踪;
HTML登录表单中3项是与容器通信的关键:

j_security_checkj_usernamej-password

//DD中

FORM

/loginPage.html
/loginError.html


//longinPage.html中
//loginError.html中 Sorry dude,wrong password

保护正在传输的数据——HTTPS;
以声明方式保守地实现数据机密性和完整性——设置transport-gurantee的属性值为CONFIDENTIAL;
为了确保用户的登录数据能安全地传输到服务器,要对每个可能触发登录过程的受限资源设置一个传输保证;

第十三章 过滤器和包装器

过滤器就是java组件,请求发送到servlet之前,可以用过滤器截获和处理请求;在响应发回给客户之前,可用过滤器处理响应;
请求过滤器可以做安全检查,重新格式化请求首部,建立请求审计或日志;
响应过滤器可以压缩响应流;追加或修改响应流;创建一个完全不同的响应;
每个过滤器都必须实现Filter接口中的三个方法:init(),doFilter()和destroy();
FilterChain可以调用一个过滤器或一个servlet(取决是否到达链尾);
可以认为过滤器“可入栈”;
包装器类——创建定制请求或响应对象,只需要派生某个便利请求或响应包装器类;
压缩过滤器设计:

class CompressionResponseWrapper extends HttpServletResponseWrapper {
//覆盖想定制的方法;
}
class MyCompressionFilter implements Filter{
	public void init(FilterConfig cfg){}
	public void doFilter(request,response,chain){
		CompresssionResponseWrapper wrappedResp=new CompressionResponseWrapper(response);//定制包装器类包装响应
		chain.doFilter(request,wrappedResp);
		//这里完成压缩逻辑
		}
		public void destroy(){}
	}
}	
第十四章 企业设计模式:模式和Struts
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/776631.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号