javaweb基础知识整理.doc

上传人:小** 文档编号:548192 上传时间:2018-10-24 格式:DOC 页数:68 大小:508.50KB
返回 下载 相关 举报
javaweb基础知识整理.doc_第1页
第1页 / 共68页
javaweb基础知识整理.doc_第2页
第2页 / 共68页
点击查看更多>>
资源描述

《javaweb基础知识整理.doc》由会员分享,可在线阅读,更多相关《javaweb基础知识整理.doc(68页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、|一、 TOMCAT 服务器的安装与配置1.常见服务器:WebLogic(BEA) 、webSphere(IBM) 、Tomcat(Apache)2.Tomcat 的下载与安装下载地址:http:/tomcat.apache.org/安装目录不能包含中文和空格JAVA_HOME 环境变量指定 Tomcat 运行时所要用的 jdk 所在的位置,注意,配到目录就行了,不用指定到 bin。端口占用问题:netstat -ano 命令查看端口占用信息Catalina_Home 环境变量:startup.bat 启动哪个 tomcat 由此环境变量指定,如果不配置则启动当前 tomcat,推荐不要配置此

2、环境变量。3.Tomcat 的目录结构bin-存放 tomcat 启动关闭所用的批处理文件conf-tomcat 的配置文件,最终要的是 server.xml*实验:修改 servlet.xml,更改 tomcat 运行所在的端口号,从 8080 改为 80lib-tomcat 运行所需 jar 包logs-tomcat 运行时产生的日志文件temp-tomcat 运行时使用的临时目录,不需要我们关注webapps-web 应用所应存放的目录work-tomcat 工作目录,后面学 jsp 用到4.虚拟主机一个真实主机可以运行多个网站,对于浏览器来说访问这些网站感觉起来就像这些网站都运行在自己

3、的独立主机中一样,所以,我们可以说这里的每一个网站都运行在一个虚拟主机上,一个网站就是一个虚拟主机。4.1 配置虚拟主机在 server.xml 中 标签下配置,其中 name 属性指定虚拟主机名, appBase 指定虚拟主机所在的目录只在 servlet.xml 中配置 Hosts,还不能使其他人通过虚拟主机名访问网站,还需要在 DNS 服务器上注册一把,我们可以使用 hosts 文件模拟这个过程。默认虚拟主机:在配置多个虚拟主机的情况下,如果浏览器使用 ip 地址直接访问网站时,该使用哪个虚拟主机响应呢?可以在标签上设置 defaultHost 来指定。5.web 应用web 资源不能直

4、接交给虚拟主机,需要按照功能组织用目录成一个 web 应用再交给虚拟主机管理。5.1web 应用的目录结构web 应用目录| - html、css、js、jsp 静态资源和 JSP 文件都可以直接放置在 web 应用的目录下,直接放在 web 应用下的内容,浏览器可以直接访问到| - WEB-INF 可以没有,但是最好有,如果有则一定要保证他的目录结构是完整的。放置在 WEB-INF 目录下的所有资源浏览器没有办法直接进行访问。| - classes 动态 web 资源运行时的 class 文件要放在这个目录下。| - lib 动态 web 资源运行时所依赖的 jar 包要放在这个目录下。|

5、- web.xml 整个 web 应用的配置文件,配置主页/Servlet 的映射/过滤器监听器的配置都需要依赖这个文件进行。|5.2web.xml 文件的作用某个 web 资源配置为 web 应用首页将 servlet 程序映射到某个 url 地址上为 web 应用配置监听器为 web 应用配置过滤器但凡涉及到对 web 资源进行配置,都需要通过 web.xml 文件*实验:配置一个 web 应用的主页5.3web 应用的虚拟目录映射5.3.1 在 server.xml 的标签下配置如果 path=“则这个 web 应用就被配置为了这个虚拟主机的默认 web 应用。5.3.2 在 tomca

6、t/conf/引擎名/ 虚拟主机名 之下建立一个.xml 文件,其中文件名用来指定虚拟路径,如果是多级的用#代替/表示,文件中配置,如果文件名起为 ROOT.xml 则此 web 应用为默认 web 应用。这种配置方式不需要重启服务器,推荐。5.3.3 直接将 web 应用放置到虚拟主机对应的目录下,如果目录名起为 ROOT 则此 web 应用为默认 web 应用。如果三处都配置默认 web 应用则 server.xml config/./xx.xml webapps。5.4 杂项(1)打 war 包:方式一: jar -cvf news.war * 方式二:直接用压缩工具压缩为 zip 包,

7、该后缀为.war 。(2)通用 context 和通用 web.xml,所有的 都继承子 conf/context.xml,所有的 web.xml 都继承自 conf/web.xml(3)reloadable 让 tomcat 自动加载更新后的 web 应用,当 java 程序修改后不用重启,服务器自动从新加载,开发时设为 true 方便开发,发布时设为 false,提高性能。(4)Tomcat 管理平台,可以在 conf/tomcat-users.xml 下配置用户名密码及权限。6.作业配置一个 这样一台虚拟主机,其中包含 news 应用和 mail 应用,news 应用中有一个 new.

8、html。实现在浏览器中输入 直接看到 new.html 中的芙蓉姐姐。二、HTTP 协议1.HTTP 协议概述HTTP 协议用于定义客户端与 web 服务器通迅的格式。HTTP 是 hypertext transfer protocol(超文本传输协议)的简写,它是 TCP/IP 协议的一个应用层协议HTTP 使用请求- 响应的方式进行传输,一个请求对应一个响应,并且请求只能是由客户端发起的。HTTP 协议的版本:HTTP/1.0、HTTP/1.1 ,其中 1.0 一次请求发起一次连接,响应过后连接自动断开。 1.1 里每次请求响应后连接将保持一段时间,这段时间内可以再执行请求响应。一次请

9、求对应一次响应,请求只能由客户端发出,服务器只能被动的等待请求做出响应2.HTTP 请求2.1 请求行GET /books/java.html HTTP/1.1请求方式 请求的资源名 所遵循的协议2.2 请求方式:GET、POST七种请求方式: POST、GET 、HEAD 、OPTIONS、DELETE 、TRACE、PUT其中 GET 方式在请求资源的 URL 后跟“?参数名= 参数值 MSIE 5.5; Windows NT 5.0) 客户端的一些基本信息Cookie 会在后面讲会话技术的时候单讲Connection: close/Keep-Alive 指定是否继续保持连接Date: T

