java lang illegalargument_java true false

java lang illegalargument_java true false我们的JSP项目在上传文件时通常都需要获取目录在服务器上的绝对路径,request.getRealPath()方法显示已经过时,但是还是有替代方法的。HttpSessionsession=request.getSession(true);//获取session//Stringpath=request.getRealPath(“/data/userfile/p_w_picpath”)…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

我们的JSP项目在上传文件时通常都需要获取目录在服务器上的绝对路径,request.getRealPath()方法显示已经过时,但是还是有替代方法的。HttpSession session = request.getSession(true);  //获取session

//String path = request.getRealPath(“/data/userfile/p_w_picpath”);  //此方法已经过时

String path = session.getServletContext().getRealPath(“/data/userfile/p_w_picpath”);  //文件保存路径

在servlet或者struts中还可以这样写:this.getServletContext().getRealPath(“/data/userfile/p_w_picpath”);

this.getServlet().getServletContext().getRealPath(“/data/userfile/p_w_picpath”);

以下介绍摘录至:http://blog.sina.com.cn/s/blog_6dbf810d0100romt.html

相关介绍:

在目前最新的Java Servlet API 2.1版本中,不赞成使用request.getRealPath()这个方法,使用ServletContext.getRealPath(java.lang.String)代替它。

在Servlet 2.4文档中对ServletContext.getRealPath(java.lang.String)是这样描述的:

返回一个字符串,包含一个给定虚拟路径的真实路径,如果转换错误,则返回null。例如,虚拟路径“/index.html”不管在服务器文件系统上具有怎样的真实路径,使用“/index.html”总可以找到它。返回的真实路径使用了相近于servlet容器(servlet container)所在计算机或操作系统的格式,包含了适当的路径分隔符。如果servlet容器无法转换则将返回null.

但是,ServletContext.getRealPath()的返回值经常返回不同的路径。

例如:有2个文件

exper1.txt,位于 C:\Tomcat 6.0\webapps\ROOT,

exper2.txt,位于 C:\Tomcat 6.0\webapps,

在C:\Tomcat 6.0\webapps\ROOT写一个.jsp文件:

ServletContext context = getServletContext();

context.getRealPath(“exper1.txt”)结果为C:\Tomcat 6.0\webapps\ROOT\exper1.txt;

context.getRealPath(“exper2.txt”)结果为C:\Tomcat 6.0\webapps\ROOT\exper2.txt;

context.getRealPath(“exper3.txt”)结果仍为C:\Tomcat 6.0\webapps\ROOT\exper3.txt 但是exper3这个文件是不存在的。这也就说明了getRealPath()这个方法是存在一定的问题的。

application.getRealPath()的用法和ServletContext.getRealPath()基本相同,当把前面例子中的context改为application,得到的结果也是相同的,它也存在着相同的问题

2、request对象位于javax.servlet.http.HttpServletRequest包中,但在java API中找不到

网上资料显示在J2EE API或Tomcat API中可找到,暂无验证,有兴趣的朋友可以去试试

3、上述方法可返回项目的完整路径,包括盘符、项目名等。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/191946.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ❤️爆肝3万字,最硬核丨Mysql 知识体系、命令全集 【建议收藏 】❤️

    ❤️爆肝3万字,最硬核丨Mysql 知识体系、命令全集 【建议收藏 】❤️Mysql知识体系、命令全集

  • stm32H747_mpeg4是什么格式和mp4

    stm32H747_mpeg4是什么格式和mp41.H.264与MPEG的关联 在视频编解码技术定义方面有两大标准机构。一个是国际电信联盟(ITU)致力于电信应用,已经开发了用于低比特率视频电话的H.26x标准,其中包括H.261、H.262、H.263与H.264;另一个是国际标准化组织(ISO)主要针对消费类应用,已经针对运动图像压缩定义了MPEG标准。MPEG标准包括MPEG1、MPEG2与MPEG4。 以制订国际通讯标准为主的国际电信联盟ITU-T,在完成H.263(针对视频会议之用的串流视频标准)后,与IS.

  • Word编辑中的域代码详解

    Word编辑中的域代码详解编辑域的对话框关于域的快捷键:Ctrl+F9组合键——快速插入域定义符“{}”(注意:这个花括号不能用键盘输入)Shift+F9组合键——显示或者隐藏指定的域代码Alt+F9组合键——显示或者隐藏文档中所有域代码F9键——更新单个域上表中,选中每一个实例用鼠标右键单击,选“切换域代码”(或者直接按Shift+F9组合键),就可以看到域代码,再按Shift+F9组合键回到…

  • 基于流水线的CPU的设计「建议收藏」

    基于流水线的CPU的设计「建议收藏」1.我们知道,CPU是电脑的中央处理单元,CPU到底是怎么连续的执行指令的。我们以MIPS为例,探究一下。2.基础的知识我们需要知道,CPU执行一条指令时分为五个阶段的:(1)在内存取指令(2)根据指令读寄存器(3)利用寄存器中的数据ALU(4)访问内存(5)写寄存器。一般是这五个阶段,但是很多指令并不是说这五个阶段全部都在做事情。比如add,它只有四个阶段,其中不涉及到内存的访问。但是,又有…

  • pycharmdjango项目实战_python如何创建新项目

    pycharmdjango项目实战_python如何创建新项目创建项目我们创建django项目有两种方式,命令行方式和使用pycharm工具创建,本文就介绍常用的pycharm工具创建首先点击django,输入项目的名称,选择创建好的虚拟环境,最后点击cre

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号