欢迎来到天天文库
浏览记录
ID:48058604
大小:765.00 KB
页数:29页
时间:2019-05-06
《servlet中文乱码和回话跟踪.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二卷Web组件-1(Servlet)Servlet中文乱码和会话跟踪2回顾Servlet使用户可以在服务器上运行Java代码和生成动态内容HTTPServlet发送HTTP请求和接受HTTP响应Servlet生命周期由三种方法组成,即init()、service()和destroy()ServletAPI包含于两个包中,分别为javax.servlet和javax.servlet.httpServlet继承GenericServlet类或HttpServlet类。利用Eclipse平台开发Servlet3目标Serv
2、let中文乱码定义会话跟踪创建会话标识会话跟踪技术中文乱码在Servlet中,经常会有这样一行代码request.setCharacterEncoding(“GBK”);这行代码的作用就是避免Servlet响应页面中出现中文乱码的问题。为什么会产生乱码?不同的组件有自己默认的字符编码集。当编码和解码的字符集不一致,就容易产生乱码问题。中文IE默认的编码格式是“GB2312”Tomcat默认的编码格式“iso-8859-1”weblogic默认的编码格式“UTF-8”JAVA源文件编译为class文件时的字符集,默认为操
3、作系统的字符集,但在IDE中可以改变。中文乱码解决办法整个系统从开发到运行使用统一的字符编码集开发应用程序的IDE工具设置。开发所使用的容器的配置文件的设置。请求处理方式的设置响应处理方式的设置存取数据库时的设置最好选择以下其中一种进行统一Iso-8859-1GBK(GB2312)UTF-8(支持所有语言)中文乱码解决办法IDE开发环境(MyEclipse)中,设置字符集中文乱码解决办法开发中所使用容器的配置文件的设置,例如修改weblogic容器中的weblogic.xml配置文件,在
4、部分加入:compilerSupportsEncodingtrueencodingGBK中文乱码解决办法响应处理方式中的设置在Servlet中加入JSP中加入
5、:中文乱码解决办法请求处理方式中的设置对于POST请求:request.setCharacterEncoding(“GBK”)对于GET请求:Stringinfo=request.getParameter("information");Stringnewinfo=newString(info.getBytes("utf-8"),"GBK");中文乱码解决办法存取数据库时的设置11有必要保持同一客户的会话(会话跟踪)会话跟踪保持客户端状态Internet协议两种类型:①有状态:Telnet、FTP;②无状态:Http(服
6、务器一旦响应完客户的请求之后,断开其之间网络连接,该客户下次请求将重新建立网络连接,服务器判断是否为同一个客户发出请求)12会话跟踪请求1请求2请求n…….服务器将唯一的会话ID分配给客户端以跟踪用户13会话如何工作beer网上交易平台客户端AServletA请求‘Darkbeer’单价?请求1线程AHttpSessionASetAttribute()线程发现与客户A的会话,把他的选择Darkbeer作为一个属性保存在HttpSessionA会话中响应’15’响应’15’请求‘Expensive’线程B请求2线程找到该
7、会话,把‘Expensive’作为一个属性保存会话中响应’15off8’响应’15off8’客户端B线程C请求‘Polobeer‘单价?请求3HttpSessionBSetAttribute()线程为客户B开始一个新会话,并保存’Polobeer‘响应’12’响应’12’发现:容器会为每一个客户端维护一个单独的HttpSession对象ServletA14问题容器怎么知道客户是谁?因为Http协议无状态,对同一客户所发出的每次请求对容器而言都是一个新的客户。答案客户需要一个唯一的会话ID即:对客户的第一次请求,容器会生
8、成一个唯一的会话ID,并通过响应把它返回给客户;客户再在以后的每一个请求中发回这个会话ID,容器看到ID后,就会找匹配的会话,并把这个会话与请求关联。15会话跟踪请求1’Darkbeer‘请求2‘Blackbeer’ID#42…….Hi,Server,这是我的第一个请求,参数是Darkbeer,我们可以开始一个会话吗?好,但是我很
此文档下载收益归作者所有