10、ue, 11 Jul 2000 18:23:51 GMT 当前时间4.实体内容5.HTTP 响应5.1 状态行HTTP/1.1 200 OK格式: HTTP 版本号 状态码 原因叙述状态码:200:请求处理成功302:请求重定向304、307 :服务器通知浏览器使用缓存404:资源未找到500:服务器端错误5.2 若干响应头Location: http:/www.it315.org/index.jsp 配合 302 实现请求重定向Server:apache tomcat 服务器的基本信息Content-Encoding: gzip 服务器发送数据时使用的压缩格式Content-Length:

11、80 发送数据的大小Content-Language: zh-cn 发送的数据使用的语言环境Content-Type: text/html; charset=GB2312 当前所发送的数据的基本信息, (数据的类型,所使用的编码)Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT 缓存相关的头Refresh: 1;url=http:/www.it315.org 通知浏览器进行定时刷新,此值可以是一个数字指定多长时间以后刷新当前页面,这个数字之后也可以接一个分号后跟一个 URL 地址指定多长时间后刷新到哪个 URLContent-Disposition: a

12、ttachment;filename=aaa.zip 与下载相关的头Transfer-Encoding: chunked 传输类型,如果是此值是一个 chunked 说明当前的数据是一块一块传输的Set-Cookie:SS=Q0=5Lb_nQ; path=/search 和 cookie 相关的头,后面课程单讲ETag: W/“83794-1208174400000“ 和缓存机制相关的头Expires: -1 指定资源缓存的时间,如果取值为 0 或-1 浏览就不缓存资源Cache-Control: no-cache 缓存相关的头,如果为 no-cache 则通知浏览器不缓存Pragma: no

