资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
北 京 林 业 大 学Java 高级应用 实验常见问题及解决课程名称: Java 高级应用技术 任课教师: 田萱 实验题目: 基于 Servlet 的动态 Web 网站的开发和运行 实验环境:Eclipse 3.5 For Java EE, Tomcat6.0, JRE 6.0,Java EE 5 目录目录 .1致谢: .1问题 1:导入 ServletTest.war 等包时项目左侧出现一系列红叉叉错误 .2问题 2:启动 Eclipse 时,弹出“JVM terminated Exit code=-1”等提示的窗口 .2问题 3:用 forward 函数实现页面跳转时出现乱码页面 .3问题 4:无法获取提交表单上传文件的文件名和文件内容 .3问题 5:通过 MultipartRequest 对象读取表单元素顺序混乱 .4问题 6:通过 MultipartRequest 对象不能获取 radio 或 checkbox 表单元素 .4问题 7:cookie 内容为中文的情况下添加和读取 cookie 出现错误 .4问题 8:读取客户端 cookie 时出现 NonePointerException 错误 .5问题 9:通过 MultipartRequest 对象读取上传的较大文件时出现 IOException 错误 .5问题 10:Eclipse 中启动 Tomcat 服务时出现 “8080 等端口号已被占用” 的错误提示 .5问题 11:浏览器中运行 http:/localhost:2008/ServletTest/项目出错 .6致谢:感谢以下同学发现问题并提供了解决问题的办法。问题 2计算机 07-3 胡伟松问题 6计算机 07-4 张晓武问题 7计算机 07-3 刘彦强问题 3,8,9计算机 07-3 宋天已问题 1:导入 ServletTest.war 等包时项目左侧出现一系列红叉叉错误原因:导入的项目构建路径中缺乏 Tomcat 运行库。解决办法:英文:选中项目右键 Build pathConfigure Build Path选择 library 标签点按“Add Library”按钮选择“Server Runtime”选择“Tomcat7.0”完成。中文:选中项目右键 构建路径 库Web 应用程序库选择“添加库”服务器运行时 Tomcat6.0完成。问题 2:启动 Eclipse 时,弹出“JVM terminated Exit code=-1”等提示的窗口原因:计算机内存空间不能够分配足够的空间给 heap(堆:Java 中管理内存的结构称作堆。 )解决办法:打开 eclipse 安装目录下的 eclipse.ini 配置文件,其内容如下,-startupplugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar-launcher.libraryplugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519-productorg.eclipse.epp.package.jee.product-launcher.XXMaxPermSize256M-showsplashorg.eclipse.platform-launcher.XXMaxPermSize256m-vmargs-Dosgi.requiredJavaVersion=1.5-Xms40m-Xmx512m把其中的“Xmx512m” 改成“Xmx256m”问题 3:用 forward 函数实现页面跳转时出现乱码页面原因:在跳转函数 forward 之前有 PrintWriter out = response.getWriter();语句,会使得转发的页面出现乱码解决办法:采用 response.sendRedirect(“.”); 代替掉以下跳转语句RequestDispatcher rs=request.getRequestDispatcher();rs.forward(request, response);或者 注意调整程序结构,不要 forward 语句和 response.getWriter()把放置在同一个语句块中。例如:If() PrintWriter out = response.getWriter(); Else RequestDispatcher rd=request.getRequestDispatcher(login.html);rd.forward(request, response); 问题 4:无法获取提交表单上传文件的文件名和文件内容原因:当提交表单中含有上传文件元素时,必须指定 form 的 ENCTYPE=multipart/form-data,这意味着是以二进制数据流的形式把表单信息上传到 Web 服务器。而 Servlet 文件中的 request 对象是很难分析出二进制数据流。解决办法:使用第三方类库 cos.jar 包中提供的专门处理二进制数据流的 MultpartRequest 对象。它基本可以取代request 对象,分析出上传表单的各个元素,特别是上传文件的基本信息。/指明把文件上传至服务器的 c:下MultipartRequest request1=new MultipartRequest(request, c:); /通过以下循环可以获得上传多个文件的文件名 sysname/实验中只有一个一个照片文件,所以可以通过 filelocation=c:+sysname;可以获得上传文件的具体位置和名称String filelocation=null;String sysname=null; Enumeration files = request1.getFileNames();while(files.hasMoreElements()String name = (String)files.nextElement();sysname = request1.getFilesystemName(name); /获得文件名称 filelocation=c:+sysname; /获得/ 文件在服务器上的存储地址问题 5:通过 MultipartRequest 对象读取表单元素顺序混乱原因:MultipartRequest request1=new MultipartRequest(request, c:);Enumeration paramNames = request1.getParameterNames();while(paramNames.hasMoreElements() .在上述代码中,MultipartRequest 对象分析表单传入的二进制数据流时,分析顺序不固定,针对表单元素名称为中文和英文的情况尤其是不同。这是第三方提供的插件不够标准造成的。解决方法:不再使用上面的循环方式,而是使用 request1.getParameterName()函数依次获得指定名称的表单元素;或者使用 Request 对象可以顺序读出表单元素,但对带有文件上传元素的表单难以处理;或者换用其它的第三方组件。问题 6:通过 MultipartRequest 对象不能获取 radio 或 checkbox表单元素原因:MultipartRequest request1=new MultipartRequest(request, c:);Enumeration paramNames = request1.getParameterNames();while(paramNames.hasMoreElements() .在上述代码中,像 radio 或者 checkbox 这种需要用户点选的表单元素,当元素缺失用户点选时(即为 null 的情况,其默认值也为空) ,使用 MultipartRequest 对象的 getParameterNames()方法就不能获取到这两个表单元素的名称和内容(null)。解决方法:需要通过 MultipartRequest 对象的 getParameter()函数对 radio 或者 checkbox 这种需要用户点选的表单元素进行单独获取和处理,例如代码如下:String sex=request1.getParameter(“sex”);nullandblank=JustifyAndFilter.isParameterNull(sex);/判断是否为空或if(nullandblank) *(缺失的处理) 进一步的问题是,即使 radio 或者 checkbox 已有选取项,但可能读出来的仍然是 null。原因在于表单中 radio 或者 checkbox 元素的名称被用中文标示,例如 name=“性别”。这导致 MultipartRequest 对象无法正确获取表单元素的值。因此建议尽量使用通用语言即英语作为传递数值的变量显然要比中文更加方便和安全。问题 7:cookie 内容为中文的情况下添加和读取 cookie 出现错误原因:出现 java.lang.IllegalArgumentException: Control character in cookie value, consider BASE64 encoding your value 的错误提示,表示不能把中文字符作为 cookie 内容添加到浏览器端。解决方法:为预防可能放入 cookie 的值为中文,在创建 cookie 或设置 cookie 内容时,需要进行编码,即把中文编码为 UTF-8。例如:创建 cookie, Cookie usernameCookie =
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号