首页 > 新闻动态 >  

新闻动态
NEWS

Servlet 3.0

添加时间:2013-8-6 点击量:

目次


# Servlet


# ServletRequest


# Servlet Context


# ServletResponse





# Servlet



Servlet接口2个类:GenericServlet,HttpServlet


一般,容器只创建一个Servlet实例,并发的恳求应用同一个实例进行处理惩罚,是以,Servlet 不是线程安然的


Servlet 若实现 SingleThreadModel,则容器会创建多个实例,确保每个实例同时只在一个线程内运行。然则,规范不推荐应用 SingleThreadModel


两个生命周期回调办法:init() 和 destroy()



# ServletRequest



接口 ServletRequest,HttpServletRequest


类 HttpServletRequestWrapper



o 生命周期:恳求对象失效后,被容器收受接管后可能被重用,应用法度不该该依附于超出有效局限的恳求对象



o 恳求参数


客户端提交的恳求参数,经由过程 HttpServletRequest.getParameterXxx() 办法读取


表单数据若是是POST办法提交,则编码类型必须是 application/x-www-form-urlencoded ,表单数据才作为参数,不然,表单数据在 HTTP 恳求 body 内,只能经由过程 InputStream 读取


文件上传(File upload)须应用 multipart/form-data 表单类型,且Servlet 添加 @MultipartConfig 标识表记标帜


文件上传数据的读取:getPart(),getParts()



o 属性


属性(Attribute)是容器设置,或应用法度设置,办法:setAttribute(),getAttributeXxx()


以 java,javax,sun开首的属性名称保存


SSL有关的属性,容器以属性的情势供给


断定是否SSL:isSecure()



o HTTP 头:getHeaderXxx(),getXxxHeader()



o 恳求路径


恳求路径包含3项目组


- Context Path:Web 应用的根路径,若是Web应用为默认应用,则为,getContextPath()


- Servlet Path:Context Path 后面,Servlet 映射路径


- Path Info:若是Servlet映射路径应用了通配符,Servlet Path 后面的项目组为 Path Info


如,主机为www.the.com,Web应用为 some.war,某一Servlet 映射路径为 /oneServlet/,客户端恳求 http://www.the.com/some/oneServlet/any/file,则


- Context Path = /some


- Servlet Path = /oneServlet


- Path Info = /any/file


忽视URL编码,requestURI = contextPath + servletPath + pathInfo



o 获取本地路径


可将恳求路径转换为办事器本地文件体系路径


- ServletContext.getRealPath():将相对于 Context Path 的路径转换为本地物理路径


- HttpServletRequest.getPathTranslated() :将该恳求的 Path Info 转换为本地物理路径



o getCookies() 获取 Cookie



o I18N


HTTP恳求中 Accept-Language 头,可经由过程以下办法读取:getLocale(),getLocales()



o 恳求的字符编码


getCharacterEncoding(),若是客户端未指定(Content-Type头),则返回 null,容器默认应用 ISO-8859-1


setCharacterEncoding() 覆盖客户端提交的字符编码



 # Servlet Context



ServletContext 是Web app的接见接口


Web app 在办事器上的路径为 http://host:port/contentRoot


每个 Web app 只有一个 ServletContext 实例



o 初始化参数


设置:经由过程 web.xml


读取:getInitParameterXxx()



o 编程增长Servlet,Filter和Listener


ServletContext 供给办法,可在Web app 初始化时创建、设备 Servlet、Filter 和 Listener,如同在 web.xml 中声明一样


 - addServlet/Filter/Listener()


 - createServlet/Filter/Listener()


 - getServlet/Filter/ListenerRegistration()


 - getServlet/Filter/ListenerRegistrations()



o 属性


ServletContext 的属性对象可以被Web app 内随便率性组件接见


- setAttribute()


 - getAttribute()


 - getAttributeNames()


 - removeAttribute()



o 读取资料


可读取 Web app 内的静态资料文件,如:HTML


- getResource()


- getResourceAsStream()



o 姑且文件夹


容器要为每个Webapp 供给一个姑且文件夹


File dir = (File) servletContext.getAttribute(javax.servlet.context.tempdir);




# ServletResponse 



HttpServletResponse 默示给客户端的HTTP响应


ServletResponse 对象应当只在其有效局限(Servlet.service())内应用



o 缓冲


返回客户端的数据,可以经由过程 OutputStream 或 PrintWriter 写出去,也可以先写入缓冲区,再提交到客户端


ServletResponse 供给以下办法


- getBufferSize()


- setBufferSize()


- reset()


- resetBuffer()


- flushBuffer()


- isCommitted()



o HTTP 头


setHeader()


addHeader()


setXxxHeader()


addXxxHeader()



o 便利办法


- sendRedirect() 重定向


- sendError() 返回HTTP错误页面



o I18N


- setLocale()


- setContentType()


- setCharacterEncoding()





我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
分享到: