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映射有两个部分——
DD中的URL模式不会映射到DD中
servlet映射的规则容器会查找完全匹配,再查找目录匹配,再查找扩展名匹配;如果请求与多个目录
在DD中配置欢迎文件;无论请求哪个目录,容器会从
在DD中配置错误页面:
//声明一个“普遍”型错误页面//根据一个HTTP状态码声明错误页面 java.lang.Throable /errorPage.jsp 404 /notFoundError.jsp
可以调用HttpServeltResponse的sendError()方法生成错误码;
电脑维修网希望在部署时加载servlet而不是等到第一个请求到来才加载,可以在DD中使用
在DD中可以配置扩展名和MIME类型之间的映射;
资源的位置放置:
Impersonator,Upgrader和Eavesdropper;
servlet安全可以划分为4大概念认证、授权、机密性和数据完整性;
开发商会提供某种方法维护你的公司特定的认证数据,存储在一个关系数据库或LDAP系统中;
授权
定义角色部署人员在DD中创建 认证询问一个用户名和口令,再验证它们是否匹配——4种认证类型; j_security_checkj_usernamej-passord
保护正在传输的数据——HTTPS; 过滤器就是java组件,请求发送到servlet之前,可以用过滤器截获和处理请求;在响应发回给客户之前,可用过滤器处理响应;
如果两个不同的非空元素应用于同一个受限资源,那么两个元素中所有角色的并集都允许访问;
程序式安全,不同于声明式安全,由三个方法与之相关
getUserPrincipal(),getRemoteUser(),isUserInRole();
调用isUserInRole()前,用户要得到认证,否则总会返回false;如果用户可以映射到参数角色,容器返回true;
BASIC认证、DIGEST认证、CLIENT认证、FORM认证;
表单认证要为用户登录创建你自己的定制HTML表单,创建一个定制的HTML错误页面,在DD中使用
HTML登录表单中3项是与容器通信的关键//DD中
以声明方式保守地实现数据机密性和完整性——设置transport-gurantee的属性值为CONFIDENTIAL;
为了确保用户的登录数据能安全地传输到服务器,要对每个可能触发登录过程的受限资源设置一个传输保证;
请求过滤器可以做安全检查,重新格式化请求首部,建立请求审计或日志;
响应过滤器可以压缩响应流;追加或修改响应流;创建一个完全不同的响应;
每个过滤器都必须实现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 rappedResp=ne CompressionResponseWrapper(response);//定制包装器类包装响应
chain.doFilter(request,rappedResp);
//这里完成压缩逻辑
}
public void destroy(){}
}
}
第十四章 企业设计模式模式和Struts