日期:2014-05-16 浏览次数:20372 次
Servlet | JSP |
注解Annotation | jsp基础, |
Servlet&Filter&Listener,伪静态 | 自定义标签 |
文件上传与下载 | 配置jsp属性 |
动态注册,web模块支持 | 表达式语言EL |
异步处理 | 标签文件 |
@WebServlet: asyncSupported=true, urlPatterns:{},name,loadOnStartup=1,initParams:{@WebInitParam(name="",value="")}
@WebInitParam
@WebListener用于配置Listener
@WebFilter:asyncSupported,dispatcherTypes=[ASYNC|ERROR|FORWARD|INCLUDE|REQUEST],filterName,initParams,servletNames,urlPatterns/value
@MultipartConfig用于配置文件上传Servlet
JAAS安全控制配置:
@ServletSecurity
@HttpConstraint
@HttpMethodConstraint
Servlet一般用作控制器。
load-on-startup Servlet:
<load-on-startup>1</load-on-startup>
@WebServlet(loadOnStartup=1)
相关类HttpServlet,HttpSession,ServletContext,HttpServletRequest,HttpServletResponse,Cookie,ServletConfig.以及
相关的Listener监听器@WebListener
<servlet-param>,
<context-param>
<error-page><error-code>/<exception-type> <location>
<welcome-file-list>
@WebFilter
Filter不仅会过滤用户请求而且在Servlet或者javabean处理完成之后还会拦截过滤响应。
Filter用途常见分类:用户授权,日志,解码,拦截改变请求响应,图片等防盗链,设置字符编码等
相关类:Filter接口,FilterConfig,FilterChain,HttpServletRequestWrapper,HttpServletResponseWrapper
使用URLRewriteFilter开源库
@MultipartConfig
相关类:HttpServletRequest,Part,java.util.UUID(用于产生随机ID)
表单属性:enctype="multipart/form-data"
处理时注意事项:
1.查看是否有Content-Type头,若有则存在文件域
2.查看文件名是否为空。
3.调用Part实例的write方法写入磁盘。
4.part实例getName方法返回的不是文件名,若想获取文件名需要通过part.getHeader("Content-Disposition")然后解析这个头来获取。
5.多个文件上传需要遍历Part集合。
或者使用apache commons-fileupload组件
1.设置Content-Type头值为application/x-msdownload或者application/octet-stream
2.添加Content-Disposition头值为attachment;filename=".. ."
3.防止跨站引用:检测refer头。
相关类:ServletContext,Servlet,Filter,Listener
通过ServletContext相关方法可动态注册Servlet,Filter,Listener并传递初始化参数。
一个JAR文件,META-INF目录下添加一个web-fragment.xml.描述和管理该模块的web部署。
配置annotation或者web.xml支持async. @WebServlet(ayncSupported=true)
相关类:AsyncContext,AsyncListner,HttpServletRequest
通过request可以获取AsyncContext对象实例。然后通过AsyncContext对象的相关方法可以进行异步请求处理。通过AsyncListener实例可以进行监听相关事件。
编写步骤:
1.request.startAsync()获取AsyncContext实例
2.调用AsyncContext的setTimeout设置超时,ms为单位
可选调用addListener添加监听器。
3.调用AsyncContext实例的start(Runnable run)方法开始异步任务。
4.任务完成时在runnable中调用以下方法之一:asyncContext.complete();asyncContext.dispatch(...)
9.异常:
IOException,ServletException
1.JSP注释:<%-- --%>; <!-- -->
JSP声明:<%! %>
JSP表达式<%= %>