HTTP A概述 用来规定浏览器与服务器之间需要遵守的规则 B作用,特点 规范浏览器与服务器之间的数据传递.是基于请求与相应的模型.必须先有请求后又相应.请求和相应必须成对出现 C结构 | | | | | a提交方式:(1)get:提交的参数会显示在地址栏上,而且有大小的限制 (2)post:提交的参数不会显示在地址栏中,而且没有大小的限制 b提交路径 c协议版本 | 都是兼职对的形式显示的,一般一个key对应一个value,也可能对应多个 (1)User-Agent:代表浏览器类型,不同的浏览器使用不同的编码 (2)Referer:代表网页的来源,就是防盗链 (3)If-Modified-Since:查找本地缓存 | | | A协议的版本 B状态码 200:成功 302:重新定向 304:查找本地资源 404:资源不存在,或地址错误 500:服务器内部错误,其实就是代码书写错误 | 都是键值对,一般一个key对应一个value,也可以对应多个 (1)Last-Modifide:查找本地缓存 (2)Content-Dispostio:文件下载使用的一个头信息 (3)Location:重新定向跳转的路径 (4)Refrech:定时刷新/定时跳转 | | ServletA:概述 就是一个运行在web服务器上的Java小程序,用来接受和响应从客户端发过来的请求,通常使用http协议,就是由san公司开发的一个动态网页开发技术 B:作用 用来处理从客户端浏览器发送的请求,并且可以对请求作出响应 C格式 编写一个类实现servlet接口 将编写的这个类配置到服务器中 D:servlet的生命周期*****(面试) 用户第一次访问servlet的时候,服务器会创建一个servlet的实例,那么servlet中init方法就会执行,热河一次服务器请求,都会创建一个新的线程访问servlet中的service方法,在service方法=内部根据请求方式的不同调用doxxx方法,当servlet在服务器中移除掉或者关闭服务器,servlet的实例就会销毁,那么destroy方法就会执行,整个生命周期中有且只有找一个servlet E:servlet的相关配置 在服务器启动时,就会创建servlet,当第一个请求发出时会进行初始化,这个过程会消耗很多资源,导致等待.为了提升客户的体验,一般会把初始化的过程提前到服务器启动时就初始化.在web.xml中的<servlet>标签中使用<load-on-startup>2</load-on-statup>,在标签中间传入整数,整数的数值越小优先级越高,但是最高为2,因为1已经被占用,用来显示404,500等错误信息. F:servlet的常用方法: SerletRequest :客户端发送过来的请求,想要获得 请求的数 据,都从此处获得 | ServletResponse :服务器返回的数据,想要获得返回的数据内容都要从此获得 | | 设置响应头,使用http协议中的refresh头信息,用来完成定时页面的跳转 | String getParameter(String name) 用于接受一个一个名称对应的一个值得数据 | Void addDateHeader(String name , long date) 针对一个key对应多个value的响应头 | String[] getParameterValues 用于接收一个名称对应多个值的数据,例如复选框 | setHeader(String name,String value) 设置响应头 | Map getParemeterMap 用于接收表单中的所有数据,map的key是表单提交的参数名称,map的value就是提交的参数的值 | setDateHeader(String name , long date) | | setInHeader(String name , int value) | String getRequestURI() 获得请求路径,项目内路径 | Void setStatus(int status) 响应行设置状态码 | StringBuffer getRequestURL() 获得请求路径,全路径 | Void addDateHeader(String name ,long date) 响应头针对一个key对应多个value的头信息,追加内容 | String getRemoteAddr() 获得客户机相关信息,ip地址 | void addHeader(String name,String value) | String getContextPath() 获得工程名 | Void addIntHeader(String name,int value) | Void getAttribute(String name) 作为域对象存取数据,作用范围就是一次请求的范围,客户端向服务器发送了一次请求后服务器就会创建request对象.当服务器对这次请求作出响应后,就会销毁 | Void setDateHeader(tring name , long date) 针对一个key对应一个value的头信息,会发生数据的覆盖 | Void setAttribute(String name,Object o) | Void setHeader(String name , String value) 设置头文件 | Object removeAttribute(String name) | Void setIntHeader(String name,int value) | | response.setCharacterEncoding(“UTF-8””); 设置response的缓冲区编码 | | response.setContentType("text/html;charset=UTF-8"); 相当于上面两句 | | ServletOutputStream etOutputStream() 响应体使用字节流,用于文件的下载 | | PrintWriter getWriter() 使用字符流,用于向页面输出内容 | | | | |
文件下载的方式 (1)超链接下载,直接将文件路径写到超链接href中.前提是文件类型浏览器不支持,如果支持就会直接打开要下载的文件 (2)手动编写代码完成文件下载 设置两个头和一个流 Content-Type :文件的mime类型 Content-Disposition: 以下载的形式打开文件,即使文件可以再网页直接打开 InputStream: 文件的输入流 G:数据与数据库的链接方法 | | | 用于接收来自客户端的请求数据,并且把数据传到service进行处理.在数据处理完成后,把结果传递给客户端 (1)接收表单传来的参数 (2)将传来的参数封装到实体对象中 (3)调用业务层处理数据 (4)根据处理结果显示信息 | 将来自servlet传过来的数据进行处理,完成业务逻辑,并且把数据传递给数据库dao | |
G:sevlet的登录案例: (1)页面提交参数:在<form>标签中将数据提交到servlet中 (2)在servlet或得请求参数:request.getParmeter(); (3)将得到的数据封装到一个对象中 (4)调用业务层对数据进行处理 (5)业务层将数据传递给dao层,与数据库的数据进行比对,再将比对结果传回. (6)根据传回的数据结果做出响应 域对象:存储的数据有一定范围的成为域对象 ServletContext 被多个用户共享,在服务器启动的时候就会被创建.每个web项目都会创建一个ServletContext对象,在服务器关闭的时候销毁.作为域对象存的数据有一定的范围 (1)用来获取全局初始化参数 (2)用来获得文件的mime的类型 (3)作为域对象存取数据 (4)在有servlet环境下this.getServletContext获得该对象 | Request (1)创建:从客户端向服务器发送请求,就会创建一个request对象 (2)销毁:服务器为这次请求做出响应之后,服务器就会销毁request对象 (3)作用范围:一次请求 | Void setAttribute(String name , Object object) 用来存数据 | 获得客户机的信息 getRemoteAddr() Getmethod() GetRequestURI() getRequestURL() | Object getAttribute(String name) 用来向ServletContext中获得数据 | 获得请求参数 getParameter() getParameterValue() getparameterMap() | Void removeAttribute(String name) 从servletContxt中移除数据 | 作为域对象的三个方法 getAttribute() setAttribute() removeAttributr() | | | | | InputStream getResourceAsStream(String path) 根据提供路径读取web文件返回一个文件的输入流(就是读取文件的内容) | | String getRealPath(String path) 返回一个路径的绝对路径(带磁盘的路径) | | String getInitParameter(String name) 读取全局初始化参数 | | Enumeration getInitParmeterNames() 读取全局初始化参数(返回的数据类型为枚举) | | String getMimeType(String file) 获得文件的mime类型 | |
H:接收参数的乱码处理 Post提交方式的处理: 设置request的缓冲区编码:request.setCharacterEncoding(“UTF-8”); Get提交方式的处理: (1)修改服务器提交的编码 (2)采用URLEncoder 和 URLDecoder类对中文进行编码和解码. (3)* 使用String类的构造方法: username = new String(username.getBytes("ISO-8859-1"),"UTF-8"); System.out.println(username); I:转发和重定向 重定向:response.sendRedirect(String path); -- 完成重定向 转发:request.getRequestDispatcher(String path).forward(request,response); 重定向和转发的区别: (1)转发的地址栏不变,重定向的地址栏发生变化 (2)转发是一次请求一次响应,重定向是两次请求两次响应 (3)request域对象存的数值在转发中是有效的,在重定向无效 (4)转发的路径不需要加工程名.重定向的路径需要加工程名 Cookie A:会化技术: 用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后,将浏览器关闭的的过程称为是一次会话 B:常见的会话技术 Cookie:将数据保存到客户端浏览器 Session:将数据保存到服务器端 C:会话技术的使用: 将私有的数据,购物的信息数据保存到会话技术中 (1)向浏览器保存数据 HttpServletResponse有一个方法 Void addCookies(); (2)获得浏览器带过来的Cookies HttpServletRequest有一个方法 Cookie[]getCookies(); (3)创建一个Cookie对象 Cookie(String name,String value); D:常用API: Getname(); Getvalue(); setDomain(String domain); -- 设置Cookie的有效域名. setPath(String path); -- 设置Cookie的有效路径. setMaxAge(int maxAge); -- 设置Cookie的有效时间. JSPA:概述: 就是java代码+HTML的元素+jsp自己的一些东西.就是动态网页开发技术 B:执行过程: Jsp会被翻译成Servlet,编译成class进行执行的 C:注释: 一个原则,什么样的代码种类,用什么样的注释,快捷键ctrl+shift+/,会根据代码种类自动生成不同的注释格式 D:指令 (1)page:<%@ %>是用来设置jsp的 (2)include:指示jsp包含其他页面.使用相对路径 (3)taglib:指示jsp引入标签库 E:内置对象(就是可以在jsp中直接使用的对象) SessionA:概述 Cookie本身有大小和个数的限制,session没有限制,cookie保存在客户端,session保存在服务器端. B:执行原理: 是基于cookie的 C:获得session: request.getSession(); D:是域对象 创建:服务器端第一次调用getSession(),就会创建 销毁:三种情况 (1)过期,默认时间为30分钟 (2)非正常关闭服务器,如果正常关闭,会序列化到硬盘 (3)手动调用session.invalidate(); 作用范围:多次请求(一次对话) EL表达式A:作用: 简化jsp的代码,减少<%%> B:语法 ${el的表达式} C:功能 获取数据 执行运算 操作web开发常用的对象 调用Java中的方法 JSTLA:作用: 和EL结合替换页面中的<%%> B:JSTL的标签库组成 core(核心标签),fmt(国际化标签),xml(XML标签),sql(SQL标签),fn(JSTL提供EL函数库) C:JSTL的使用 (1)引入JSTL相关的jar包 (2)在页面中引入标签库<%@ taglib uri=”” prefix=””%>
|