13、-cache 缓存相关的头,如果为 no-cache 则不缓存|以上三个头都是用来控制缓存的,是因为历史原因造成的,不同的浏览器认识不同的头,我们通常三个一起使用保证通用性。Connection: close/Keep-Alive 是否保持连接Date: Tue, 11 Jul 2000 18:23:51 GMT 当前时间3.3 实体内容三、Servlet 的开发1.servlet 简介sun 提供的一种动态 web 资源开发技术。本质上就是一段 java 小程序,可以将 Servlet 加入到 Servlet 容器中运行。*Servlet 容器 - 能够运行 Servlet 的环境就叫做 S

14、ervlet 容器。 - tomcat*web 容器 - 能够运行 web 应用的环境就叫做 web 容器。 - tomcat2.Servlet 的调用过程Servlet 程序是由 WEB 服务器调用, web 服务器收到客户端的 Servlet 访问请求后: Web 服务器首先检查是否已经装载并创建了该 Servlet 的实例对象。如果是,则直接执行第步,否则执行第步。 装载并创建该 Servlet 的一个实例对象。 调用 Servlet 实例对象的 init()方法。 创建一个用于封装 HTTP 请求消息的 HttpServletRequest 对象和一个代表 HTTP 响应消息的 Htt

15、pServletResponse 对象,然后调用 Servlet 的 service()方法并将请求和响应对象作为参数传递进去。 WEB 应用程序被停止或重新启动之前,Servlet 引擎将卸载 Servlet,并在卸载之前调用 Servlet 的 destroy()方法。 ie web一 servlthtp:/localhost:80/day05/x1: 一web一2: 一htp一GET /day05/x HTP/1.Acept: */t-Languae: zh-cnUA-CPU: x86Host: localhost:. 3: 一一一一4: 一一一一 web一5: 一一一一web一day0

