




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaWeb三大组件1 Servlet1.1 生命周期方法1.1.1 void init(ServletConfig):加载和实例化:当客户端发送一个请求时,Servlet容器(Tomcat)会查找内存中是否存在Servlet实例,如果不存在,就创建一个Servlet实例。如果存在Servlet实例,就直接从内存中取出该实例来响应请求初始化:初始化Servlet时,可以设置数据库连接参数,建立JDBC连接,或是建立对其他资源的引用。初始化阶段,init()方法被调用1.1.2 void service(ServletRequest request, ServletResponse response):Servlet初始化后,就处于响应请求的就绪状态1.1.3 void destory():销毁由容器完成,销毁调用Servlet的destroy()方法1.2 特性1.2.1 单例,只创建一个对象,线程不安全,效率是高的1.2.2 Servlet类我们来写,对象由服务器创建,并且由服务器调用其中的方法1.3 动态资源,处理请求1.4 配置1.4.1 正常是第一次访问服务器时创建servlet,启动时就完成创建 非负整数 1.4.2 访问路径中使用通配符/*匹配所有*.do匹配扩展名是.do的所有路径/servlet/*匹配/servlet路径候的所有的路径1.5 创建servlet1.5.1 实现javax.servlet.servlet接口1.5.2 继承javax.servlet.genriticservlet类1.5.3 继承javax.servlet.http.httpservlet类型httpServletRequestString getParamater(String paramaterName): 获取请求参数String geMethod():获取请求方法String getHeader(String headerName):获取请求头void setCharacterEncoding(Encoding):设置请求字符编码httpServletResponsePrintWriter getWriter():获取字符响应流ServletOutputStream getOutputStream():获取字节响应流void setCharacterEncoding(String encoding):获取响应编码void setHeader(String name,String value): 设置响应头void getContextType(String contextType): 获取响应头类型void sendError(int code, String errorMesg): 向客户发送错误响应码和错误信息1.6 Session1.6.1 Cookiecookie是由服务器创建的,浏览器第一次访问,服务会创建一个cookie给浏览器带回去。当浏览器第二次访问时,把cookie带给服务器,服务器用来跟踪浏览器的状态cookie是键值对组成cookie的头设置浏览器发送给服务器的头:Cookie服务器发送给浏览器的头 : Set-CookieCookie的发送和接收Servlet发送Cookie cookie = new Cookie(aaa, AAA) response.addCookie(aaa)Servlet接收Cookie cookies = request.getCookies() if(cookies != null) for( Cookie cookie : cookies) cookie.getName(); cookie.getValue(); Cookie的细节Cookie的maxAgecookie.setMaxAge(-1) : 只在内存中存活,关闭浏览器cookie就会消失cookie.setMaxAge(60*60): cookie能够在硬盘中存活1个消失cookie.setMaxAge(0): 表示这个cookie作废,最终这个cookie在内存和硬盘上不存在Cookie的pathCookie的Domain:二级域名Cookie的保存中文,需要对中文编码解码1.6.2 SessionHttpSession的作用会话跟踪域功能登入信息回现原理Session依赖Cookie浏览器第一次访问服务器时,服务器会创建一个session对象,同时创建一个cookie,把sessionid放在cookie中给浏览器带回去, 只要session还存活,浏览器还存在,下次浏览器再次访问时,浏览器就会通过cookie把sessionID返回给服务器,只要浏览器不关闭,下次就可以共享session中的数据了由于服务器端创建的cookie只能在浏览器中存活,如果客户关闭浏览器,请求中就没有sessionId,再次访问需要重新创建sessionid放在cookie中给浏览器带回如果Session超过了最大活动时间,失效,此时即使没有关闭浏览器。浏览器的提供的SessionID也没有用了设置Session有效活动时间 30 Session相关APIString # getId() : 获取SessionIdvoid setMaxInactiveInterval(time) : 设置session最大不活动时间,默认是30分钟int getMaxInactiveInterval():获取session可以的最大不活动时间(秒),默认为30分钟。 当session在30分钟内没有使用,那么Tomcat会在session池中移除这个sessionlong getCreationTime():返回session的创建时间,返回值为当前时间的毫秒值long getLastAccessedTime():返回session的最后活动时间,返回值为当前时间的毫秒值void invalidate():让session失效!调用这个方法会被session失效,当session失效后,客户端再次请求,服务器会给客户端创建一个新的session,并在响应中给客户端新session的sessionIdboolean isNew():查看session是否为新。当客户端第一次请求时,服务器为客户端创建session,但这时服务器还没有响应客户端,也就是还没有把sessionId响应给客户端时,这时session的状态为新URL重写session依赖Cookie,这是因为服务器需要把sessionId保存到客户端。如果用户的浏览器关闭了Cookie功能,那么session不能使用了! 还可以在浏览器关闭了Cookie后使用URL重写的方法保存sessionId,这需要在每个URL后面都加上sessionId!这样用户的请求中就包含了sessionId,服务器就可以通过sessionId找到对应的session对象了1.7 ServletContext1.7.1 获取ServletConfig getServletContext()服务器启动时会创建一个servletcontext对象,它负责在应用程序间传递数据GenericSevlet getServletContext()HttpSession getServletContext()ServletContextEvent getServletContext()1.7.2 域对象功能:所有域对象都有存取数据的功能void setAttribute(String name , Object value)Object getAttribute(String name)void removeAttribute(String name)Enumernation getAttributeNames()1.7.3 方法获取初始化参数的方法String getInitParameter(String name)获取资源相关方法获取绝对路径this.getServletContext.getRealPath(/a.txt)this.getServletContext.getRealPath(/WEB-INF/b.txt)获取资源流InputStream # this.getServletContext.getResourceAsStream(/a.txt)InputStream # this.getServletContext.getResourceAsStream(/WEB-INF/b.txt)获取指定资源下所有资源路径Set # this.getServletContext.getResourcePaths(/WEB-INF)InputStream # this.getClassLoader().getResourceAsStream(a.txt)=相对于classes文件目录InputStream # this.getClass().getReasourceAsStream(a.txt)=相对于.class文件目录InputStream # this.getClsss().getReasourceAsStream(/a.txt)=相对于classes文件目录1.8 Request1.8.1 处理字符编码问题 String name = request.getParameter(username) byte bytes = name.getBytes(ISO-8859-1) name = new String(bytes, utf-8)1.8.2 request域方法1.8.3 request获取请求参数1.8.4 request获取请求表头的方法1.8.5 request其他方法String # getMethod() : 获取请求方法void # setCharacterEncoding(utf-8) : 设置请求编码String # getContextPath() : 获取上下文路径, /项目名String # getRemoteAdrr() : 获取请求的IP地址1.8.6 请求转发; 一次请求,一次响应,留头不留体request.getRequestDispatcher(/BServlet).forword(request, response)1.8.7 请求包含: 一次请求,一次响应,留头留体requet.getRequestDispatcher(/BServlet).include(request, response)1.8.8 路径客户端路径服务器路径1.9 Response1.9.1 处理字符编码问题: response.setContextType(text/html,charset=utf-8)1.9.2 字符流: PrintWriter # response.getWriter()1.9.3 字节流: ServletOutputStream # response.getOutStream()1.9.4 response.fulshBuffer(): 刷新缓冲流1.9.5 响应码302: 重定向response.sendRedirect()200:响应成功304: 找不到资源1.10 Servlet三个域对象1.10.1 request1.10.2 session1.10.3 application1.11 Javaweb四大域1.11.1 pageContext这个对象代表页面上下文,该对象主要用于访问JSP之间的共享数据1.11.2 session一个会话只创建一个sessionContext对象void session.setAttribute(String name, Object value)Object session.getAttribute(String name)void session.removeAttribute(String name)1.11.3 request一次请求只创建一个requestContext对象1.11.4 servletContext一个应用程序只创建一个servletContext对象2 Filter2.1 基本知识2.1.1 创建一个过滤器自定一个过滤器需要实现Filter接口,实现接口中的方法web.xml中配置 AFilter 过滤器的全限定名 AFilter url-partten拦截的资源 /filter-mapping2.1.2 过滤器的生命周期void # init(FilterConfig) : 在服务器启动时会创建Filter实例,并且每个类型的Filter只创建一个实例,从此不再创建在创建完Filter实例后,会马上调用init()方法完成初始化工作,这个方法只会被执行一次void # doFilter( ServletRequest request, ServletResponse response, FilterChain chain)参数FilterChain中有一个方法doFilter(ServletRequest,ServletResponse): 表示放行这个方法会在用户每次访问“目标资源(patternindex.jsp)”时执行如果需要“放行”,那么需要调用FilterChain的doFilter(ServletRequest,ServletResponse)方法,如果不调用FilterChain的doFilter()方法,那么目标资源将无法执行void # destroy():服务器会在创建Filter对象之后,把Filter放到缓存中一直使用,通常不会销毁它一般会在服务器关闭时销毁Filter对象,在销毁Filter对象之前,服务器会调用Filter对象的destory()方法2.1.3 参数类型FilterChain参数FilterChain中有一个方法doFilter(ServletRequest,ServletResponse): 表示放行这个方法会在用户每次访问“目标资源(patternindex.jsp)”时执行FilterConfigServletContext getServletContext():获取ServletContext的方法String getFilterName():获取Filter的配置名称;与元素对应String getInitParameter(String name):获取Filter的初始化配置,与元素对应Enumeration getInitParameterNames():获取所有初始化参数的名称2.1.4 多个过滤器执行顺序filter1 start. filter2 start. index.jsp filter2 end. filter1 end.2.1.5 四种拦截方式REQUESTFORWARDINCLUDEERROR2.2 案例3 Listener3.1 基本了解3.1.1 监听器是个接口,内容由我们实现3.1.2 必须要注册事件源上3.1.3 监听器中的方法会在特殊事件发生时被调用3.2 事件源3.2.1 javaweb域ServletContext生命周期监听ServletContextListenervoid # contextInitialized(ServletContextEevent sce): 创建servletContext时调用void contextDestroyed(ServletContextEvent sce): 销毁servletcontext时调用属性监听ServletContextAttributeListenervoid # attributeAdded(ServletContextAtrributeEvent evc): 添加属性时调用void # atrributeReplaced(ServletContextAttributeEvent evc): 替换属性时调用void # attributeRemoved(ServletContextAttributeEvent evc): 移除属性时调用HttpSession生命周期监听HttpSessionListenervoid # sessionCreated(HttpSessionEvent se)void # sessionDestroyed(HttpSessionEvent se)属性监听HttpSessionAttributeListenervoid # attributeAdded(HttpSessionBindingEvent event)void # attributeReplaced(HttpSessionBindingEvent event)void # attributeRemoved(HttpSessionBindingEvent event)ServletRequest生命周期监听ServletRequestListenervoid # requestInitt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园中班数学《认识相邻数》课件
- 2024安徽芜湖市湾沚区公办幼儿园保育员招聘12人笔试备考试题及参考答案详解一套
- 安全培训班讲话课件
- 机修学徒基础知识培训课件
- 睡眠管理培训课件
- 《电机与电气控制》课件第3章
- 2024年淮北市粮食产业发展集团有限公司招聘考试真题及答案详解(真题汇编)
- 押题宝典期货从业资格之《期货法律法规》题库含答案详解(a卷)
- 女干部礼仪培训课件
- 母婴销售培训课件
- 四川产业振兴基金投资集团有限公司招聘笔试题库2025
- 光伏备案合同协议
- 法考历年真题答案2024
- 西柏坡的故事与红色教育
- 各岗位应知应会“明白卡”(含矿长等)
- 学生欺凌治理委员会
- 2025年数控铣工技能竞赛参考试指导题库500题(含答案)
- (2024新版本)人教版七年级上册历史全册教案
- 2025年干混砂浆项目可行性研究报告
- 《常见视频接头与连接方式》课件
- 2024全球工程管理前沿
评论
0/150
提交评论