16、5/x6: 一一servlt一一一一一servlt一servlt一7: 一servlt一init一8: 一servlt一service一requstresponse String dat =“helo servlt!“;OutptStrem ut =r.getOutptStream();ot.writ(dat.getBytes();9: service 一一一一response一10: 1: web一一response一一ie3.Servlet 的生命周期生命周期的概念:一件事物,什么时候生,什么时候死,以及在其生存阶段的某一时点会触发的事件,统称为该|事物的生命周期。Servlet 的生命周

17、期:通常情况下,服务器会在 Servlet 第一次被调用时创建该 Servlet 类的实例对象(servlet 出生) ;一旦被创建出来,该Servlet 实例就会驻留在内存中,为后续请求服务;直至 web 容器退出,servlet 实例对象才会被销毁(servlet 死亡) 。在 Servlet 的整个生命周期内,Servlet 的 init 方法只有在 servlet 被创建时被调用一次。而对一个 Servlet 的每次访问请求都导致 Servlet 引擎调用一次 servlet 的 service 方法。对于每次访问请求,Servlet 引擎都会创建一个新的 HttpServletReq

18、uest 请求对象和一个新的 HttpServletResponse 响应对象,然后将这两个对象作为参数传递给它调用的 Servlet 的 service()方法,service 方法再根据请求方式分别调用 doXXX 方法。 servlet 被销毁前,会调用 destroy() 方法。 4.Servlet 接口的继承结构Servlet 接口:定义了一个 servlet 应该具有的方法,所有的 Servlet 都应该直接或间接实现此接口|-GenericServlet:对 Servlet 接口的默认实现,通用 Servlet,这是一个抽象类,其中的大部分方法都做了默认实现,只有 service

19、 方法是一个抽象方法需要继承者自己实现|-HttpServlet:对 HTTP 协议进行了优化的 Servlet,继承自 GenericServlet 类,并且实现了其中的 service 抽象方法,默认的实现中判断了请求的请求方式,并根据请求方式的不同分别调用不同的 doXXX()方法。通常我们直接继承 HttpServlet 即可。5. Servlet 的注意事项5.1Servlet 注册由于客户端是通过 URL 地址访问 web 服务器中的资源,所以 Servlet 程序若想被外界访问,必须把 servlet 程序映射到一个 URL 地址上,这个工作在 web.xml 文件中使用元素和

20、元素完成。 元素用于注册 Servlet,它包含有两个主要的子元素: 和,分别用于设置 Servlet的注册名称和 Servlet 的完整类名。 一个元素用于映射一个已注册的 Servlet 的一个对外访问路径,它包含有两个子元素:和 ,分别用于指定 Servlet 的注册名称和 Servlet 的对外访问路径。例如:例如:AnyNameHelloServletAnyName/demo/hello.html同一个 Servlet 可以被映射到多个 URL 上,即多个 元素的 子元素的设置值可以是同一个 Servlet 的注册名。 在 Servlet 映射到的 URL 中也可以使用*通配符,但是

21、只能有两种固定的格式:一种格式是“*.扩展名” ,另一种格式是以正斜杠(/)开头并以“/*”结尾。由于匹配符的引入有可能一个虚拟路径会对应多个 servlet-mapping,此时哪个最像找哪个 servlet,并且*.do 级别最低。|AnyName*.doAnyName/action/*5.2load-on-startup如果在元素中配置了一个元素,那么 WEB 应用程序在启动时,就会装载并创建 Servlet 的实例对象、以及调用 Servlet 实例对象的 init()方法。举例:invokerorg.apache.catalina.servlets.InvokerServlet25.

22、3 缺省 servlet如果一个 servlet 的对外访问路径被设置为/ ,则该 servlet 就是一个缺省 servlet,其他 servlet 不处理的请求都由它来处理。在 conf/web.xml 中配置了缺省 servlet,对静态资源的访问和错误页面的输出就是由这个缺省 servlet 来处理的。如果我们自己写一个缺省 servlet 把爸爸 web.xml 中的缺省 servlet 覆盖的话,会导致静态 web 资源无法访问。所以不推荐配置。在confweb.xml 文件中,注册了一个名称为 org.apache.catalina.servlets.DefaultServlet

23、 的Servlet,并将这个 Servlet 设置为了缺省 Servlet。当访问 Tomcat 服务器中的某个静态 HTML 文件和图片时,实际上是在访问这个缺省 Servlet。 其实对于静态资源的访问就是由缺省 Servlet 来执行。设置 404 页面 500 页面等提示页面也是由缺省 Servlet 来执行。通常我们不会自己去配置缺省 Servlet。5.4servlet 线程安全产生原因:由于通常情况下,一个 servlet 在内存只有一个实例处理请求,当多个请求发送过来的时候就会有多个线程操作该servlet 对象,此时可能导致线程安全问题。(1)serlvet 的成员变量可能存

24、在线程安全问题*实验:定义一个成员变量 int i = 0;在 doXXX()方法中进行 i+操作并输出 i 值到客户端,此时由于延迟可能导致线程安全问题(2)serlvet 操作资源文件时,多个线程操作同一文件引发线程安全问题*实验:请求带着一个参数过来,servlet 将请求参数写入到一个文件,再读取该文件,将读取到的值打印到客户端上,有可能有线程安全问题。解决方法:(1)利用同步代码块解决问题。缺陷是,同一时间同步代码块只能处理一个请求,效率很低下,所以同步代码块中尽量只包含核心的导致线程安全问题的代码。(2)为该 servlet 实现 SingleThreadModel 接口,此为一个

25、标记接口,被标记的 servlet 将会在内存中保存一个 servlet 池,如果一个线程来了而池中没有 servlet 对象处理,则创建一个新的。如果池中有空闲的 servlet 则直接使用。这并不能真的解决线程安全问题。此接口已经被废弃。(3)两种解决方案都不够完美,所以尽量不要在 servlet 中出现成员变量。|6. ServletConfig 和初始化参数代表当前 Servlet 在 web.xml 中的配置信息。代表 servlet 配置的对象,可以在 web.xml 中 中配置。例如:Demo5Servletcn.itheima.Demo5Servletdata1value1当

26、servlet 配置了初始化参数后,web 容器在创建 servlet 实例对象时,会自动将这些初始化参数封装到ServletConfig 对象中,并在调用 servlet 的 init 方法时,将 ServletConfig 对象传递给 servlet。进而,程序员通过ServletConfig 对象就可以得到当前 servlet 的初始化参数信息。String getServletName() - 获取当前 Servlet 在 web.xml 中配置的名字String getInitParameter(String name) - 获取当前 Servlet 指定名称的初始化参数的值Enum

27、eration getInitParameterNames() - 获取当前 Servlet 所有初始化参数的名字组成的枚举ServletContext getServletContext() - 获取代表当前 web 应用的 ServletContext 对象7. ServletContext1.代表当前 web 应用的对象WEB 容器在启动时,它会为每个 WEB 应用程序都创建一个对应的 ServletContext 对象,它代表当前 web 应用。ServletConfig 对象中维护了 ServletContext 对象的引用,开发人员在编写 servlet 时,可以通过Servlet

28、Config.getServletContext 方法获得 ServletContext 对象。由于一个 WEB 应用中的所有 Servlet 共享同一个 ServletContext 对象,因此 Servlet 对象之间可以通过ServletContext 对象来实现通讯。ServletContext 对象通常也被称之为 context 域对象。2.作为域对象使用在不同 servlet 之间传递数据,作用范围是整个 web 应用。生命周期:当 web 应用被加载进容器时创建代表整个 web 应用的 ServletContext 对象。当服务器关闭或 web 应用被移除出容器时,Servlet

29、Context 对象跟着销毁。方法:void setAttribute(String,Object);Object getAttribute(String);void removeAttribute(String);域:一个域就理解为一个框,这里面可以放置数据,一个域既然称作域,他就有一个可以被看见的范围,这个范围内都可以对这个域中的数据进行操作,那这样的对象就叫做域对象。3.初始化参数在 web.xml 可以配置整个 web 应用的初始化参数,利用 ServletContext 去获得param1pvalue1this.getServletContext().getInitParameter

30、(“param1“)this.getServletContext().getInitParameterNames()|4.在不同 servlet 之间进行转发this.getServletContext().getRequestDispatcher(“/servlet/Demo10Servlet“).forward(request, response);方法执行结束,service 就会返回到服务器,再有服务器去调用目标 servlet,其中 request 会重新创建,并将之前的request 的数据拷贝进去。5.读取资源文件5.1 由于相对路径默认相对的是 java 虚拟机启动的目录,所以

31、我们直接写相对路径将会是相对于 tomcat/bin 目录,所以是拿不到资源的。如果写成绝对路径,当项目发布到其他环境时,绝对路径就错了。5.2 为了解决这个问题 ServletContext 提供了 this.getServletContext().getRealPath(“/1.properties“),给进一个资源的虚拟路径,将会返回该资源在当前环境下的真实路径。this.getServletContext().getResourceAsStream(“/1.properties“),给一个资源的虚拟路径返回到该资源真实路径的流。5.3 当在非 servlet 下获取资源文件时,就没有

32、ServletContext 对象用了,此时只能用类加载器classLoader.getResourceAsStream(“././1.properties“),此方法利用类加载器直接将资源加载到内存中,有更新延迟的问题,以及如果文件太大,占用内存过大。classLoader.getResource(“./1.properties“).getPath(),直接返回资源的真实路径,没有更新延迟的问题。四、Requestcharset=gb2312“)。 response.getWriter().write(“中文”); 输出数据,这是一个字符流,response 会将此字符进行转码操作后输出到浏

33、览器,这个过程默认使用 ISO8859-1 码表,而 ISO8859-1 中没有中文,于是转码过程中用?代替了中文,导致乱码问题。可以指定 response 在转码过程中使用的目标码表,防止乱码。 response.setCharcterEncoding(“gb2312“);其实 response 还提供了 setContentType(“text/html;charset=gb2312“)方法,此方法会设置 content-type 响应头,通知浏览器打开的码表,同时设置 response 的转码用码表,从而一行代码解决乱码。1.2 文件下载利用 Response 设置 content-di

34、sposition 头实现文件下载。设置响应头 content-disposition 为“attachment;filename=xxx.xxx” 。利用流将文件读取进来,再利用 Response 获取响应流输出。如果文件名为中,一定要进行 URL 编码,编码所用的码表一定要是 utf-8。如果文件名中包含中文,则文件名要进行 URL 编码,URLEncoding.encode(啊啊.jpg,utf-8); 如果不进行编码则文件名显示错误并且不可下载。1.3refresh 头控制定时刷新设置响应头 Refresh 为一个数值,指定多少秒后刷新当前页面。|设置响应头 Refresh 为 3;u

35、rl=/Day05/index.jsp,指定多少秒后刷新到哪个页面。可以用来实现注册后“注册成功,3 秒后跳转到主页”的功能。在 HTML 可以利用标签模拟响应头的功能。1.4 设置缓存利用 response 设置 expires、 Cache-Control、Pragma 实现浏览器是否缓存资源,这三个头都可以实现,但是由于历史原因,不同浏览器实现不同,所以一般配合这三个头使用。控制浏览器不要缓存(验证码图片不缓存)设置 expires 为 0 或-1 设置 Cache-Control 为 no-cache、Pragma 为 no-cache。控制浏览器缓存资源。即使不明确指定浏览器也会缓存

36、资源,这种缓存没有截至日期。当在地址栏重新输入地址时会用缓存,但是当刷新或重新开浏览器访问时会重新获得资源。如果明确指定缓存时间,浏览器缓存是,会有一个截至日期,在截至日期到期之前,当在地址栏重新输入地址或重新开浏览器访问时都会用缓存,而当刷新时会重新获得资源。1.5 请求重定向古老方法:response.setStatus(302);response.addHeader(“Location“,“URL“);快捷方式:response.sendRedirect(“URL“);在大部分情况下请求重定向和转发的效果是差不多的,这时候我们推荐使用转发,以减少对服务器的访问。而在某些情况下是需要使用转

37、发的,目的往往是为了改变浏览器地址栏里的地址(如登录成功后转到主页) ,和更改刷新操作(如加入商品到购物车后转到购物车页面的操作)1.6 注意事项 getOutputStream 和 getWriter 这两个方法互相排斥,调用了其中的任何一个方法后,就不能再调用另一方法。 Servlet 程序向 ServletOutputStream 或 PrintWriter 对象中写入的数据将被 Servlet 引擎从 response 里面获取,Servlet引擎将这些数据当作响应消息的正文,然后再与响应状态行和各响应头组合后输出到客户端。 Serlvet 的 service 方法结束后,Servle

38、t 引擎将检查 getWriter 或 getOutputStream 方法返回的输出流对象是否已经调用过 close 方法,如果没有, Servlet 引擎 tomcat 将调用 close 方法关闭该输出流对象。2. RequestRequest 代表请求对象,其中封装了对请求中具有请求行、请求头、实体内容的操作的方法。ServletRequest - 通用 request,提供一个 request 应该具有的最基本的方法。|-HttpServletRequest - ServletRequest 的孩子,针对 http 协议进行了进一步的增强。2.1 获取客户机信息getRequestU

39、RL 方法返回客户端发出请求完整 URLgetRequestURI 方法返回请求行中的资源名部分,在权限控制中常用getQueryString 方法返回请求行中的参数部分getRemoteAddr 方法返回发出请求的客户机的 IP 地址getMethod 得到客户机请求方式getContextPath 获得当前 web 应用虚拟目录名称,特别重要!,工程中所有的路径请不要写死,其中的 web应用名要以此方法去获得。2.2 获取请求头信息getHeader(name)方法 - String ,获取指定名称的请求头的值getHeaders(String name)方法 - Enumeration

40、,获取指定名称的请求头的值的集合,因为可能出现多个重名的请求头getHeaderNames 方法 - Enumeration ,获取所有请求头名称组成的集合getIntHeader(name)方法 - int ,获取 int 类型的请求头的值|getDateHeader(name)方法 - long(日期对应毫秒) ,获取一个日期型的请求头的值,返回的是一个 long 值,从1970 年 1 月 1 日 0 时开始的毫秒值*实验:通过 referer 信息防盗链String ref = request.getHeader(“Referer“);if (ref = null | ref = “

41、| !ref.startsWith(“http:/localhost“) response.sendRedirect(request.getContextPath() + “/homePage.html“); else this.getServletContext().getRequestDispatcher(“/WEB-INF/fengjie.html“).forward(request, response);2.3 获取请求参数getParameter(name) - String 通过 name 获得值getParameterValues(name)- String 通过 name 获得

42、多值 checkboxgetParameterNames - Enumeration 获得所有请求参数名称组成的枚举getParameterMap - Map 获取所有请求参数的组成的 Map 集合,注意,其中的键为 String,值为 String获取请求参数时乱码问题:浏览器发送的请求参数使用什么编码呢?当初浏览器打开网页时使用什么编码,发送就用什么编码。服务器端获取到发过来的请求参数默认使用 ISO8859-1 进行解码操作,中文一定有乱码问题对于 Post 方式提交的数据,可以设置 request.setCharacterEncoding(“gb2312“);来明确指定获取请求参数时使

43、用编码。但是此种方式只对 Post 方式提交有效。对于 Get 方式提交的数据,就只能手动解决乱码:String newName = new String(name.getBytes(“ISO8859-1“),“gb2312“);此种方法对 Post 方式同样有效。在 tomcat 的 server.xml 中可以配置 http 连接器的 URIEncoding 可以指定服务器在获取请求参数时默认使用的编码,从而一劳永逸的决绝获取请求参数时的乱码问题。也可以指定 useBodyEncodingForURI 参数,令request.setCharacterEncoding 也对 GET 方式的请

44、求起作用,但是这俩属性都不推荐使用,因为发布环境往往不允许修改此属性。2.4 利用请求域传递对象生命周期:在 service 方法调用之前由服务器创建,传入 service 方法。整个请求结束,request 生命结束。作用范围:整个请求链。作用:在整个请求链中共享数据,最常用的:在 Servlet 中处理好的数据要交给 Jsp 显示,此时参数就可以放置在Request 域中带过去。 setAttribute 方法 getAttribute 方法 removeAttribute 方法 getAttributeNames 方法2.5request 实现请求转发ServletContext 可以实

45、现请求转发,request 也可以。在 forward 之前输入到 response 缓冲区中的数据,如果已经被发送到了客户端,forward 将失败,抛出异常在 forward 之前输入到 response 缓冲区中的数据,但是还没有发送到客户端,forward 可以执行,但是缓冲区将被清空,之前的数据丢失。注意丢失的只是请求体中的内容,头内容仍然有效。在一个 Servlet 中进行多次 forward 也是不行的,因为第一次 forward 结束,response 已经被提交了,没有机会再forward 了。在最终输出数据的 Servlet 执行完成后,response 实体内容中的数据将会被设置为已提交的状态,再往里写数据也不会起作用。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com